1. What does it mean to be object oriented, anyway?
Information / implementation hiding.
The roles of objects in messages.
Types of messages.
2. Object orientation--who ordered that?
Where did object orientation come from?
O.J. Dahl and K. Nygaard.
Alan Kay, Adele Goldberg and others.
Jean Ichbiah and others.
0 Grady Booch, Ivar Jacobson and Jim Rumbaugh.
Object orientation in a social context.
The history of the mainstream.
To the barricades: the object-oriented revolutionaries.
Forward to the past: the object-oriented reactionaries.
Enter the evolutionists (stage middle).
Object orientation as an engineering discipline.
What's object orientation good for?
Analyzing users' requirements.
Managing software projects.
II. UML NOTATION.
3. The basic notation for classes, attributes and operations.
The class symbol.
Notation for attributes.
Notation for operations.
Public, protected and private features.
Class attributes and operations.
Abstract classes and features.
4. Class diagrams.
The generalization construct.
The association construct.
The basic UML notation for associations.
Associations depicted as classes.
Navigability of associations.
"Whole / part" associations.
5. Object-interaction diagrams.
The collaboration diagram.
Depicting a message.
Polymorphism in the collaboration diagram.
Use of self in messages.
The sequence diagram.
Asynchronous messages and concurrent execution.
Depicting an asynchronous message.
The callback mechanism.
Asynchronous messages with priority.
Depicting a broadcast (non-targeted) message.
6. State diagrams.
Basic state diagrams.
Concurrent states and synchronization.
Transient states from message-result arguments.
Continuously variable attributes.
7. Additional design diagrams.
Depicting system architecture.
Deployment diagrams for hardware components.
Deployment diagrams for software components.
Depicting the human interface.
The window-layout diagram.
The window-navigation diagram.
A brief digression: what's object-oriented about a GUI?
III. FUNDAMENTAL DESIGN PRINCIPLES.
8. Encapsulation and connascence.
Levels of encapsulation.
Design criteria governing interacting levels of encapsulation.
Varieties of connascence.
Connascence and encapsulation boundaries.
Connascence and maintainability.
Connascence abuses in object-oriented systems.
9. Domains, encumbrance and cohesion.
Domains of object classes.
The foundation domain.
The architectural domain.
The business domain.
The application domain.
The source of classes in each domain.
Definition of encumbrance.
The use of encumbrance.
The Law of Demeter.
Class cohesion: a class and its features.
10. State space and behavior.
State-space and behavior of a class.
The state-space of a subclass.
The behavior of a subclass.
The class invariant as a restriction on a state-space.
Preconditions and postconditions.
11. Principles of robust class hierarchies.
The principle of type conformance.
Subclasses as subtypes.
Conformance: the principles of contravariance and covariance.
An example of contravariance and covariance.
A graphic illustration of contravariance and covariance.
A summary of the requirements for type conformance.
The principle of closed behavior.
12. The perils of inheritance and polymorphism.
Abuses of inheritance.
Confusing class and instance.
Misapplying is a.
The danger of polymorphism.
Polymorphism of operations.
Polymorphism of variables.
Polymorphism in messages.
Polymorphism and genericity.
13. Organizing features.
A business example.
A graphics example.
Rings of operations.
14. Quality of a class interface.
State support in a class interface.
Behavior support in a class interface.
Operation cohesion in a class interface.
15. Development of an object-oriented component.
Appendix A Checklist for an object-oriented design walkthrough.
Appendix B The object-oriented design owner's manual.