Description
The Object-Oriented Thought Process, Fourth Edition
An introduction to object-oriented concepts for developers looking to master modern application practices
Object-oriented programming (OOP) is the foundation of modern programming languages, including C++, Java, C#, Visual Basic .NET, Ruby, and Objective-C. Objects also form the basis for many web technologies such as JavaScript, Python, and PHP.
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.
Key Features
- Clear, concise, accessible: the best way to succeed with objects in any language — from Java to C#, Objective-C to modern scripting languages
- Extensively revised chapters on portable and persistent data
- All-new chapter on web services and mobile development
- Integrates unit testing coverage into each chapter, showing why it’s so crucial to object-oriented design/development
- Supported by new downloadable materials for classroom instructors
New to this Edition
- New chapter on object-based languages compares and contrasts them to fully object-oriented languages. While the primary programming languages (Java. .Net, Objective-C, etc.) are fully object-oriented languages, there are many technologies used now which are object based, specifically non-typed scripting languages such as JavaScript.
- The chapter on portable data has been significantly revised to include XML, SOAP, JSON and similar technologies.
- The chapter on persistent data has been significantly revised to reflect the increasingly important aspect of moving data (objects) across networks and interfacing with relational databases.
- A chapter has been added to focus on web services and mobile apps. This chapter replaces the previous edition’s chapter on client/server applications and incorporates these topics in the discussion on web services and mobile apps.
- There’s a new focus on testing (specifically unit testing) incorporated into each chapter. Unit testing is an essential aspect of OO design because of decoupling (will cover topics such as dependency injection).
- Instructor’s Materials — a complete package of instructional materials is available via online download for instructors.
Table of Contents
- Introduction to Object-Oriented Concepts
- The Fundamental Concepts
- Objects and Legacy Systems
- Procedural Versus OO Programming
- Moving from Procedural to Object-Oriented Development
- Procedural Programming
- OO Programming
- What Exactly Is an Object?
- Object Data
- Object Behaviors
- What Exactly Is a Class?
- Creating Objects
- Attributes
- Methods
- Messages
- Using Class Diagrams as a Visual Tool
- Encapsulation and Data Hiding
- Interfaces
- Implementations
- A Real-World Example of the Interface/Implementation Paradigm
- A Model of the Interface/Implementation Paradigm
- Inheritance
- Superclasses and Subclasses
- Abstraction
- Is-a Relationships
- Polymorphism
- Composition
- Abstraction
- Has-a Relationships
- How to Think in Terms of Objects
- Knowing the Difference Between the Interface and the Implementation
- The Interface
- The Implementation
- An Interface/Implementation Example
- Using Abstract Thinking When Designing Interfaces
- Providing the Absolute Minimal User Interface Possible
- Determining the Users
- Object Behavior
- Environmental Constraints
- Identifying the Public Interfaces
- Identifying the Implementation
- Advanced Object-Oriented Concepts
- Constructors
- When Is a Constructor Called?
- What’s Inside a Constructor?
- The Default Constructor
- Using Multiple Constructors
- The Design of Constructors
- Error Handling
- Ignoring the Problem
- Checking for Problems and Aborting the Application
- Checking for Problems and Attempting to Recover
- Throwing an Exception
- The Importance of Scope
- Local Attributes
- Object Attributes
- Class Attributes
- Operator Overloading
- Multiple Inheritance
- Object Operations
- The Anatomy of a Class
- The Name of the Class
- Comments
- Attributes
- Constructors
- Accessors
- Public Interface Methods
- Private Implementation Methods
- Class Design Guidelines
- Modeling Real-World Systems
- Identifying the Public Interfaces
- The Minimum Public Interface
- Hiding the Implementation
- 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 Reuse in Mind
- Designing with Extensibility in Mind
- Making Names Descriptive
- Abstracting Out Nonportable Code
- Providing a Way to Copy and Compare Objects
- Keeping the Scope as Small as Possible
- A Class Should Be Responsible for Itself
- Designing with Maintainability in Mind
- Using Iteration in the Development Process
- Testing the Interface
- Using Object Persistence
- Serializing and Marshaling Objects
- Designing with Objects
- Design Guidelines
- Performing the Proper Analysis
- Developing a Statement of Work
- Gathering the Requirements
- Developing a Prototype of the User Interface
- Identifying the Classes
- 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
- Object Wrappers
- Structured Code
- Wrapping Structured Code
- Wrapping Nonportable Code
- Wrapping Existing Classes
- Mastering Inheritance and Composition
- Reusing Objects
- Inheritance
- Generalization and Specialization
- Design Decisions
- Composition
- Representing Composition with UML
- Why Encapsulation Is Fundamental to OO
- How Inheritance Weakens Encapsulation
- A Detailed Example of Polymorphism
- Object Responsibility
- Abstract Classes, Virtual Methods, and Protocols
- Frameworks and Reuse: Designing with Interfaces and Abstract Classes
- Code: To Reuse or Not to Reuse?
- What Is a Framework?
- What Is a Contract?
- Abstract Classes
- Interfaces
- Tying It All Together
- The Compiler Proof
- Making a Contract
- System Plug-in Points
- An E-Business Example
- An E-Business Problem
- The Non-Reuse Approach
- An E-Business Solution
- The UML Object Model
- Building Objects and Object-Oriented Design
- Composition Relationships
- Building in Phases
- Types of Composition
- Aggregations
- Associations
- Using Associations and Aggregations Together
- Avoiding Dependencies
- Cardinality
- Multiple Object Associations
- Optional Associations
- Tying It All Together: An Example
- Creating Object Models
- What Is UML?
- The Structure of a Class Diagram
- Attributes and Methods
- Attributes
- Methods
- Access Designations
- Inheritance
- Interfaces
- Composition
- Aggregations
- Associations
- Cardinality
- Objects and Portable Data: XML and JSON
- Portable Data
- The Extensible Markup Language (XML)
- XML Versus HTML
- XML and Object-Oriented Languages
- Sharing Data Between Two Companies
- Validating the Document with the Document Type Definition (DTD)
- Integrating the DTD into the XML Document
- Using Cascading Style Sheets
- JavaScript Object Notation (JSON)
- Persistent Objects: Serialization, Marshaling, and Relational Databases
- Persistent Objects Basics
- Saving the Object to a Flat File
- Serializing a File
- Implementation and Interface Revisited
- What About the Methods?
- Using XML in the Serialization Process
- Writing to a Relational Database
- Accessing a Relational Database
- Objects in Web Services, Mobile Apps, and Hybrids
- Evolution of Distributed Computing
- Object-Based Scripting Languages
- A JavaScript Validation Example
- Objects in a Web Page
- JavaScript Objects
- Web Page Controls
- Sound Players
- Movie Player
- Flash
- Distributed Objects and the Enterprise
- The Common Object Request Broker Architecture (CORBA)
- Web Services Definition
- Web Services Code
- Representational State Transfer (ReST)
- Objects and Client/Server Applications
- Client/Server Approaches
- Proprietary Approach
- Serialized Object Code
- Client Code
- Server Code
- Running the Proprietary Client/Server Example
- Nonproprietary Approach
- Object Definition Code
- Client Code
- Server Code
- Running the Nonproprietary Client/Server Example
- Design Patterns
- Why Design Patterns?
- Smalltalk’s Model/View/Controller
- Types of Design Patterns
- Creational Patterns
- Structural Patterns
- Behavioral Patterns
- Antipatterns
Review
“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
Author Biography
Matt Weisfeld is a college professor, software developer, and author based in Cleveland, Ohio. Prior to teaching college full time, he spent 20 years in the information technology industry as a software developer, entrepreneur, and adjunct professor. Weisfeld holds an MS in computer science and an MBA. Besides the first three editions of The Object-Oriented Thought Process, he has authored two other software development books and published many articles in magazines and journals, such as developer.com, Dr. Dobb’s Journal, The C/C++ Users Journal, Software Development Magazine, Java Report, and the international journal Project Management.
Additional information
| Weight | 0.545 kg |
|---|
Only logged in customers who have purchased this product may leave a review.
Related Products









Reviews
There are no reviews yet.