This means that the client is insulated not only from changes in an individual class, but also from the inclusion of a new type of account. If a transaction cannot be completed the user should be told why. A more specific message should be given. The correct encapsulation is that the reason should be asked of the account object. Conclusion Software should exhibit Meyer's external quality criteria of being correct, robust, extendible, reuseable and compatible.
Preconditions help in ensuring that the software is correct.
Encapsulation of preconditions into boolean functions helps in ensuring that the software is extendible and reuseable.