Designing Classes for Reuse
Reuse is reified in various forms across many dimensions. We can reuse code (by importing a class or module into our code base), code and design (by using a full-fledged framework), applications or services (e.g., by creating mashups combining different services into a unified portal), and so on. Software processes are also amenable for reuse, as are requirements and conceptual domain models. Moreover, we might want to reuse existent stuff, or we could also opt to build artifacts for reuse. The topic is really broad. Therefore, we limit ourselves here purely to aspects of reuse pertaining to OO systems, specifically focusing on APIs. In other words, we analyze how APIs can help or hinder efficient reuse.