What’s New in the Fifth Edition
1 Introduction to Object-Oriented Concepts
Procedural Versus OO Programming
Moving from Procedural to Object-Oriented Development
Using Class Diagrams as a Visual Tool
A Real-World Example of the Interface/Implementation Paradigm
A Model of the Interface/Implementation Paradigm
2 How to Think in Terms of Objects
Knowing the Difference Between the Interface and the Implementation
An Interface/Implementation Example
Using Abstract Thinking When Designing Interfaces
Providing the Absolute Minimal User Interface Possible
Identifying the Public Interfaces
Identifying the Implementation
3 More Object-Oriented Concepts
Checking for Problems and Aborting the Application
Checking for Problems and Attempting to Recover
Private Implementation Methods
Identifying the Public Interfaces
Designing Robust Constructors (and Perhaps Destructors)
Designing Error Handling into a Class
Documenting a Class and Using Comments
Building Objects with the Intent to Cooperate
Designing with Extensibility in Mind
Abstracting Out Nonportable Code
Providing a Way to Copy and Compare Objects
Keeping the Scope as Small as Possible
Designing with Maintainability in Mind
Using Iteration in the Development Process
Serializing and Marshaling Objects
Performing the Proper Analysis
Developing a Statement of Work
Determining the Responsibilities of Each Class
Determining How the Classes Collaborate with Each Other
Creating a Class Model to Describe the System
Prototyping the User Interface in Code
7 Mastering Inheritance and Composition
Generalization and Specialization
Representing Composition with UML
Why Encapsulation Is Fundamental to OO
How Inheritance Weakens Encapsulation
A Detailed Example of Polymorphism
Abstract Classes, Virtual Methods, and Protocols
8 Frameworks and Reuse: Designing with Interfaces and Abstract Classes
Code: To Reuse or Not to Reuse?
9 Building Objects and Object-Oriented Design
Using Associations and Aggregations Together
Tying It All Together: An Example
Smalltalk’s Model/View/Controller
11 Avoiding Dependencies and Highly Coupled Classes
Composition versus Inheritance and Dependency Injection
12 The SOLID Principles of Object-Oriented Design
The SOLID Principles of Object-Oriented Design
1) SRP: Single Responsibility Principle
3) LSP: Liskov Substitution Principle
4) IPS: Interface Segregation Principle