Preface
Organization of the Book
Online Resources
Acknowledgments
CHAPTER 1 Basic Concepts
1.1 The Nature of Objects
1.2 Unified Modeling Language
1.3 UML Notation Basics
1.4 Object Creation and Destruction
1.5 Associations and Links
1.5.1 Binary Associations and Links
1.5.2 Ordering and Sorting
1.5.3 Navigation and Referential Integrity
1.5.4 Ternary and Higher Order Associations
1.6 Aggregation and Composition
1.7 Servant Classes and Delegation
1.8 Inheritance
1.8.1 Inherited versus Servant Classes
1.8.2 Polymorphism and Object Substitution
1.9 Exercises
CHAPTER 2 Common Patterns in Static Design
2.1 Collection Managers
2.2 Containers
2.3 Self-Containing Classes, Hierarchies, and Networks
2.4 Relationship Loops
2.4.1 Relationship Fission
2.4.2 Inheritance of Relationship Loops
2.4.3 Double Loops
2.4.4 Three-Tier Relationship Loops
2.5 Binary Association Classes
2.5.1 Implementing Binary Association Classes
2.5.2 Recursive Association Class
2.6 The Handle-Body Pattern
2.7 Dynamic Schema
2.8 Shared Object Pools
2.9 Object Model for Extensible Markup Language
2.9.1 XML Basics
2.9.2 XML Object Models
2.9.3 The Strengths and Weaknesses of XML
2.10 Case Study: ATM System Software
2.10.1 Project Description
2.10.2 State Analysis and Design
2.11 Case Study: Shared Whiteboard
2.12 Case Study: Access Control Lists
2.13 Exercises
CHAPTER 3 Persistent Objects
3.1 Transactions and Database Management Systems
3.2 Object-Oriented Databases
3.2.1 Database Roots and Extents
3.2.2 Persistence-Enabled Objects
3.2.3 Destruction of Persistent Objects
3.2.4 Schema Evolution
3.3 Relational Databases
3.4 Mapping Persistent Objects to Tables
3.4.1 Classes and Binary Associations
3.4.2 Aggregation, Composition, and Servant Classes
3.4.3 Ternary and Higher Order Associations
3.4.4 Reducing Ternary Associations to Binary Ones
3.4.5 Degenerate Ternary Associations
3.4.6 Inheritance
3.4.7 Mapping Rules Summary
3.5 A Critical Comparison Between Relational and Object-Oriented Databases
3.5.1 Optimization of Relational Tables
3.5.2 Optimization of Persistent Objects
3.6 Case Study: ATM System Software
3.7 Case Study: Shared Whiteboard
3.8 Case Study: A Rental Business
3.8.1 Initial Analysis and Design
3.8.2 Full Object Design for Multiple Stores
3.8.3 Detailed Object Designs
3.9 Case Study: Access Control Lists
3.10 Exercises
CHAPTER 4 Advanced Topics in Object Modeling
4.1 Abstract Classes
4.2 Multiple Inheritance
4.3 Interfaces
4.4 Inner Classes
4.5 Collections
4.6 Packages
4.7 Components
4.8 Nodes
4.9 UML Notation Basics for Dynamic Modeling
4.10 Reverse Engineering and Irreducible Patterns
4.11 Exercises
CHAPTER 5 Dynamic Object Modeling Basics
5.1 Use Case Analyses
5.2 Sequence Diagrams
5.3 The Client/Server Model and Distributed Objects
5.4 Interface Definition and Client/Server Development
5.5 The CORBA Standard
5.6 Interface Definition Language
5.7 Statechart Diagrams
5.8 Case Study: ATM System Software
5.9 Case Study: Shared Whiteboard
5.10 Case Study: A Rental Business
5.11 Case Study: Access Control Lists
5.12 Exercises
CHAPTER 6 Common Interface Design Patterns
6.1 Object Wrappers
6.2 Object Adapters
6.3 Object Factories and Managers
6.4 Interfaces as Servant Classes
6.5 Servant Interfaces in Event Processing
6.5.1 Single Event Pushing and Observers
6.5.2 Callbacks from Server Objects
6.5.3 Subscription and Notification
6.5.4 Model-View-Controller
6.6 Relationship Loops with Interfaces
6.7 Inheritance Ladders
6.8 CORBA Objects
6.9 CORBA Client Stubs
6.10 Tactics in Designing Distributed Objects
6.11 Proxy and Surrogate Objects
6.12 Case Study: ATM System Software
6.13 Case Study: Shared Whiteboard
6.13.1 Message Port — An Infrastructure for a Collaboration Group
6.13.2 Sequence Diagrams for MessagePort
6.14 Case Study: Access Control Lists
6.15 Exercises
CHAPTER 7 Object-Oriented Architecture
7.1 Notations for Architecture Diagrams
7.2 Procedural Processing Systems
7.3 Client/Server Systems
7.3.1 “Thin Clients” and Object IDs
7.3.2 Web Applications Using the MVC Framework
7.4 Layered Systems
7.4.1 Layering with Servant Objects
7.5 Three-Tier and Multi-Tier Systems
7.5.1 Clustering and Serializing
7.6 Agents
7.7 Aggregations and Federations
7.8 Architectural Patterns in UML
7.9 Case Study: ATM System Software
7.10 Case Study: Shared Whiteboard
7.10.1 The Shared Whiteboard Aggregation
7.10.2 Image Exchange Formats and Policies
7.10.3 The Interface and Control Layers
7.10.4 Synchronization and Related Issues
7.10.5 Trace Table for Requirements
7.11 Case Study: A Rental Business
7.12 Case Study: The Enterprise JavaBeans Framework
7.12.1 Static Structures
7.12.2 Resource Management Strategies
7.12.3 Dynamic Behaviors of Entity Beans
7.13 Exercises
CHAPTER 8 Summaries and Notes
8.1 Chapter 1 Summaries and Notes
8.2 Chapter 2 Summaries and Notes
8.3 Chapter 3 Summaries and Notes
8.4 Chapter 4 Summaries and Notes
8.5 Chapter 5 Summaries and Notes
8.5.1 Notes on CORBA-COM Interoperability
8.6 Chapter 6 Summaries and Notes
8.7 Chapter 7 Summaries and Notes
8.8 Case Studies Summary
CHAAPTER 9 Answers to Exercises
9.1 Chapter 1 Exercise Answers
9.2 Chapter 2 Exercise Answers
9.3 Chapter 3 Exercise Answers
9.4 Chapter 4 Exercise Answers
9.5 Chapter 5 Exercise Answers
9.6 Chapter 6 Exercise Answers
9.7 Chapter 7 Exercise Answers
APPENDIX A Quick References for Object Designers
APPENDIX B Sample Code Reference List
APPENDIX C Features of Object-Oriented Languages
References
Index