Forword
Preface
Part I 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 Message
1.5.1 Message stuture
1.5.2 Message arguments
1.5.3 The roles of objects in message
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 Nygaard
2.1.3 Alan Kay,Adele Goldberg, and others
2.1.4 Edsger Dijkstra
2.1.5 Barbara Liskov
2.1.6 David Parnas
2.1.7 Jean Ichbiah and others
2.1.8 Bjarne Stroustrup
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 Enguneering Discipline
2.4 What's Object Orientation Good For?
2.4.1 Analyzing user'requireements
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 Exercise
2.7 Answers
PART II The Unified Modeling language
Chapter 3 Basic Expression of Classes,Attibutes,and Operations
3.1 The class
3.2 Attibutes
3.3 Operations
3.4 Overloaded Operations
3.5 Visibilitity of Attributes and Operations
3.6 Class Attibutes and Operations
3.7 Abstract Operations and Class
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 Interated message
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 Exercise
5.6 Answers
Chapter 6 State Dialgrams
6.1 Basic State Diagrams
6.2 Nested States
6.3 Concurrent States and Synchroniation
6.4 Ttansient States from Message-Result Arguments
6.5 Continuousl 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 artifaces
7.1.3 Deployment diagrams for software constructs
7.2 Drpicting the Human Interface
7.2.1 The windows-Layout diagram
7.2.2 The windows-navigation diagram
7.2.3 ABrief diagression:What' object oriented about a GUI?
7.3 Summary
7.4 Exercises
7.5 Answers
Part III Principle of Object-Orientend Design
Chapter 8 Encapsulation and Connascence
8.1 Encapsulation Structure
8.1.1 Levels of encapdulation
8.1.2 Design criteria governing interacting levles of encapsulation
8.2 connascence
8.2.1 Varieties of connascence
8.2.2 Contranascene
8.2.3 Connascence and encapsulation boundaries
8.2.4 Connascence and maintanability
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 architecture 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 user of encumbrance
9.2.3 The law of Demeter
9.3 Class Cohesion:A Class and its Festures
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 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 Postcondition
10.6 Summary
10.7 Exercises
10.8 Answers
Chapter 11 Type Conformance and Closed Behavior
11.1 Class versus Type
11.2 The Principe 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 rinciple 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 Confuseing class and instance
12.1.4 Misapplying is a 306
12.2 The Danger of Polymorphism
12.2.1 Polymorphism of operations
12.2.2 Polymorphism of variables
12.2.3 Polymorphism in message
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 Class
13.1.1 A business example
13.1.2 A graphics example
13.2 Rights of Operations
13.3 Summary
13.4 Exercises
13.5 Answers
Chapter 14 Class Cohesion and Support of States and Bheavior
14.1 States 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.6 Answers
Chapter 15 Designing a software Component
15.1 What Is a Component?
15.2 Similarties and Differences Between Components and Objects
15.3 Example of a Component
15.4 Internal Disign of a Component
15.5 Lightweight and Hesvyweight Components
15.6 Advabtages and Disadvantages of Using Component
15.7 Summary
15.8 Exercises
15.9 Answers
Appendix A: Checklist for Object-Oriented Design Walkthrough
Appendix B: The Object-Oriented Owner's Manuals
Appendix C: The Blitz Guide to Object-Oriented Terminology
Glossary
Bibiography
Index