| DESIGNING OBJECT ORIENTED software is difficult, but there are reoccurring patterns that have been documented [1]. These patterns specify how interacting classes and objects can combine to solve very general problems. It is up to the designer to recognize when a pattern can be employed and then to implement the domain specific classes and objects that follow the pattern, in order to serve the application functionality.
This book takes off from two design patterns mentioned in the literature, Iterator and Template Method. We devise sub-patterns that are specific for enumeration (constructing collections of objects and then making them available one at a time), and searching (ranging over an object space to find objects that satisfy certain criteria).
Readers will require some object-oriented experience. You should be comfortable with the notions of objects, classes, inheritance, interfaces, methods, and the like. No knowledge of design patterns is required.
We will present some of the classic search algorithms in a new setting. You need not be familiar with these already. The book does not give extensive mathematical analysis of the algorithms used. Hints are given when there are particular inefficiencies or when obvious improvements can be made. To maintain focus it was necessary that the examples lack detail and complexity. However, it is intended that readers will make practical use of the design patterns in real projects. |