So, I have read this introductory book about the Object Oriented Thought process and found it a very easy read. This is a book that I should have read when it came out ten years ago because it is a solid overview of why you need to think differently about programming and also how to do so.
The conceptual thoughts you need when going into OO programming is explained by going from the class level in the first chapters to design patterns in the last. In between you will learn about the collaboration of objects, the different relationships between them (cardinality), inheritance, and learn the differences between composition, aggregation and association.
The best parts are probably the chapters that also explain how the Unified Modeling Language came about from the people who are affectionately called the three amigos who organized their efforts to form the UML specification in the Object Management Group (OMG). The chapters show why drawings of collaborating objects (with drawings of class diagrams) are so much clearer to understand and comprehend then the earlier procedural ways of functional programming.
Although the book makes clear that objects need to be designed with clear interfaces for communication with other objects, I must say that the reasons for this, like the benefits of substitution, could have made more clear with more concrete examples; That is, when you have experienced that substituting a class with a better performing candidate is easy if you can keep the interface the same then you might expect to see a more concrete example of that then mentioning that a car has-a engine, and a car can also have another engine.
The author also introduces the concepts by using source code from different languages like Java and C# and VB.NET, I think this is a great plus because it shows that it does not matter what kind of tool or what language you pick for OO programming, as long as you use the right concepts to use the programming languages to their full potential.
Personally, I think some chapters are simply too broadly explained like the chapters about client-server programming with CORBA (Common Object Request Broker Architecture), but the author knows this and explains the book is about the conceptual thoughts, not too much about the details.
If you are new to object oriented programming, I would highly recommend this book, but experienced developers who are already familiar with the OO paradigm will not learn that much and would be better of with more advanced books. Either more indepth about design patterns, or more detailed about the UML.
Nevertheless, the Object-Oriented Thought Process from Matt Weisfeld is an easy to read, easy to understand overview, packed with usefull references to more indepth books and is a book that will introduce different developers into the Object Oriented programming world.
If you’ve read the book as well, let me know your thoughts