This glossary defines core terms used throughout the book.
A finite, explicit procedure that transforms inputs into outputs while meeting stated guarantees.
A description of how runtime or memory grows as input size grows (for example: O(1), O(log n), O(n), O(n log n), O(n^2)).
A condition that must hold for every valid object state of a class.
A precise behavioral agreement in code, usually expressed with preconditions (require), postconditions (ensure), and invariants.
The degree to which one module depends on details of another.
A structured representation of entities, relationships, and constraints in a problem domain.
When combining inherited items (such as invariants), each ancestor class contributes once even in multiple-inheritance graphs.
A design principle that hides internal representation and exposes stable behavior through clear interfaces.
A callable behavior defined on a class.
A mechanism where a class reuses and extends behavior or structure from one or more parent classes.
A property that must remain true across allowed state transitions.
A form of inheritance where a class has more than one immediate parent class.
ensure)A condition that must be true after successful feature execution.
require)A condition that must be true before feature execution is valid.
A rule where inherited contracts are collected transitively across parent classes.
A structural code change that preserves externally visible behavior while improving design qualities.
The ability of software to behave correctly under expected load and adverse conditions over time.
The behavior of a system as data volume, traffic, or operational complexity grows.
The set of candidate states or paths an algorithm may need to inspect.
How execution steps grow as input size grows.
A rule that defines which state changes are legal for an entity.