Conclusion
This paper has shown that business rule checking should be a fundamental part of any object's class implementation. With a few rare exceptions that were noted in this paper, business rules should be checked whenever an object changes state. Good object-oriented designs isolate state changes within property and collaboration accessors. A properly layered design approach to property and collaboration that isolates business rule checking and assignment procedure allows maximum flexibility for relaxing business rules and for extending and overriding them in specialization classes.