We can, however, design objects that incorporate other objects. Within reason, we would like to produce several reusable objects that will be available for subsequent software projects. Even though developing reusable objects can be quite difficult, there are many situations in which reusability should be a design objective. Our third major design objective is to maintain an acceptable separation between UI objects and non-UI objects and other modules. This objective must be considered time and time again throughout the design process.
Some companies make their living designing libraries.
Naturally, their primary objective is reusability. The good news is that we finish the project on time and everyone gets a bonus. For the new project, we need additional functionality. First, we retrieve the SelectionBox object from the earlier project. We would like to extend and generalize it to satisfy both the previous project and the new project.