"Written by a developer for developers who want to make the leap to object-oriented technologies as well as managers who simply want to understand what they are managing, the Object Oriented Thought Process provides a solution-oriented approach to object-oriented programming. Readers will learn to understand object-oriented design with inheritance or composition, object aggregation and association, and the difference between interfaces and implementations. Readers will also become more efficient and better thinkers in terms of object-oriented development." This revised edition focuses on interoperability across various technologies, primarily using XML as the communication mechanism. A more detailed focus is placed on how business objects operate over networks, including client/server architectures and web services.
I have seen a lot of bad reviews on this book, but I highly disagree.
The fact that this book is written to introduce people to the world of Objectville makes it really such a great book. This book isn't written for professional/intermediate programs that are looking to write better OO code using IoC or strong design patterns.
This book assumes that you have 0 knowledge in OO and takes you to above beginner knowledge and puts you on the road to read thoroughly a couple more concepts. I highly highly recommend this book for any **beginner** who is looking to have a good understanding in OOP and understand why the hell we use such a thing.
I was not a fan at all of this book. It's like one of the object-oriented programming books of the 1990s, telling you all about how great objects are then showing Java code riddled with statics and public mutator methods.
All the hallmarks are there: the implementation-derived interfaces, pointless hierarchies where we learn that Dogs are Canines are Mammals and that Squares are Rectangles are Shapes, and more.
The book has very little on what I would consider object-oriented thought. There is a superficial chapter on design patterns. Nothing useful on domain modeling. Nothing on the kinds of principles that were already evinced in Bertrand Meyer's writing. Nothing on message-passing, prototypical inheritance, design by contract or anything that doesn't conform to a Java 1.3 view of OOP. Nothing on capturing intent in designing objects.
It appears as if the author's perspective on OOP is that it's a useful way to wrap procedural code for use in modern systems, rather than being a system design process in its own right that happens to sometimes incorporate procedural code.
I would not recommend this as an introduction to modern Object-Oriented techniques: unfortunately I can't think of anything that does fill that gap.
I found this book to be useful when I started learning OOP. But after having pursued OOP diligently over the past few months, especially with Ruby, this book teaches things just WRONG!
I've learnt that OOP needs to be learnt by following one simple (well, not quite) concept - abstraction. It's the heart of OOP. Objects are an abstraction on Procedural code based on real life examples of abstraction. Classes are an abstraction on Objects. Not the other way 'round. This book really teaches Class Oriented Programming.
Worse yet, concepts are explained based on their implementations in the popular contemporary languages. That's wrong. The approach should be to teach the OO though process and then adapted to the implementations.
I can't recommend this book anymore. But what's a good alternative to start off with OOP? I think I'll just have create my own.
The title "The Object-Oriented Thought Process" undoubtedly matches with what the book actually delivers. This is a must-read book for anyone who not only wants to learn the definitions of object-orientation but also develop a thoughtful strategy towards OOP. The author has done a very good job by presenting the core concepts in a no-nonsense manner. Example codes are precise and clear. The only glitch, I must say, is that several topics and explanations are uselessly repeated.
الكتاب بيشرح ال Object Oriented Programming (OOP) and Object Design Principles يعيدا عن أي لغة محددة بس العيب الشديد فيه هو انوه ضحل جداا جداااا جدااا في ال Design وكمان عيب هو انوه مفيش Complete Real-World Project يطبق فيه كل اليالكاتب شرحوه وعشان تفهم قصدي بص هنا https://www.educative.io/courses/grok... او https://github.com/prasadgujar/low-le... بس ع العموم هو Intro كويسه بس برضوه مش هتعرف تعمل OO Design & Analysis ل problem من الي فوق دول و هيخليك تحتاج تشوف مصدر تاني عشان ت Design
I don't think I am the intended audience for this book. I've been using OOP for like 10 years and this book is more geared towards beginners so my review may be a little biased. It is hard for me to unknow what I already know.
Overall its not bad as an introduction to OOP but I think there are better books out there for that. I generally hate criticizing books because I realize the large amount of effort that goes into them. I also realize that explaining the thought process behind OOP is no easy task.
My criticisms revolve around 2 things. 1. The choice of examples could be better. Often I'm not sure that they accurately portray what the author is trying to show. Also it seems like all OOP book authors use the same couple examples. There's gotta be better examples out there. 2. The author's use of the word interface is confusing. This may just be because I'm already thinking in terms of JAVA style interfaces. The author would be better off using the term API to refer to the methods of class instead of it's interface. I feel like I was able to follow what he was saying, but I feel a beginner would be totally confused.
If those 2 changes were made I would totally give it 4 stars.
This book teaches OOP using Java as a model, so you get a lot of the typical Java best practices and general advice presented as "object-oriented programming." I was hoping for a book that was more about object-oriented design and the thought process behind designing applications, but instead it's just an intro to programming using object-oriented languages (Java, C#, and C++ circa the early 2000's). If you've ever used Ruby or read up on Smalltalk, then a lot of what this book talks about will just be confusing as it really has nothing to do with OO-specific problem domains and is more about how modern (at the time) software development works.
The few good spots in the book are the clear definitions of the terminology and some examples of design patterns at the end, which I admit were pretty decent, though there were only a small handful. This book might be useful for someone who has mostly been using imperative languages and wants to take a look at Java, but the code samples haven't aged well and there are far more options on the market than just C#, Java, and C++ these days, so it's hard to recommend this book.
I enjoyed reading this book. It covers the fundamentals of Object-Oriented programming using the Java programming language, and I would have greatly benefited from it had I read it 20 years ago. I appreciate the emphasis placed on the idea of "prefer composition over inheritance" and how to do so, while also pointing out the design considerations between these choices.
Where the book falls short for me is in the number of typos and formatting errors, especially for a fifth edition book; as well as how weak the coverage is in the last two chapters. It's as if both the author and the editors fell asleep at the wheel, which is unfortunate because the last two chapters had the potential to be the most exciting of them all. Despite its faults, I'm glad to have read it. I just wish it was good enough for five stars. Maybe the sixth edition? I won't hold my breath.
Great quick read - good over all Object-Oriented book. More concise version similar to Object Thinking by David West. I picked up the fifth edition, because it appears to have been pared down.
Definitely for someone who is still new to developing OOP, but is ready to understand why things are the done certain ways. Also good to help to improve the design process, like not getting too zealous with OOP constructs - applying some reasoning for using certain features. If you've already grokked the subject, this might seem too simplistic.
Coming from JavaScript background I had a little base around of classes and this books has helped me gain some concept around it. Overall they also tell you how to approach Object oriented design, if you're new to that, so it's okay for a beginner. I read the 5th Edition of the book which promise on being updated to modern perspective they do but only for the first chapter and I think they forgot to update the subsequent pages after that. There was a lot of repetition of text, and examples, which books do but they approach it quite gracefully.
TL;DR An exploration of what good design means in the context of OOP concepts. Lots of examples (in Java).
It fulfilled the purpose of introducing and explaining how to design for reusability and easy maintenance in the context of OOP - showed both good code and bad code. I was hoping for some less abstract examples but it did the job.
What I liked about this book is how clear it explains all the difficult topics about OOP. Each section of the book explains the subject clearly with simple examples without any complications. That said, this book gives you a starting point about OOP, and you should look for another book if you want to have deep knowledge about the subjects.
Verbose, I guess that native English could just skim through and grasp the diluted knowledge but for unseasoned foreigners it is simply not possible to skimming, so a lot of time and energy is wasted. If I could draw only one conclusion from this book, it would be OOP could be clearly and completely demonstrated in no more than 50 pages and the readers are easier with it.
This was largely a disappointment. I learned very little and the organization was terrible to begin with. There was a lot of repetition within the chapters, a very formulaic "tell them what you're going to tell them, tell them, then tell them what you told them" that I hate so very much.
So much fun for lightreading, didn't add a lot of new information. I actually found it weird that a lot of CSharp was used instead of fully Java as code example in the book. But still it refreshed a lot of information.
The author provided no clear definition for interface, implementation, polymorphism. The book gives a bunch of examples that contain a lot of confusion and hope that reader will draw definition from that mess. Highly not recommend for beginner.