In This Chapter
- Distinguishing classes and objects
- Understanding abstraction
- Applying encapsulation
- Examining associations
- Exploring aggregation
- Understanding composition
- Examining generalization
- Exploring polymorphism
- Measuring quality using cohesion and coupling
Object-oriented concepts have been around since the 1970s. A variety of programming languages, including C++, Smalltalk, Java, and Eiffel, implement object-oriented principles. Object-oriented modeling languages followed close behind, built on earlier modeling environments based on basic drawing tools and procedural modeling techniques like structured analysis. By the early 1990s formal object-oriented methods such as the Object Modeling Technique, Booch '93, and OOSE came into common use.
Unfortunately, many companies did not reap the real benefits of these languages and techniques because they did not understand what makes them work. Because object-oriented principles guided the design of these tools, understanding these principles has a direct impact on the application of the tools. Shortly after the start of the transition from procedural to object-oriented development, studies showed that most companies were seeing less than 20 percent improvement in development time. This hardly ...