Object-oriented programming embodies in software structures a number of powerful design strategies that are based on practical and proven software engineering techniques. By incorporating support for these strategies in software structures, object-oriented programming enables the manageable construction of more complex systems of software than was previously possible. The nature of these software structures has been shaped by decades of software
middle of document…
Some people learn more efficiently by understanding the overall concepts first before proceeding to more concrete details. Other people learn more efficiently by intermixing abstract concepts and concrete examples. Regardless of the preference for a breadth-first approach or a depth-first approach, there are necessarily some ideas that must be learned before others because the ideas build on each other and are not independent. In both styles, a single reading is usually not sufficient. Backtracking and revisiting earlier concepts often enriches understanding and allows the formation of deeper insights.
The overall structure of the material presented here is shown in the Figure 1.1. The design strategies are shown at the left. It is possible to read about these design strategies top-to-bottom and obtain a broad overview of object-oriented concepts and ideas. At any point it is also possible to