
Object Oriented Programming Glossary
A
Abstract Class
- A class that has no instances.
An abstract class is written with the expectation that its concrete
subclasses will add to its structure
and behavior, typically by implementing
its abstract operations.
Abstract Operation
- An operation that is declared but not implemented
by an abstract class. In C++, an abstract
operation is declared as a pure virtual
member function.
Abstraction
- The essential characteristics of an object that
distinguishes it from all other kinds of objects and thus provide crisply-defined
conceptual boundaries relative to the perspective of the viewer; the process
of focusing upon the essential characteristics of an object. Abstraction
is one of the fundamental elements of the object
model.
Access Control
- The mechanism for control of access to the
structure or behavior
of a class. Public items are
accessible by all; protected items are accessible
only by the subclasses, implementation,
and friends of the class containing the item; private
items are accessible only by the implementation and friends
of the class containing the item; implementation items are accessible only
by the implementation of the class containing the item.
Action
- An operation that, for all practical purposes,
takes zero time. An action may denote the invocation of a method,
the triggering of another event, or the starting or
stopping of an activity.
Active Object
- An object that encompasses its own thread
of control.
Activity
- An operation that takes some time to complete.
Actor
- An object that can operate upon other objects
but is never operated upon by other objects. In some contexts, the terms
active object and actor are interchangeable.
Agent
- An object that can both operate upon other objects
and be operated upon by other objects. An agent is usually created to do
some work on behalf of an actor or another agent.
Aggregate Object
- An object composed of one or more other objects,
each of which is consider a part of the aggregate object.
Algorithmic Decomposition
- The process of breaking a system into parts, each of which represents
some small step in a larger process. The application
of structured design methods leads to
an algorithmic decomposition, whose focus is upon the flow of control within
a system.
Architecture
- The logical and physical structure of a system,
forged by all the strategic and
tactical design decisions applied
during development.
Assertion
- The Boolean expression of some condition whose truth must be preserved.
Association
- A relationship denoting a semantic connection between two classes.
Attribute
- A part of an aggregate object.
B
Base Class
- The most generalized class in a class
structure. Most applications have many such root classes. Some languages
define a primitive base class, which serves as
the ultimate superclass of all classes.
Behavior
- How an object acts and reacts, in terms of its
state changes and message passing;
the outwardly visible and testable activity
of an object.
Blocking Object
- A passive object whose semantics are guaranteed
in the presence of multiple threads of control. Invoking an operation
of a blocking object blocks the client
for the duration of the operation.
C
Cardinality
- The number of instances that a class
may have; the number of instances that participate in a class relationship.
CASE (Computer Assisted Software Engineering) Tool
- A CASE tool is any program which provides a programmer with additional
means of designing and/or analyzing the structure of their program. Traditionally,
these are programs which provide a interactive graphical representation
of a programs object structure.
Class
- A set of objects that share a common structure
and a common behavior. The terms class and type are
usually (but not always) interchangeable; a class is a slightly different
concept that a type, in that it emphasizes the classifications of structure
and behavior.
Class Category
- A logical collection of classes, some of which
are visible to other class categories, and other
of which are hidden. The class in a class category collaborate to provide
a set of services.
Class Diagram
- Part of the notation of object-oriented
design, used to show the existence of classes
and their relationships in the logical design of a system. A class diagram
may represent all or part of the class structure
of a system.
Class Operation
- An operation, such as a constructor
or destructor, directed at a class
rather than an object.
Class Structure
- A graph whose vertices represent classes and whose
arcs represent relationships among these classes. The class structure of
a system is represented by a set of class diagrams.
Class Utility
- A collection of free subprograms or,
in C++, a class that only provides static members
and/or static member functions.
Class Variable
- Part of the state of a class.
Collectively, the class variable of a class constitute its structure.
A Class variable is shared by all instances of
the same class. In C++, a class variable is declared as a static member.
Client
- An object that uses the services of another object,
either by operation upon it or by referencing
its state.
Collaboration
- The process whereby several objects cooperate
to provide some high-level behavior.
Concrete Class
- A class whose implementation
is complete and thus may have instances.
Concurrency
- The property that distinguishes an active
object from one that is not active.
Concurrent Object
- An active object whose semantics are guaranteed
in the presence of multiple threads of control.
Constraint
- The expression of some semantic condition that must be preserved.
Constructor
- An operation that creates an object
and/or initializes its state.
Container Class
- A class whose instances
are collections of other objects. Container classes
may denote homogeneous collections (all of the objects in the collections
are of the same class) or heterogeneous collections (each of the objects
in the collections may be of a different class, although all must generally
share a common superclass). Container classes
are most often defined as parameterized
classes, with some parameter designating the class of the contained
objects.
CRC Cards
- Class/Responsibilities/Collaborators;
a simple tools for brainstorming about the key abstractions
and mechanisms in a system.
D
Data Dictionary
- A comprehensive repository enumerating all the classes
in a system.
Delegation
- The actor of one object
forwarding an operation to another object, to
be performed on behalf of the first object.
Destructor
- An operation that frees the state
of an object and/or destroys the object itself.
Device
- A piece of hardware that has no computational resources.
Dynamic Binding
- Binding denotes the association of a name
(such as a variable declaration) with a class; dynamic
binding is a binding in which the name/class association is not made until
the object designated by the name is created at execution
time.
E
Encapsulation
- The process of compartmentalizing the elements of an abstraction
that constitute its structure and behavior;
encapsulation serves to separate the contractual interface
of an abstraction and its implementation.
Event
- Some occurrence that may cause the state of a
system to change.
Exception
- An indication that some invariant has not
or cannot be satisfied. In C++, we throw an exception to abandon processing
and alert some other object of the problem, which
in turn may catch the exception and handle the problem.
F
Field
- A repository for part of the state of an object;
collectively, the fields of an object constitute its structure.
The terms field, instance variable, member
object, and slot are interchangeable.
Forward-Engineering
- The production of executable code from a logical or physical model.
Free Subprogram
- A procedure of function that serves as a nonprimitive operation
upon an object or objects of the same or different
classes. A free subprogram is any subprogram that
is not a method of an object.
Framework
- A collection of classes that provide a set of
services for a particular domain; a framework thus exports a number of
individual classes and mechanisms that clients can
use or adapt.
Friend
- A class or operation
whose implementation may reference the private
parts of another class, who alone can extend the offer of friendship.
Function
- An input/output mapping resulting from some object's
behavior.
Function Point
- In the context of a requirements analysis, a single, outwardly visible
and testable activity.
G
Generic Class
- A class that serves as a template for other classes,
in which the template may be parameterized
by other classes, objects, and/or operations. A generic
class must be instantiated (its parameters
filled in) before objects can be created. Generic classes are typically
used as container classes. The terms generic
class and parameterized class are interchangeable.
Generic Function
- An operation upon an object.
A generic function of a class may be redefined in
subclasses; thus, for a given object, it is implemented
through a set of methods declared in various classes
related via their inheritance hierarchy.
The terms generic function and virtual function
are usually interchangeable.
Guard
- A Boolean expression applied to an event; if true,
the expression permits the event to cause the state
of the system to change.
H
Hierarchy
- A ranking or ordering of abstractions. The
two most common hierarchies in a complex system include its class
structure (including "kind of" hierarchies) and its object
structure (including "part of" and collaboration
hierarchies); hierarchies may also be found in the module
and process architectures of a complex
system.
I
Identity
- The nature of an object that distinguishes it
form all other objects
Idiom
- An expression peculiar to a certain programming language or application
culture, representing a generally accepted convention for use of the language.
Implementation
- The inside view of a class, object,
or module, including the secrets of its behavior.
Information Hiding
- The process of hiding all the secrets of an object
that do not contribute to its essential characteristics; typically, the
structure of an object is hidden, as well as the
implementation of its methods.
Inheritance
- A relationship among classes, wherein one class
shares the structure or behavior
defined in one (single inheritance) or more (multiple inheritance) other
classes. Inheritance defines an "is-a" hierarchy
among classes in which a subclass inherits from
one or more generalized superclasses; a subclass
typically specializes its superclasses by augmenting or redefining existing
structure and behavior.
Instance
- Something you can do things to. An instance has state,
behavior, and identity.
The structure and behavior of similar instances
are defined in their common class. The terms instance
and object are interchangeable.
Instance Variable
- A repository for part of the state of an object.
Collectively, the instance variable of an object constitute its structures.
The terms field, instance variable, member
object, and slot are interchangeable.
Instantiation
- The process of filling in the template of a generic
or parameterized class to produce a
class from which one can create instances.
Interaction Diagram
- Part of the notation of object-oriented
design, used to show the execution of a scenario in the context of
an object diagram.
Interface
- The outside view of a class, object,
or module, which emphasizes its abstraction
while hiding its structure and the secrets of
its behavior.
Invariant
- The boolean expression of some conditions whose truth must be preserved.
Iterator
- An operation that permits the parts of an
object to be visited.
J
K
Key
- An attribute whose value uniquely identifies a single target object.
Key Abstraction
- A class or object that forms part of the vocabulary
of the problem domain.
L
Layer
- The collection of class categories or subsystems at the same level
of abstraction.
Level of Abstraction
- The relative ranking of abstractions in a class structure, object structure,
module architecture, or process architecture. In terms of its "part
of" hierarchy, a given abstraction is at a higher level of abstraction
than other if it builds upon the others; in terms of their "kind of"
hierarchy, high-level abstractions are generalized, and low-level abstractions
are specialized.
Link
- Between two objects, one instance of an association.
M
Mechanism
- A structure whereby objects collaborate to provide some behavior that
satisfies a requirement of the problem.
Member Function
- An operation upon an object, defined as part of the declaration of
a class; all member functions are operations, but not all operations are
member functions. The terms member function and method are usually interchangeable.
In some languages, a member function stands alone and may be redefined
in a subclass; in other languages, a member function may not be redefined,
but serves as part of the implementation of a generic function or virtual
function, both of which may be redefined in a subclass.
Member Object
- A repository for part of the state of an object; collectively, the
member objects of an object constitute its structure. The terms field,
instance variable, member object, a slot are interchangeable.
Message
- An operation that one object performs upon another. The terms message,
method, and operation are usually interchangeable.
Metaclass
- The class of a class; a class whose instances are themselves classes.
Method
- An operation upon an object, defined as part of the declaration of
a class; all methods are operations, but not all operations are methods,
The terms message, method and operation are usually interchangeable. In
some languages, a method stands alone and may be redefined in a subclass;
in other languages, an method may mot be redefined, but serves as part
of the implementation of a generic function or a virtual function, both
of which may be redefined in a subclass.
Mixin
- A class that embodies a single , focused behavior, used to augment
the behavior of some other class via inheritance; the behavior of a mixin
is usually orthogonal to the behavior of the classes with which it is combined.
Modularity
- The property of a system that has been decomposed into a set of cohesive
and loosely coupled modules.
Module
- A unit of code that serves as a building block for the physical structure
of a system; a program unit that contains declarations, expressed in the
vocabulary of a particular programming language, that form the physical
realization of some or all of the classes and objects in the logical design
of the system. A module typically has two parts: its interface and its
implementation.
Module Architecture
- A graph whose vertices represent modules and whose arcs represent relationships
among these modules. The module architecture of a system is represented
by a set of module diagrams.
Module Diagram
- Part of the notation of object-oriented design, used to show the allocation
of classes and objects to modules in the physical design of a system. A
module diagram may represent all or part of the module architecture of
a system.
Monomorphism
- A concept in type theory, according to which a name (such as a variable
declaration) may only denote objects of the same class.
N
O
Object
- Something you can do things to. An object has state, behavior, and
identity; the structure and behavior of similar objects are defined in
their common class. The terms instance and object are interchangeable.
Object Diagram
- Part of the notation of object-oriented design, used to show the existence
of objects and their relationships in the logical design of a system. An
object diagram may represent all or part of the object structure of system,
and primarily illustrates the semantics of mechanisms in the logical design.
A single object diagram represents a snapshot in time of an otherwise transitory
event of configurations of objects.
Object Model
- The collection of principles that form the foundation of object-oriented
design; a software engineering paradigm emphasizing the principles of abstraction,
encapsulation, modularity, hierarchy, typing, concurrency, and persistence.
Object Structure
- A graph whose vertices represent objects and whose arcs represent relationships
among those objects. The object structure of a system is represented by
a set of object diagrams.
Object-Based Programming
- A method of programming in which programs are organized as cooperative
collections of objects, each of which represents an instance of some type,
and whose types are all members of a hierarchy of types united via other
than inheritance relationships. In such programs, types are generally viewed
as static, whereas objects typically have a much more dynamic nature, somewhat
constrained by the existence of static binding and monomorphism.
Object-Oriented Analysis
- A method of analysis in which requirements are examined form the perspective
of the class and objects found in the vocabulary of the problem domain.
Object-Oriented Decomposition
- The process of breaking a system into parts, each of which represents
some class or object from the problem domain. The application of object-oriented
design methods leads to an object-oriented decomposition, in which we view
the world as a collection of objects that cooperate with one another to
achieve some desired functionality.
Object-Oriented Design
- A method of design encompassing the process of object-oriented decomposition
and a notation for depicting both logical and physical as well as static
and dynamic models of the system under design; specifically, this notation
includes class diagrams, object diagrams, module diagrams, and process
diagrams.
Object-Oriented Programming
- A method of implementation in which programs are organized as cooperative
collections of objects, each of which represents an instance of some class,
and whose classes are all members of a hierarchy of classes united via
inheritance relationships. In such programs,
classes are generally viewed as static, whereas objects typically have
a much more dynamic nature, which is encouraged by the existence of dynamic
binding and polymorphism.
Operation
- Some work that one object performs upon another in order to elicit
a reaction. All of the operations upon a specific object may be found in
free subprograms and member functions or methods, The terms message, method,
and operation are usually interchangeable.
P
Parameterized Class
- A class that serves a a template for other classes, in which the template
may be parameterized by other classes, objects, and/or operations. A parameterized
class must be instantiated (its parameters filled in) before instances
can be created. Parameterized classes are typically used as container classes;
the terms generic class and parameterized class are interchangeable.
Partition
- The class categories or subsystems that form a part of a given level
of abstraction.
Passive Object
- An object that does not encompass its own thread of control.
Persistence
- The property of an object by which its existence transcends time(i.e.,
the object continues to exist after its creator ceases to exists) and/or
space (i.e., the object's locations moves from the address space in which
it was created).
Polymorphism
- A concept in type theory, according to which a name (such as a variable
declaration) may denote objects of many different classes that are related
by some common superclass; thus, any object denoted by this name is able
to respond to some common set of operations in different ways.
Postcondition
- An invariant satisfied by an operation.
Precondition
- An invariant assumed by an operation.
Private
- A declaration that forms part of the interface of a class, object,
or module; what is declared as private is not visible to any other classes,
objects, or modules.
Process
- The activation of a single thread of control.
Process Architecture
- A graph whose vertices represent processors and devices and whose arcs
represent connections among these processors and devices. The process architecture
of a system is represented by a set of process diagrams.
Process Diagram
- Part of the notation of object-oriented design, used to show the allocation
of processes to processors in the physical design of a system. A process
diagram may represent all or part of the process architecture of a system.
Processor
- A piece of hardware that has computation resources.
Protected
- A declaration that forms part of the interface of a class, object,
or module, but that is not visible to any other classes, objects, or modules
except those that represent subclasses.
Protocol
- The ways in which an object may act and react, constituting the entire
static and dynamic outside view of the object; the protocol of an object
defines the envelope of the object's allowable behavior.
Public
- A declaration that forms part of the interface of a class, object,
or module, and that is visible to all other classes, objects, and modules
that have visibility to it.
Q
R
Reactive System
- An event-driven system; the behavior of a reactive system is not a
simple input/out mapping.
Real-Time System
- A system whose essential processes must meet certain critical time
deadlines. A hard-real-time system must be deterministic; missing a deadline
may lead to catastrophic results.
Responsibility
- Some behavior for which an object is held accountable; a responsibility
denotes the obligation of an object to provide a certain behavior.
Reverse-Engineering
- The production of a logical or physical model from executable code.
Role
- The purpose or capacity wherein one class or object participates in
a relationship with another; the role of an object denotes the selection
of a set of behaviors that are well-defined at a single point in time;
a role is the face an object presents to the world at a given moment.
Round-Trip Gestalt Design
- A style of design that emphasizes the incremental and iterative development
of a system, through the refinement of different yet consistent logical
and physical views of the system as a whole; the process of object-oriented
design is guided by the concepts of round-trip gestalt design; round-trip
gestalt design is a recognition of the fact that the big picture of a design
affects its details, and that the details often affect the big picture.
S
Scenario
- An outline of events that elicits some system behavior.
Selector
- An operation that accesses the state of an object but does not alter
that state.
Sequential Object
- A passive object whose semantics are guaranteed only in the presence
of a single thread of control.
Server
- An object that never operates upon other objects, but is only operated
upon by other objects; an object that provides certain services.
Service
- The behavior provided by a given part of a system.
Signature
- The complete profile of an operation's formal arguments and return
type.
Slot
- A repository for part of the state of an object; collectively, the
slots of an object constitute its structure. The terms field, instance
variable, member object, and slot are interchangeable.
Space Complexity
- The relative or absolute time in which some operation completes.
State
- The cumulative results of the behavior of an object; one of the possible
conditions in which an object may exist, characterized by definite quantities
that are distinct from other quantities; at any given point in time, the
state of an object encompasses all of the (usually static) properties of
the object plus the current (usually dynamic) values of each of these properties.
State Transition Diagram
- Part of the notation of object-oriented design, used to show the state
space of a given class, the events that cause a transition from one state
to another, and the actions that result from a state change.
State Space
- An enumeration of all the possible states of an object. The state space
of an object encompasses an indefinite yet finite number of possible (although
not always desirable not expected) states.
Static Binding
- Binding denotes the association of a name (such as a variable declaration)
with a class; static binding is a binding in which the name/class association
is made when the name is declared (at compile time) but before the creation
of the object that the name designates.
Strategic Design Decision
- A design decision that has sweeping architectural implications.
Strongly Typed
- A characteristic of a programming language, according to which all
expressions are guaranteed to be type-consistent.
Structure
- The concrete representation of the state of an object. An object does
not share its state with any other object, although all objects of the
same class do share the same representation of their state.
Structured Design
- A method of design encompassing the process of algorithmic decomposition.
Subclass
- A class that inherits from one of more classes (which are called its
immediate superclasses).
Subsystem
- A collection of modules, some of which are visible to other subsystems
and others of which are hidden.
Superclass
- The class from which another class inherits (which is called its immediate
subclass).
Synchronization
- The concurrency semantics of an operation. An operation may be simple
(only one thread of control is involved), synchronous (two processes rendezvous),
balking (one process may rendezvous with another only if the second process
is already waiting), timeout (one process may rendezvous with another,
but will wait or the second process only for a specified amount of time),
or asynchronous (the two processes operate independently).
T
Tactical Design Decision
- A design decision that has local architectural implications.
Thread of Control
- A single process. The start of a thread of control is the root from
which independent dynamic action within a system occurs; a given system
may have many simultaneous thread of control, some of which may dynamically
come into existence and then cease to exist. Systems executing across multiple
CPU's allow for truly concurrent threads of control, whereas systems running
on a single CPU can only achieve the illusion of concurrent threads of
control.
Time Complexity
- The relative or absolute space consumed by an object.
Transformational System
- A system whose behavior is an input/output mapping.
Transition
- The passing from one state to another state.
Type
- The definition of the domain of allowable values that an object may
possess and the set of operations that may be performed upon the object.
The terms class and type are usually (but not always) interchangeable;
a type is a slightly different concept than a class, in that it emphasizes
the importance of conformance to a common protocol.
Typing
- The enforcement of the class of an object, which prevents objects of
different types from being interchanged or, at the most, allow them to
be interchanged only in very restricted ways.
U
Use
- To reference the outside view of an abstraction.
V
Virtual Function
- An operation upon an object. A virtual function may be redefined by
subclasses; thus, for a given object, it is implemented through a set of
methods declared in various classes that are related via their inheritance
hierarchy. The terms generic function and virtual function are usually
interchangeable.
Visibility
- The ability of one abstraction to see another and thus reference resources
in its outside view. Abstractions are visible to one another only where
their scopes overlap. Export control may further restrict access to visible
abstractions.
W
X
Y
Z