Chapter 1: The Problem
Practical Object-Oriented Design is an invaluable resource for those seeking to build better software. It starts with the recognition that most software projects fail, and that object-orientation is an effective way to prevent such disasters. The chapter shows the need to plan proactively by implementing a design process that emphasizes clarity and structure in order to create any software system. This can be seen in a real example where a project for a mobile banking application was started without designers, architects, or development standards in place. This ended up causing problems, like functionality not being able to fit into the UI, a lack of scalability, and poor maintainability. Through insight and transparency, the team was able to re-organize their design process and create a successful product through the use of Object-Oriented Design (OOD).
Chapter 2: The Basics
In the second chapter, readers gain a better understanding of Object-Oriented Design(OOD) by learning its basics. This includes defining OOD as a way to recognize and apply objects, inheritance, interfaces, abstract classes, and composition in software development. Through a real example, readers can see how they can use OOD to create a program for a temperature conversion. The application would require the basic functions of Fahrenheit and Celsius, which are defined by objects, inheritance, interfaces, abstract classes, and composition. By utilizing OOD, the team was able to create a program that satisfied users and incorporated its features in a clear, organized way.
Chapter 3: Focusing on Objects
As the third chapter begins, readers are introduced to the concept of focusing on objects. This means that in order to create a clear, organized design, programmers need to be more aware of how objects interact and the implications of their manipulations. The chapter explains the primary functions of objects that make them useful, such as encapsulation, polymorphism, inheritance, and composition. A real example of this would be a software program used to generate reports on financial information. The goal would be to define the objects such as accounts, transactions, and reports, and how these objects can interact with each other. Doing so creates a clearly structured design with clear, organized relationships between objects.
Chapter 4: Finding Abstractions
The fourth chapter introduces readers to the concept of finding abstractions. This is an important concept, as abstractions provide a simplified view of complex systems. Readers are provided with the methods to identify abstractions, which include looking for similarities, identifying an object's responsibilities, and reorganizing object relationships. A real example of this technique can be seen in a software program used to simulate flights. Here, the designers worked to identify abstractions such as planes, airports, and flights. Once these abstractions were found, they were able to create a more intuitive and organized software program.
Chapter 5: Designing with Objects
The fifth chapter explains the process of designing with objects. This step is important, as it allows users to make sure their design works effectively and efficiently. This includes identifying objects and forming relationships between them, managing complexity, and revising the design over time. To help illustrate this process, readers can look at a real example where the design for a voicemail system was created. Here, designers worked to identify the necessary objects such as users, messages, and servers and how each interacted with each other in order to successfully create a design that worked.
Chapter 6: Looking Ahead
The last chapter concludes the book with the concept of looking ahead. This means that software developers need to actively review, improve, and document their design over time in order to ensure it still meets their objectives. To help demonstrate this, readers can look at a real example where a software engineering team redesigned a system for tracking customer orders. Here, the team was able to quickly and efficiently revise their design process and create a more intuitive and effective system.
In conclusion, Practical Object-Oriented Design is an invaluable resource for anyone looking to build better software. It explains the concept of object-oriented design and how it can be implemented in order to create software systems that are organized, maintainable, and scalable. Through utilizing the methods discussed in each of the six chapters, readers can use real-world examples to apply them in their own software projects, ensuring their success.