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