CSE2305/CSC2050 - Object-Oriented Software Engineering
Reference material
CSE2305/CSC2050
Glossary
- 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 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.
- 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¤ destruction 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/CSC2050 - Object-Oriented Software Engineering course.
Copyright © Damian Conway, 1998. All rights reserved.
Last updated: Tue Jul 6 11:32:37 1999