CSE2305
Glossary
- Abstract Base Class
-
A class that specifies only an interface¤,
not an implementation¤.
It is assumed the implementation will be provided in classes that inherit
from the absrtract base class. In C++, abstract base classes define only pure
virtual functions¤
in their public interface.
- Abstraction
- The theoretical removal of non-significant differences between objects
(for example: identity, state¤,
scope, etc) in order to classify them according to shared features. See also
"classification¤".
- Accessibility
- Whether a given member¤
of a class¤ can be referred
to from a certain point in the program. For example, private members¤
of a given class¤ are accessible
only by member¤ functions
and friend¤ functions
of the same class¤.
- Accessor Function
- A public member¤ function¤
which provides the means to modify or retrieve the value of one or more non-public
data members¤¤
of a class¤ (often a container
class¤¤).
- Aggregation
- The collecting together of objects or types to create more complex objects
or types.
- Ancestor class
- A class¤ from which
the class¤ under discussion
(directly or indirectly). See also: "parent class¤¤",
"child class¤¤",
"descendant class¤¤"
- Base class
- An ancestor class¤¤
of the class¤ under discussion.
- Behaviour
- The set of allowed actions which may be performed on objects of a specific
class¤. In object-oriented
languages this corresponds to the function members¤¤
specified for a class¤
(and accesible via instances¤
of that class¤).
- Child class
- A class¤ which inherits
the class¤ under discussion
inherits directly. See also: "parent class¤¤",
"ancestor class¤¤",
"descendant class¤¤".
- Class
- An object-oriented typing¤
construct which specifies the common state¤
(data members¤¤)
and behaviour¤ (function
members¤¤)
shared by all objects of the corresponding type.
- Classification
- Grouping objects or types based on their significant commonalities. Separating
objects or types based on their significant differences. See also "abstraction¤".
- Const member function
- A class¤ member¤
function¤ with
a
const
keyword after its parameter list. The keyword
indicates that the member¤
function¤ is
"safe" to call on constant objects. See also: "mutable"
- Constructor
- A special member¤ function¤
which is automatically called whenever an instance¤
of a class¤ is created.
- Container class
- A class¤ (or more commonly
a templated class¤) used
to store a collection of values in some useful data structure.
- Copy constructor
- A class¤ constructor¤
which takes a single argument which is a reference¤
to another object of the same class¤.
The copy constructor¤¤
is invoked whenever a class¤
object is to be copied (for example, when it is passed to or returned from
a function by copy).
- Data member
- A storage location (and associated reference¤)
within an object. Used to store object state¤.
- Decorator
- See "mixin¤"
- Derived class
- A descendant class¤¤
of the class¤ under discussion.
- Descendant class
- A class¤ which inherits
the class¤ under discussion
(directly or indirectly). See also: "parent class¤¤",
"ancestor class¤¤",
"child class¤¤".
- Destructor
- A special member¤ function¤
which is automatically called whenever an instance¤
of a class¤ ceases to exist.
- Dispatch
- The selection of which function to invoke in response to a specific function
call within a program.
- Dynamic dispatch
- A form of dispatch¤
where the selection of which function to call based on dynamic typing¤¤.
Calls to dynamically-dispatched functions cannot be "hard-coded" into
an executable by the compiler and must be resolved during execution. See also:
"virtual function¤".
- Dynamic typing
- The situation where the type of an object or expression cannot be fully
determined before the program containing it is executed, and must therefore
be resolved during execution. Compare with: "static typing¤¤".
- Early binding
- See "static typing¤¤"
- Encapsulation
- The division of a system into non-interacting components, connected by
pre-specified interfaces¤
and the enforcement of such divisions. The "hiding" of state¤
and/or behaviour¤ on
a "need-to-know" basis. In object-oriented languages the primary means
of encapsulation¤
is normally within a private section of a class¤.
- Exception
- In C++ an exception¤
is an object which is created in response to an unusual condition (typically
an error condition), and used to pass information back to some (higher) level
of the code, where the condition is handled.
- Friend
- A function which is not a member¤
of a class¤, but which
the class¤ has granted
full access rights. In other words, a non-class¤-member¤
which can nevertheless access the non-public members¤
of a specific class¤.
- Function member
- A function associated with a specific class¤.
Used to specify object behaviour¤.
- Generic
- Defined independently from a particular class¤.
Typically used when referring to class¤
or function templates. Also used to refer to pointer variables of type
void*
,
which can be used to store pointers of any type.
- Genericity
- A form of abstraction¤
in which functional (semantic) differences are ignored, so as to abstract
on structural (syntactic) similarities.
- Hierarchy
- The use of abstraction¤
to create increasing more general categories, producing a tree in which higher
nodes abstract lower nodes.
- Implementation
- The non-public "internals" of a class¤,
which determine how a class¤
provides the functionality specified by its interface¤.
- Initializer list
- As part of the specification of a class¤
constructor¤, a list
of explicit constructor¤
calls for the class¤'s
parents and data members¤¤.
- Instance
- An object of a given type. A specialization¤
of a given template.
- Interface
- The publicly assessible components of a class¤,
which determine what may be done with a class¤.
- Iterators
- Objects which act like pointers into a specific type of container class¤¤.
They are specifically designed to simplify the task of sequentially stepping
through each element of a container, and are widely used in the STL¤.
- Late binding
- See "dynamic typing¤¤"
- Leak
- To allocate dynamic memory during a program's execution and then fail to
deallocate it before losing access to it. Leaking causes a program to grow
in size as it executes, since the dynamic memory manager does not know that
it could "reuse" the (now unused) memory which has been allowed to
leak¤.
- Member
- A property of a class¤.
Typically either a data member¤¤
(state¤) or a function
member¤¤
(behaviour¤).
- Member function
- See "function member¤¤"
- Mixin
- A class¤ representing
a specific property or behaviour¤,
which can be added to existing classes¤
by means of multiple inheritance¤.
Mixin¤ classes¤
are typically named with adjectives (for example,
SelfLinking
,
Persistent
, Clonable
, etc.) denoting
the property they confer.
- Modularity
- The division of a system into "loosely-coupled" components, connected
by pre-specified interfaces¤.
See also "encapsulation¤"
- Multiple inheritance
- Where a class¤ is simulaneously
derived from two (or more) parent classes¤¤,
and inherits properties from each.
- Mutable
- A keyword which may be placed in front of a class¤
data member¤¤
declaration. The presence of the keyword indicates that the data member¤¤
may be "safely" changed within a const member¤
function¤¤.
- Object-orientation
- An approach to systems design and implementation¤
in which the problem is decomposed into interacting encapsulation¤
of state¤ (objects) with
specific associated behaviours¤
(methods).
- Operator overloading
- Adding new behaviour¤
to a standard C++ operator for operations involving objects of a user-defined
class¤.
- Overloaded function
- A set of functions which share the same name (but which have distinct signatures¤).
Alternatively, an individual function which belongs to such a set.
- Overloaded operator
- See "operator overloading¤"
- Parent class
- A class¤ from which
the class¤ under discussion
inherits directly. See also: "ancestor class¤¤",
"child class¤¤",
"descendant class¤¤".
- Persistence
- The property of objects and types in some languages that they continue
to exist (in some form) beyond the boundaries of the program execution in
which they are originally created. See also: "temporal persistence¤¤",
"spatial persistence¤¤".
- Polymorphism
- A property of class¤
hierarchies whereby the result of calling a specific virtual member¤
function¤ of
an object depends on the actual (run-time) type of the object, rather than
on the (compile-time) type of the pointer or reference¤
through which the call is initiated.
- Private inheritance
- A form of inheritance in which a child class¤¤
inherits the properties of its parent class¤¤(es)
in such a way that those properties become private in the in the derived class¤¤
(regardless of their accessibilities in the base class¤¤).
- Public inheritance
- A form of inheritance in which a child class¤¤
inherits the properties of its parent class¤¤(es)
in such a way that those properties retain their base-class¤
accessibilities in the derived class¤¤
as well.
- Reference
- A name by which an object or function may be referred to.
- STL
- The usual abbreviation for the C++ Standard Template Library¤.
- Signature
- The combination of the name of a function, the types and order of its parameters,
and whether or not it is a const member¤
function¤. The
signature¤ of a function
in C++ must be unique.
- Software Engineering
- A collection of theories, techniques, and tools which enable fallible humans
to design, construct and maintain large software products in a reliable and
cost effective manner.
- Spatial Persistence
- A form of persistence¤
in which objects and types are available outside the address space in which
they were originally created.
- Specialization
- ...of a template. A class¤
or function defined by providing an appropriate set of template arguments
to a template. For example, class¤
map<Face,Name>
is a specialization¤
of the STL¤ template class¤
map
.
- Standard Library
- A collection of standardized, general programming components for C++ offering
a high level of abstraction and portability. The library includes: string
types, a large variety of data structures (queues, lists, dynamic arrays,
maps, etc.), algorithms (sorting, searching, etc.), numeric classes, Input/Output
(I/O) and internationalisation support. The C++ Standard Library is a superset
of the Standard Template Library¤.
The C++ Standard Library is part of the ANSI/ISO C++ Standard.
- Standard Template Library
- A collection of generic¤
algorithms and data structures
provided by all standard-conforming C++ implementations¤.
- State
- The data values that a specific class¤
may store. The data values that a specific object currently stores. In object-oriented
languages this corresponds to the data members¤¤
specified for a class¤
(and present in instances¤
of that class¤).
- Static binding
- See "static typing¤¤"
- Static dispatch
- A form of dispatch¤
where the selection of which function to call based only on static typing¤¤.
Calls to statically-dispatched functions can be "hard-coded" into
an executable by the compiler.
- Static typing
- The situation where the type of an object or expression is fully determined
before the program containing it is executed. Compare with: "dynamic typing¤¤".
- Streaming
- The conversion of an object or type to or from a portable, storable representation
(typically ASCII text).
- Strong typing
- The strict enforcement of type rules with no exceptions¤.
Compare with: "weak typing¤¤".
- Temporal Persistence
- A form of persistence¤
in which objects and types are available after the end of the program execution
in which they were originally created.
- Typing
- The enforcement of class¤-based
distinctions.
-
- UML (Unified Modelling Language)
- A mainly graphical notation system for Object-Oriented¤
analysis and design. It is the unification of the methods of Booch, Rumbaugh
(OMT), and Jacobson.
-
- Utility function
- A (usually private) member¤
function of a class¤ which
implements some common functionality required by the class¤
public member¤ functions.
The use of utility functions¤
improves modularity¤
(and therefore maintainability) by eliminating repeated sequences of code.
To avoid loss of run-time performance, utility functions¤
are often declared
inline
.
- Virtual destructor
- A class¤ destructor
which has also been declared a virtual function¤.
Virtual destructors¤¤
are often required to ensure that polymorphic calls to
delete
(that it, through a base-class¤
pointer) invoke the correct (derived-class¤)
destructor¤ first.
- Virtual function
- A class¤ member¤
function¤ which
may be overridden in descendant classes¤¤.
The principle mechanism for polymorphism¤
in C++.
- Weak typing
- The strict enforcement of type rules but with well-defined exceptions¤
or an explicit type-violation mechanism. Compare with: "strong typing¤¤".
This material is part of the CSE2305
- Object-Oriented Software Engineering course.
Copyright © Jon McCormack, 2005. All rights reserved.
Last Modified:
July 11, 2005