内容简介
Part Ⅰ Introduction
Chapter 1 What Does It Mean to Be Object Oriented,Anyway?
1.1 Encapsulation
1.2 Information/Implementation Hiding
1.3 State Retention
1.4 Object Identity
1.5 Messages
1.5.1 Message structure
1.5.2 Message arguments
1.5.3 The roles of objects in messages
1.5.4 Types of message
1.6 Classes
1.7 Inheritance
1.8 Polymorphism
1.9 Genericity
1.10 Summary
1.11 Exercises
1.12 Answers
Chapter 2 A Brief History of Object Orientation
2.1 Where Did Object Orientation Come From?
2.1.1 Larry Constantine
2.1.2 O.-J.Dahl and K.Nygaard
2.1.3 Alan Kay,Adele Goldberg,and others
2.1.4 Edsger Dijkstra
2.1.8 Bjarne Stroustrup
2.1.7 Jean Ichbiah and others
2.1.5 Barbara Liskov
2.1.6 David Parnas
2.1.9 Bertrand Meyer
2.1.10 Grady Booch,Ivar Jacobson,and Jim Rumbaugh
2.2 Object Orientation Comes of Age
2.3 Object Orientation As an Engineering Discipline
2.4 What's Object Orientation Good For?
2.4.1 Analyzing users'requirements
2.4.2 Designing software
2.4.3 Constructing software
2.4.4 Maintaining software
2.4.5 Using software
2.4.6 Managing software projects
2.5 Summary
2.6 Exercises
2.7 Answers
Part Ⅱ The Unified Modeling Language
Chapter 3 Basic Expression of Classes,Attributes,andOperations
3.1 The Class
3.2 Attributes
3.3 Operations
3.4 Overloaded Operations
3.5 Visibility of Attributes and Operations
3.6 Class Attributes and Operations
3.7 Abstract Operations and Classes
3.8 The Utility
3.9 Parameterized Classes
3.10 Summary
3.11 Exercises
3.12 Answers
Chapter 4 Class Diagrams
4.1 The Generalization Construct
4.1.1 Single inheritance
4.1.2 Multiple inheritance
4.1.3 Subclass partitioning
4.1.4 Partitioning discriminators
4.2 The Association Construct
4.2.1 The basic UML notation for associations
4.2.2 Associations depicted as classes
4.2.3 Higher-order associations
4.2.4 Navigability of associations
4.3 Whole/Part Associations
4.3.1 Composition
4.3.2 Aggregation
4.4 Summary
4.5 Exercises
4.6 Answers
Chapter 5 Object-Interaction Diagrams
5.1 The Collaboration Diagram
5.1.1 Depicting a message
5.1.2 Polymorphism in the collaboration diagram
5.1.3 Iterated messages
5.1.4 Use of self in messages
5.2 The Sequence Diagram
5.3 Asynchronous Messages and Concurrent Execution
5.3.1 Depicting an asynchronous message
5.3.2 The callback mechanism
5.3.3 Asynchronous messages with priority
5.3.4 Depicting a broadcast(nontargeted)message
5.4 Summary
5.5 Exercises
5.6 Answers
Chapter 6 State Diagrams
6.1 Basic State Diagrams
6.2 Nested States
6.3 Concurrent States and Synchronization
6.4 Transient States from Message-Result Arguments
6.5 Continuously Variable Attributes
6.6 Summary
6.7 Exercises
6.8 Answers
Chapter 7 Architecture and Interface Diagrams
7.1 Depicting System Architecture
7.1.1 Packages
7.1.2 Deployment diagrams for hardware artifacts
7.1.3 Deployment diagrams for software constructs
7.2.1 The window-layout diagram
7.2 Depicting the Human Interface
7.2.2 The window-navigation diagram
7.2.3 A brief digression:What's object oriented about a GUI?
7.3 Summary
7.4 Exercises
7.5 Answers
Part Ⅲ The Principles of Object-Oriented Design
Chapter 8 Encapsulation and Connascence
8.1 Encapsulation Structure
8.1.1 Levels of encapsulation
8.1.2 Design criteria governing interacting levels of encapsulation
8.2.1 Varieties of connascence
8.2 Connascence
8.2.2 Contranascence
8.2.3 Connascence and encapsulation boundaries
8.2.4 Connascence and maintainability
8.2.5 Connascence abuses in object-oriented systems
8.2.6 The term connascence
8.3 Summary
8.4 Exercises
8.5 Answers
Chapter 9 Domains,Encumbrance,and Cohesion
9.1 Domains of Object Classes
9.1.1 The foundation domain
9.1.2 The architecture domain
9.1.3 The business domain
9.1.4 The application domain
9.1.5 The source of classes in each domain
9.2 Encumbrance
9.2.1 What is encumbrance?
9.2.2 The use of encumbrance
9.2.3 The Law of Demeter
9.3 Class Cohesion:A Class and Its Features
9.3.1 Mixed-instance cohesion
9.3.2 Mixed-domain cohesion
9.3.3 Mixed-role cohesion
9.4 Summary
9.5 Exercises
9.6 Answers
Chapter 10 State-Space and Behavior
10.1 State-Space and Behavior of a Class
10.2 The State-Space of a Subclass
10.3 The Behavior of a Subclass
10.4 The Class Invariant as a Restriction on a State-Space
10.5 Preconditions and Postconditions
10.6 Summary
10.7 Exercises
10.8 Answers
Chapter 11 Type Conformance and Closed Behavior
11.1 Class versus Type
11.2 The Principle of Type Conformance
11.2.1 The principles of contravariance and covariance
11.2.2 An example of contravariance and covariance
11.2.3 A graphic illustration of contravariance and covariance
11.2.4 A summary of the requirements for type conformance
11.3 The Principle of Closed Behavior
11.4 Summary
11.5 Exercises
11.6 Answers
Chapter 12 The Perils of Inheritance and Polymorphism
12.1 Abuses of Inheritance
12.1.1 Mistaken aggregates
12.1.2 Inverted hierarchy
12.1.3 Confusing class and instance
12.1.4 Misapplying is a
12.2 The Danger of Polymorphism
12.2.1 Polymorphism of operations
12.2.2 Polymorphism of variables
12.2.3 Polymorphism in messages
12.2.4 Polymorphism and genericity
12.3 Summary
12.4 Exercises
12.5 Answers
Chapter 13 Techniques for Organizing Operations
13.1 Mix-In Classes
13.1.1 A business example
13.1.2 Agraphics example
13.2 Rings of Operations
13.3 Summary
13.4 Exercises
13.5 Answers
Chapter 14 Class Cohesion and Support of States andBehavior
14.1 State Support in a Class Interface
14.2 Behavior Support in a Class Interface
14.3 Operation Cohesion in a Class Interface
14.4 Summary
14.5 Exercises
14.5 Answers
Chapter 15 Designing a Software Component
15.1 What Is a Component?
15.2 Similarities and Differences Between Components and Objects
15.3 Example of a Component
15.4 Internal Design of a Component
15.5 Lightweight and Heavyweight Components
15.6 Advantages and Disadvantages of Using Components
15.7 Summary
15.8 Exercises
15.9 Answers
Appendix A:Checklist for an Object-Oriented Design Walkthrough
Appendix B:The Object-Oriented Design Owner's Manual
Appendix C:The Blitz Guide to Object-Oriented Terminology
Glossary
Bibliography
Index