A criticism of the object-oriented style of programming is that the notion of class invariant seems to collapse in non-trivial client-supplier relationships: a supplier ("Dependent Delegate") called from within the execution of a routine, where the invariant is not required to hold, may call back into the originating object, which it then catches in an inconsistent state. This is one of the problems arising from the application of assertion-based semantics to a model of computation involving references and the resulting possibility of dynamic aliasing. This note suggests handling such cases by applying the basic non-object-oriented Hoare rule, instead of the version involving the invariant. It does not consider inheritance and dynamic binding.
展开▼