Glossary of Definitions
Contributors: Sam C. Pan
abstract data type (ADT):
an interface and its associated behavior, usually implemented as an class containing some data (the internal representation) and a set of methods which define the public interface
abstract factory:
factory for building related objects
abstraction (design):
way to manage complexity by emphasizing essential characteristics and suppressing implementation details
accessor functions:
provide an interface to various components in the class's state
Adaptive Communication Environment (ACE):
object-oriented framework that implements many core design patterns for concurrent communication software
adaptor:
translator adapts a server interface for a client
architecture:
families of related patterns and components
array:
data structure that contains indexed object(s) of the same type
automatic (lifetime):
lives only during function invocation, on the "run-time stack"
base class:
class which is inherited by other class(es)
behavioral patterns:
deal with dynamic itneractions among societies of classes and objects; i.e. iterator, memento, observer, strategy, command, template method patterns
bridge:
abstraction for binding one of many implementations
builder:
factory for building complex objects incrementally
class:
definition of a type of object
code segment:
read-only code that contains function definitions; objects live for the duration of program (can't be modified)
command:
encapsulates an operation as a first-class object
compatibility:
design "bridging" interfaces
components:
self-contained, ready-to-use ADTs
composite:
structure for building recursive aggregations
concurrent source control:
source control that allows parallel development
const methods:
methods that cannot modify its member data directly
constructor:
method used to create a new object
consumer/composition/aggregation:
a class is a consumer of another class when it makes use of the other class's services as defined in the interface; a Has-A relationship
creational patterns:
deal with initializing and configuring classes and objects; i.e. factory method, factory, singleton patterns
core dump:
an image of the memory; used for debugging; prevent leaks
data abstraction:
package a class abstraction so taht only the public interface is visible and the implementation details are hidden from clients
decomposition (design):
determine the individual components of the whole problem
decorator:
extends an object transparently
descendant/inheritance/specialization:
a class is a descendant of one or more classes when it is designed as an extension or specialization of these classes; a Is-A relationship
design patterns:
solutions to problems that arise when developing software within a particular context
destructor:
deallocates data allocated by the constructor
dynamic (lifetime):
lives between corresponding calls to operators new and delete
dynamic binding:
a design in which the definition the object type and its type-dependent behaviors deferred until run-time
exception handling:
disciplined way of dealing with erroneous run-time events
extensibility:
well-defined, abstract interfaces
facade:
simplifies the interface for a subsystem
factory:
assembles resources necessary to create an object
factory method:
method in a derived class creates associates
flyweight:
many fine-grained objects shared efficiently
frameworks:
semi-complete applications available for reuse by the developer; actual code
friends (declaration):
grants access to the class's private data and methods
function prototype:
describes the interface of the function; consists of the function return type, the name of the function, and the parameter list
global data segment:
global data; object locations are fixed, but their values can be modified; objects live for duration of program execution
Has-A relationship:
see consumer
header file:
file that contains declarations; interface
heap:
memory managed explicitly by application (new/delete); contains dynamically allocated objects; objects live until programmer destroys them with delete
helper functions:
"hidden" functions that assist in the class implementation
implementation:
actual coding for a class and its methods
implementation inheritance:
method of reusing an implementation to create a new class type
implementor functions:
perform the main class operations
information hiding (design):
details of design decisions that are subject to change should be hidden behind abstract interfaces
inheritance (single & multiple):
a derived class inherits operations and attributes from one or more base classes, with the ability to provide additional operations and/or attributes
inline functions:
functions that have the source expanded into the program at each invocation point, eliminating the overhead of a function call
interface:
communication between a class and its users
interface inheritance:
method of creating a subtype of an existing class for purposes of setting up dynamic binding
interpreter:
language interpreter for a small grammar
Is-A relationship:
see descendant
iterator:
aggregate elements are accessed sequentially
leak:
dynamically allocated objects that are never deleted
manager functions:
allow user-defined control over class creation, initialization, assignment, deallocation, and termination; i.e. constructors, destrictors, and operator
member class:
class which inherits other class(es)
memento:
snapshot captures and restores object states privately
modular system/modularity (design):
system structured into highly independent abstractions called modules
modules:
highly independent abstractions that can be used together to solve the big problem
object:
an instance of a class or any other type
observer:
dependents update automatically when a subject changes
open/closed principle:
classes should be open for extension, closed for modification
overloading:
when two or more functions or operators are given the same name, provided that the type signature for each function is unique
parametrized types:
types that serve to describe general container class data structures that have identical implementations, regardless of the elements they are composed of
pointer:
contains the address of an object
polymorphism:
support identical treatment of objects of different types
portability:
hide machine dependencies
prototype:
factory for cloning new instances from a prototype
proxy:
one object approximates another
reference variable:
an alternative name (alias) for an object; uses call-by-value syntax, but possesss call-by-value semantics
reusability:
low-coupling, high-cohesion
singleton:
factory for a single (sole) instance
stack (memory):
memory managed by compiler; used for each function call; contains function parameters and local objects; objects live until end of function
static (lifetime):
lives throughout the lifetime of the program; used for local, global, or class-specific objects
strategy:
abstraction for selecting one of many algorithms
stream:
a logical entity that can produce or consume data
structural patterns:
deal with decoupling interface and implementation of classes and objects; i.e. adaptor, bridge, composite, decorator, facade patterns
template method:
algorithm with some steps supplied by a derived class
this pointer:
identifies the pointer to the object for which the method is called
virtual base class:
allows class designers to specify that a base class will be shared among derived classes
virtual machine:
system of small, manageable units with an extended instruction set