- Abstract class
- Abstract data type (ADT)
- Abstract object
- Ancestor (of a class)
- Assignment attempt
- Asynchronous call
- Behavior class
- Class invariant
- Constrained genericity
- Container data structure
- Current object (or: current instance)
- Defensive programming
- Deferred class
- Deferred feature
- Descendant (of a class)
- Design by Contract
- Direct instance (of a class)
- Dynamic binding
- Dynamic typing
- Effective class
- Effective feature
- Event-driven computation
- Exporting a feature
- False alarm
- Feature renaming
- Garbage collection
- Generating class
- Generator (of an object)
- Generic class
- Generic derivation
- Heir (of a class)
- Information hiding
- Instance (of a class)
- Instance variable
- Interface (of a class)
- Loop invariant
- Loop variant
- Multiple inheritance
- Object identity
- Object-oriented analysis
- Object-oriented database
- Object-oriented design
- Object-oriented implementation
- Organized panic
- Parameterized class
- Parent (of a class)
- Persistent object
- Polymorphic data structure
- Proper ancestor (of a class)
- Proper descendant (of a class)
- Representation Independence
- Reusable software component
- Reversible development
- Root class
- Root object
- Runtime (noun, one word)
- Run time (noun, two words)
- Schema evolution
- Seamless development
- Selective export
- Short form (of a class)
- Signature (of a feature)
- Single inheritance
- Software component
- Specification (of a class)
- Specification (of a feature)
- Static binding
- Static typing
- Synchronous call
- Transient object
- Type checking, typing
- Unconstrained genericity
This glossary provides brief definitions of the principal terms of object technology, discussed in detail in the book Object-Oriented Software Construction, 2nd Edition and used in this website. Italics font in a definition marks a term or phrase, other than the ubiquitous "class", that is itself the subject of another definition.
See deferred class.
Abstract data type (ADT)
A set of mathematical elements specified by listing the functions applicable to all these elements and the formal properties of these functions.
An element of an abstract data type (ADT).
Ancestor (of a class)
The class itself, or one of its direct or indirect parents.
A formal condition describing the semantic properties of software elements, especially routines and loops. Used in expressing contracts. Assertions include in particular preconditions, postconditions, class invariants and loop invariants.
A call which lets its caller proceed before it completes. Antonym: synchronous call.
A class, usually deferred, describing a set of adaptable behaviors through effective routines relying on some components (usually deferred features) that may be redeclared to capture specific variants of the general behaviors.
An assertion which must be satisfied on creation of every instance of a class, and preserved by every exported routine of the class, so that it will be satisfied by all instances of the class whenever they are externally observable.
A group of related classes or, recursively, of related clusters.
A relation between types. A type conforms to another if it is derived from it by inheritance.
Container data structure
An object whose primary use is to provide access to a number of other objects. Examples include lists, queues, stacks, arrays.
The set of precise conditions that govern the relations between a supplier class and its clients. The contract for a class includes individual contracts for the exported routines of the class, represented by preconditions and postconditions, and the global class properties, represented by the class invariant. See also Design by Contract.
The policy allowing a feature redeclaration to change the signature so that a new result type will conform to the original but the original argument types conform to the new. See also: covariance, novariance.
Current object (or: current instance)
During the execution of an object-oriented software system, the target of the most recently started routine call.
A technique of fighting potential errors by making every module check for many possible consistency conditions, even if this causes redundancy of checks performed by clients and suppliers. Contradicts Design by Contract.
A feature which, in a certain class, has a specification but no implementation. May be declared as deferred in the class itself, or inherited as deferred and not effected in the class. Antonym: effective feature.
Descendant (of a class)
The class itself, or one of its direct or indirect heirs.
Design by Contract
Direct instance (of a class)
An object built according to the mold defined by the class.
The guarantee that every execution of an operation will select the correct version of the operation, based on the type of the operation's target.
The policy whereby applicability of operations to their target objects is only checked at run time, prior to executing each operation.
See information hiding.
A style of software construction where developers define the control structure by listing possible external events and the system's response to each of them, rather than by specifying a pre-ordained sequence of steps.
The inability of a routine to achieve its contract through one of its possible strategies. May result in particular from a failure of a routine called by the original routine. Will be treated as resumption, organized panic or false alarm.
Exporting a feature
Making the feature available to clients. Exports may be selective (to specified classes only) or general.
The ability of a software system to be changed easily in response to different choices of requirements, architecture, algorithms or data structures.
The attribution, by a class, of a new name to an inherited feature, not changing any other property. See also redeclaration.
One of the values making up an object.
A facility provided by the runtime to recycle the memory space used by objects that have become useless. Garbage collection is automatic, that is to say does not require any change to the text of the systems whose objects are being recycled.
The process of turning specialized program elements into general-purpose, reusable software components.
Same as generator.
Generator (of an object)
A class having formal parameters representing types. Such a class will yield a type only through generic derivation.
The process of providing a type for each formal generic parameter of a generic class, yielding a type as a result.
Heir (of a class)
A class that inherits from the given class. Antonym: parent.
See object identity.
The ability to prevent certain aspects of a class from being accessible to its clients, through an explicit exporting policy and through reliance on the short form as the primary vehicle for class documentation.
A mechanism whereby a class is defined in reference to others, adding all their features to its own.
Instance (of a class)
Smalltalk term for attribute.
Interface (of a class)
A control structure describing preordained sequencing of some actions but not defining the actions themselves. Iterators often apply to data structures, such as an iterator describing the traversal of a list or a tree.
An assertion which must be satisfied prior to the first execution of a loop, and preserved by every iteration, so that it will hold on loop termination.
An integer expression which must be non-negative prior to the first execution of a loop, and decreased by every iteration, so that it will garantee loop termination.
A class whose instances are classes themselves.
Smalltalk term for routine.
A unit of software decomposition. In the object-oriented approach, classes provide the basic form of module.
Antonym of separate.
The application of object-oriented concepts to the modeling of problems and systems from both software and non-software domains.
A repository of persistent objects, permitting their storage and retrieval on the basis of object-oriented concepts, and supporting database properties such as concurrent access, locking and transactions.
Along with resumption and false alarm, one of the three possible responses to an exception; abandons the execution of the current strategy, triggering an exception in the caller, after restoring the class invariant for the current object.
The ability to let a feature name denote two or more operations.
See generic class.
Parent (of a class)
A class from which the given class inherits. Antonym: heir.
An object that (through storage in a file or database or transmission across a network) survives executions of systems that create or manipulate it. Antonym: transient object.
Polymorphic data structure
The ability for an element of the software text to denote, at run time, objects of two or more possible types.
An assertion attached to a routine, which must be guaranteed by the routine's body on return from any call to the routine if the precondition was satisfied on entry. Part of the contract governing the routine.
A mechanism providing a single thread of computation. May be a physical device, such as the CPU of a computer, or a software device, such as a task or thread of an operating system.
Proper ancestor (of a class)
A direct or indirect parent of the class.
Proper descendant (of a class)
A direct or indirect heir of the class.
A feature declaration which, instead of introducing a new feature, adapts some properties (such as the signature, precondition, postcondition, implementation, deferred/effective status, but not the name) of a feature inherited from a parent. A redeclaration may be a redefinition or an effecting. See also feature renaming.
A redeclaration which is not an effecting, that is to say, changes some properties of a feature inherited as effective, or changes the specification of a feature inherited as deferred while leaving it deferred.
A run-time value that uniquely identifies an object.
See feature renaming.
The physical layout of data in RAM (or other storage), and the choices of what data is stored and what data is computed at run time, in order to represent the abstract data type in question.
The ability of a class to present an unchanging interface to its clients, and implement alternate representations of the underlying object without the clients needing to know or care about it. In the object-oriented method, dynamic binding and polymorphism are major contributors to making this possible.
The ability of a software development method to yield software elements that can be used in many different applications, and to support a software development process relying on pre-existing reusable software components.
Reusable software component
An element of software that can be used by many different applications.
A software development process that lets insights gained in later phases affect the results obtained in earlier phases. Normally part of a seamless development process.
The first object created in the execution of a system.
Runtime (noun, one word)
Any set of facilities supporting the execution of systems. See run time.
Run time (noun, two words)
Change to one or more classes of which some persistent instances exist.
A software development process which uses a uniform method and notation throughout all activities, such as problem modeling and analysis, design, implementation and maintenance. See also reversible development.
See exporting a feature.
Handled by a different processor. Antonym: non-separate.
Short form (of a class)
A form of class documentation generated from the class text, showing only interface properties of the class. The short form documents the contract attached to the class and the underlying abstract data type.
Signature (of a feature)
Specification (of a class)
The short form of the class.
Specification (of a feature)
The premature choice of operation variant, resulting in possibly wrong results and (in favorable cases) run-time system crash.
The ability to check, on the basis of the software text alone, that no execution of a system will ever try to apply to an object an operation that is not applicable to that object.
A call which forces the caller to wait until it completes. Antonym: asynchronous call.
A set of classes that can be assembled to produce an executable result.
The description of a set of objects equipped with certain operations. In the object-oriented approach every type is based on a class.
Type checking, typing
See loop variant.