Object-Oriented Thought Process, The - Matt Weisfeld

Object-Oriented Thought Process, The

(Autor)

Buch | Softcover
336 Seiten
2013 | 4th edition
Addison-Wesley Educational Publishers Inc (Verlag)
978-0-321-86127-6 (ISBN)
55,55 inkl. MwSt
zur Neuauflage
  • Titel erscheint in neuer Auflage
  • Artikel merken
Zu diesem Artikel existiert eine Nachauflage
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.






“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

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.

1 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






2 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






3 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






4 The Anatomy of a Class




The Name of the Class


Comments


Attributes


Constructors


Accessors


Public Interface Methods


Private Implementation Methods






5 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






6 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




7 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






8 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






9 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






10 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






11 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)






12 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






13 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)






14 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







15 Design Patterns


Why Design Patterns?


Smalltalk’s Model/View/Controller


Types of Design Patterns


Creational Patterns


Structural Patterns


Behavioral Patterns


Antipatterns

Erscheint lt. Verlag 21.3.2013
Reihe/Serie Developer's Library
Verlagsort New Jersey
Sprache englisch
Maße 175 x 225 mm
Gewicht 545 g
Themenwelt Informatik Software Entwicklung Objektorientierung
Mathematik / Informatik Informatik Theorie / Studium
ISBN-10 0-321-86127-2 / 0321861272
ISBN-13 978-0-321-86127-6 / 9780321861276
Zustand Neuware
Haben Sie eine Frage zum Produkt?
Mehr entdecken
aus dem Bereich
objektorientierte Entwicklung modularer Maschinen für die digitale …

von Thomas Schmertosch; Markus Krabbes; Christian Zinke-Wehlmann

Buch | Hardcover (2024)
Hanser (Verlag)
44,99
Entwicklung von GUIs für verschiedene Betriebssysteme

von Achim Lingott

Buch (2023)
Hanser, Carl (Verlag)
39,99
Principles and Practice Using C++

von Bjarne Stroustrup

Buch | Softcover (2024)
Addison Wesley (Verlag)
85,95