CSE2305 - Object-Oriented Software Engineering
glossary

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