General description
The book is 250 pages long and contains 12 chapters. In addition to textual information, the material is presented graphically (images, flowcharts, and diagrams), as well as code snippets. Although there are not a great many code snippets for a book of this type. At the end of each chapter there is a summary of the material covered. If we do not take into account that the book is a little dull, the level of difficulty is something between easy and medium.
Brief description
Let’s briefly list the contents of the chapters.
- Chapter 1. Introduction to object‑oriented concepts. The fundamental concepts are listed briefly. Classes, objects, methods, and the like are examined.
- Chapter 2. How to think object‑oriented. This is about when and where to use OOP, and it also discusses interfaces.
- Chapter 3. Other object‑oriented concepts. Here constructors, method and operator overloading, exception handling, and other things are examined.
- Chapter 4. Anatomy of a class. Here the structure of a class is examined in more detail. Much attention is paid to access modifiers.
- Chapter 5. Guide to class design and Chapter 6. Designing with objects. Both chapters contain advice on how to design classes so that they are testable, maintainable, and scalable.
- Chapter 7. Inheritance and composition. The title of this chapter says it all.
- Chapter 8. Frameworks and reuse: designing with interfaces and abstract classes. The title, however, does not fully reflect reality. It does not cover working within frameworks, say Spring or Laravel. It is more about UML diagrams.
- Chapter 9. Creating objects and object‑oriented design. The peculiarities of composition—aggregation and association—are examined here.
- Chapter 10. Design patterns. Three pattern groups are mentioned briefly.
- Chapter 11. Avoiding dependencies and tightly coupled classes and Chapter 12. SOLID principles of object‑oriented design. These chapters also speak for themselves. The benefits of dependency injection and SOLID are described.
Opinion
Although functional programming is more fashionable right now than OOP, many popular programming languages still support and promote the object‑oriented programming paradigm. This book is a good reference for those who want to get acquainted with OOP. Unfortunately, it did not give me many new insights, as I had already tried OOP in many languages before.