chapter 91 object-oriented design. chapter 92 topics zclass design zclass hierarchy design...
TRANSCRIPT
![Page 1: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/1.jpg)
Chapter 9 1
Chapter 9Chapter 9
Object-Oriented Object-Oriented DesignDesign
![Page 2: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/2.jpg)
Chapter 9 2
TopicsTopics
Class Design
Class Hierarchy Design
Designing Complex Logic
Design Representations
Design Patterns
![Page 3: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/3.jpg)
Chapter 9 3
Class Design: Class Design: PerspectivesPerspectives
specification
Behavioral
Structural
Information
![Page 4: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/4.jpg)
Chapter 9 4
Behavioral PerspectiveBehavioral Perspective
What objects initiate the action?What object collaborte in performing
the action?What objects are altered by the
performance of the action?What objects are interrogated during
the action?
![Page 5: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/5.jpg)
Chapter 9 5
Behavioral ClassesBehavioral Classes
actor (does something)
reactor (system events, external events, user events)
agent (messenger, server, finder, communicator)
transformer (formatter, filter)
![Page 6: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/6.jpg)
Chapter 9 6
Structual PerspectiveStructual Perspective
What objects are involved in the relationship?
What objects are necessary to sustain (implement, realize, maintain) the relationship?
What objects not in the relationship are aware of and exploit the relationship?
What objects not in the relationship are used by the related objects?
![Page 7: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/7.jpg)
Chapter 9 7
Structural ClassesStructural Classes
acquaintance (symmetric, asymmetric)
containment (collaborator, controller)
collection (peer, iterator, coordinator)
![Page 8: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/8.jpg)
Chapter 9 8
Information PerspectiveInformation Perspective
What objects are needed to represent the data or state?
What objects read the data or interrogate the state?
What objects write the data or update the state?
![Page 9: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/9.jpg)
Chapter 9 9
Information ClassesInformation Classes
•source/sink
•query
•result
•buffer
•cache
•synchronizer
Data State
•recorder
•scheduler
•maintainer
![Page 10: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/10.jpg)
Chapter 9 10
Evaluating a Class DesignEvaluating a Class DesignAbstraction : does the class capture a
useful abstractionResponsibilities : does the class bear a
reasonable set of responsbilitiesInterface : is the interface of the class clean
and simpleUsage : is the class design consistent with
how it is actually usedImplementtion : is there a reasonable
implementation for the class
![Page 11: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/11.jpg)
Chapter 9 11
Evaluating AbstractionEvaluating Abstraction
Identity : does the class have a simple and suggestive name?
Clarity : can the meaning of the class be captured in a brief, dictionary-style definition?
Uniformity : do the methods have a similar level of abstraction?
![Page 12: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/12.jpg)
Chapter 9 12
Evaluating Evaluating ResponsibilitiesResponsibilities
Clear : are the responsibilities of the class well-defined
Limited : do the responsibilities of the class exceed what is required for the abstraction captured by the class
Coherent : are all of the responsibilities of the class related to the same single abstraction
Complete : are there aspects of the abstraction that are missing from the class’s responsibilities
![Page 13: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/13.jpg)
Chapter 9 13
Evaluating an InterfaceEvaluating an Interface
Naming : do the names of the class’s methods convey the method’s intended effect
Symmetry : do related methods have similar terminology and usage
Flexibility : are the method’s usable in different contexts or usage patterns
Convenience : are appropriate defaults available for common-case use
![Page 14: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/14.jpg)
Chapter 9 14
Evaluating UsageEvaluating Usage
Can the class be reused outside of the immediate context for which it was developed? Is it sufficiently general-purpose?
Increasing the potential usage must be balanced against the possible loss in clearly capturing a single abstraction!
![Page 15: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/15.jpg)
Chapter 9 15
Evaluating the Evaluating the ImplementationImplementation
Is there at least one clearly possible implementation for the class?
Are there a variety of possible implementations that trade-off resource (time vs. space) or non-functional (reliability, complexity) factors?
![Page 16: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/16.jpg)
Chapter 9 16
Class Hierarchy DesignClass Hierarchy Design
Questions:
What are the dimensions of a class hierarchy?
How can a set of classes be factored into related groups that form the class hierarchy? How can this factoring be expressed?
Is there a process to use in forming a class hierarchy?
![Page 17: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/17.jpg)
Chapter 9 17
Class Hierarchy Class Hierarchy DimensionsDimensions
![Page 18: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/18.jpg)
Chapter 9 18
““Rationalizing” a Class Rationalizing” a Class HierarchyHierarchy
A class hierarchy is justified by a “rationalization” that reveals the categorization underlying the class hierarchy.
The word “rationalization” in this sense means to provide a “rational” (reasoned, principled) explanation for the hierarchy’s structure and organization.
Rationalizations aid in documenting and learning the hierarchy.
![Page 19: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/19.jpg)
Chapter 9 19
A Rationalized HierarchyA Rationalized Hierarchy
![Page 20: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/20.jpg)
Chapter 9 20
A Process to Design a A Process to Design a Class HierarchyClass Hierarchy
Iteratively perform these steps:
Analyze : study all of the classes with the same immediate parent class (or all classes at the beginning) looking for common and differentiating properties
Classify : divide into groups - all things in the same group have the same common properties, things in different groups have a discriminating property
Rationalize : create a base class for each group
![Page 21: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/21.jpg)
Chapter 9 21
An ExampleAn Example
![Page 22: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/22.jpg)
Chapter 9 22
First IterationFirst Iteration
![Page 23: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/23.jpg)
Chapter 9 23
Second IterationSecond Iteration
![Page 24: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/24.jpg)
Chapter 9 24
Third IterationThird Iteration
![Page 25: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/25.jpg)
Chapter 9 25
Fourth IterationFourth Iteration
![Page 26: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/26.jpg)
Chapter 9 26
Designing Complex LogicDesigning Complex Logic
Complex decision-making scenarios are difficult to:
state precisely
understand clearly
program correctly
design for extensibility
Section 9.4
![Page 27: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/27.jpg)
Chapter 9 27
Designing Complex LogicDesigning Complex Logic
The problems with complex logic can be overcome by using:
a graphical, semi-formal design notation (state transition diagram, finite state automata), and
a technique to produce an extensible object-oriented structure from the diagrams
![Page 28: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/28.jpg)
Chapter 9 28
Form of a State-Transition Form of a State-Transition DiagramDiagram
state1
state1
transitionconditionaction
annotation
![Page 29: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/29.jpg)
Chapter 9 29
Example: Step 1Example: Step 1
![Page 30: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/30.jpg)
Chapter 9 30
Example: Step 2Example: Step 2
![Page 31: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/31.jpg)
Chapter 9 31
Example: Step 3Example: Step 3
![Page 32: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/32.jpg)
Chapter 9 32
Example: Step 4Example: Step 4
![Page 33: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/33.jpg)
Chapter 9 33
Design RepresentationsDesign Representations
Graphically depict the essential elements of a class and the nature of its relationships with other classes.
Section 9.5
![Page 34: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/34.jpg)
Chapter 9 34
A ClassA Class
name
methods
Data/properties
![Page 35: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/35.jpg)
Chapter 9 35
Representing Inheritance
![Page 36: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/36.jpg)
Chapter 9 36
Representing AggregationRepresenting Aggregation
one-one
one-many
![Page 37: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/37.jpg)
Chapter 9 37
Other Relationships
Association (sharing)
Creation
![Page 38: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/38.jpg)
Chapter 9 38
AnnotationsAnnotations
![Page 39: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/39.jpg)
Chapter 9 39
A Complete ExampleA Complete Example
![Page 40: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/40.jpg)
Chapter 9 40
Design PatternsDesign Patterns
Reuse of design knowledge and experience.
A common practice in many engineering disciplines
Avoids costly rediscovery by novices
![Page 41: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/41.jpg)
Chapter 9 41
Design Patterns
Reuse of design knowledge and experience
Common in many engineering disciplines
Avoids “reinventing the wheel”Gamma, Helm, Johnson, Vlissides,
Design Patterns
Section 9.6
![Page 42: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/42.jpg)
Chapter 9 42
Elements of a Design Elements of a Design PatternPattern
name - simple, descriptive term
intent - brief description of aim
motivation - concrete example
applicability - where is it useful?
structure - “blueprint” diagram
participants - each class in pattern
![Page 43: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/43.jpg)
Chapter 9 43
Elements of a Design Elements of a Design Pattern (cont’d)Pattern (cont’d)
collaborations - relationships among participants
consequences - implications of use
implementation - general implementation
sample code - code for a particular application
known uses - applications where used
related patterns - to combine or substitute
![Page 44: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/44.jpg)
Chapter 9 44
Example Pattern: CompositeExample Pattern: Composite
Structural patternRepresent part-whole relationships
in tree hierarchyUniform treatment of individual
objects
![Page 45: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/45.jpg)
Chapter 9 45
Composite Pattern Example: Graphic
![Page 46: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/46.jpg)
Chapter 9 46
Composite: StructureComposite: Structure
![Page 47: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/47.jpg)
Chapter 9 47
Composite: Application
Part PartType GetType()int GetIdentifier()int GetTime()float GetQuality()int GetNumberOfRejections()SetRejectStatus(bool)bool GetRejectStatus()
CompoundPart AddPart(Part)int GetNumberOfParts()Part * Decompose()
![Page 48: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/48.jpg)
Chapter 9 48
Chain of Responsibility
Behavioral patternPass a request down a chain of
objects Handle a received message Handle a user input event
Request may stop when handled, or continue down to each object in chain
![Page 49: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/49.jpg)
Chapter 9 49
Chain of Responsibility: Structure
![Page 50: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/50.jpg)
Chapter 9 50
Chain of Responsibility: Application
MessageReceiver SetMessageHandler(MessageHandler *)Receive(Message *) MessageHandler * handler
MessageHandler SetSuccessor(MessageHandler *)Handle(Message * message) MessageHandler * successor
StartGameHandler Handle(Message *) Game game
if (msg.GetType() == Start) game.Start()successor->Handle(message)
PlayerPostitionHandler Handle(Message *) Game game
if (msg.GetType() == PlayerMove) { Player player = GetPlayer(message); . . . }successor->Handle(message)
![Page 51: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/51.jpg)
Chapter 9 51
Observer
Behavioral patternWhen changed, Subject notifies
Observers
![Page 52: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/52.jpg)
Chapter 9 52
Observer: Structure
![Page 53: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/53.jpg)
Chapter 9 53
Observer: Sequence Diagram
![Page 54: Chapter 91 Object-Oriented Design. Chapter 92 Topics zClass Design zClass Hierarchy Design zDesigning Complex Logic zDesign Representations zDesign Patterns](https://reader036.vdocuments.site/reader036/viewer/2022070413/5697bfdd1a28abf838cb1c80/html5/thumbnails/54.jpg)
Chapter 9 54
Observer: Application
Unit AddPart(Part *)GetNumberFinalParts()Part * GetFinalPart()SetTypesRequired(PartType *, int num)AddUnitObserver(UnitObserver *) NotifyObservers()
UnitObserver Update()Update(Unit *)
ProductRemovalObserver Update(Unit *)
Observer Update()
// called when unit completes a partfor all o in observers o.Update(this)