On the Abstraction of Objects, Components and Interfaces
There is a wide consensus that an object explicitly embodies an abstraction, but the exact meaning of this statement is not necessarily well understood. This paper argues that the abstraction embodied by an object (or a component) implementation is nothing else than its specification. This implies that abstrac-tion does not appear automatically, it must be carefully constructed and maintained. The paper goes on to show, with the support of an example, that defining contracts for an objects operations does not nec-essarily result in a complete specification for this object (for example, specification invariants are a dif-ferent concept from invariants associated to operation contracts). Finally, the paper shows via an example the difference between object specifications and interface specifications.