Addison-Wesley Professional wrote:The Object-Oriented Thought Process, Fourth Edition
An introduction to object-oriented concepts for developers looking to master modern application practices
It is of vital importance to learn the fundamental concepts of object orientation before starting to use object-oriented development environments. OOP promotes good design practices, code portability, and reuse–but it requires a shift in thinking to be fully understood. Programmers new to OOP should resist the temptation to jump directly into a particular programming language (such as Objective-C, VB .NET, C++, C# .NET, or Java) or a modeling language (such as UML), and instead first take the time to learn what author Matt Weisfeld calls “the object-oriented thought process.”
Written by a developer for developers who want to make the leap to object-oriented technologies, The Object-Oriented Thought Process provides a solutions-oriented approach to object-oriented programming. Readers will learn to understand the proper uses of inheritance and composition, the difference between aggregation and association, and the important distinction between interfaces and implementations.
While programming technologies have been changing and evolving over the years, object-oriented concepts remain a constant–no matter what the platform. This revised edition focuses on interoperability across programming technologies, whether you are using objects in traditional application design, in XML-based data transactions, in web page development, in mobile apps, or in any modern programming environment.
“Programmers who aim to create high quality software–as all programmers should–must learn the varied subtleties of the familiar yet not so familiar beasts called objects and classes. Doing so entails careful study of books such as Matt Weisfeld’s The Object-Oriented Thought Process.”
–Bill McCarty, author of Java Distributed Objects, and Object-Oriented Design in Java
Contents at a Glance
1 Introduction to Object-Oriented Concepts
2 How to Think in Terms of Objects
3 Advanced Object-Oriented Concepts
4 The Anatomy of a Class
5 Class Design Guidelines
6 Designing with Objects
7 Mastering Inheritance and Composition
8 Frameworks and Reuse: Designing with Interfaces and Abstract Classes
9 Building Objects and Object-Oriented Design
10 Creating Object Models
11 Objects and Portable Data: XML and JSON
12 Persistent Objects: Serialization, Marshaling, and Relational Databases
13 Objects in Web Services, Mobile Apps, and Hybrids
14 Objects and Client/Server Applications
15 Design Patterns
Book Preview (when available)
From the publisher
Chapter 3: Advanced Object-Oriented Concepts (HTML or PDF)
Excerpt from Chapter 7: Why Encapsulation Is Fundamental to Object-Oriented Programming (HTML)
If you were to ask me a book to understand the Object oriented concepts in a practical way- I will surely recommend "The Object Oriented Thought process".
These are some of the good things I found:
- the author tries to be independent of the programming language while explaining the concepts. You can see few Java examples to make things more clear, few C# examples and a mention of Objective C here and there.
- there has been use of UML class diagrams in a simple way and a dedicated chapter to understand UML class diagrams.
- in the first part of the book i.e upto around chapter 10 the code examples are fairly simple.
- some introduction to few advanced concepts in OOP like serialization, persistance, client-server, design patterns.
- the author tries to explain any new concepts right at the place where they were introduced.
- the author uses simple language to explain concepts.
These are some of the not so good things:
- the code examples in the application chapters are a bit overdose. They are a bit complicated for a newbie in Java, but the stress is not on the code but on the concepts.
- illustrations in few places were not required.
- code exmaples in XML chapters are not so clear and at few places the code is not indented correctly.
Bottom line is: Recommend this book to anyone who wants to get a good understanding of basic OOP concepts without much intervention of a programming language. Not much recommended to someone who's already been doing OOP development for quite sometime.
I give this book 8 out of 10 horseshoes ---
Disclosure: I received a copy of this book from the publisher in exchange for writing this review on behalf of CodeRanch.