Abstract Data Types
Representation independence
Classification of operations
Mutable vs. immutable types
Abstraction functions
-
Motivation: role in correctness argument
-
General properties of all abstraction functions
-
Common idioms
-
Specification fields
Rep invariants
-
Common idioms
-
Structural induction
-
As runtime assertions
Choice of representation
-
Performance issues
-
Code complexity issues
Benevolent side effects
Specifications of methods
-
Preconditions
-
Postconditions
-
Modifies clauses
-
Declarative specification
Representation exposure
-
What it is
-
Why problematic
-
How to avoid
Equality notions
-
Whether mutability is observable
-
Abstract and concrete objects
-
Abstract values and abstract objects
-
Java approach, Liskov approach