For real-time systems, also look for data acquisition and control devices. Describe the action in a complete sentence. Add attributes-content for methods. Add object connections-message paths for methods. Inheritance is useful in limited contexts.
Composition is useful in nearly every context.
Inheritance was all the rage in the early days of object-oriented development. Yet over time, designers have discovered that inheritance is effective only within certain contexts. In this chapter, you've worked with interfaces, common sets of method signatures that you define for use again and again in your application. For systems in which flexibility, extensibility, and pluggability are key issues, Java-style interfaces are a must. Indeed, the larger the system, and the longer the potential life span of a system, the more significant interface-centric scenario development becomes.