Presentation is loading. Please wait.

Presentation is loading. Please wait.

Collaborations and Hierarchies

Similar presentations


Presentation on theme: "Collaborations and Hierarchies"— Presentation transcript:

1 Collaborations and Hierarchies
CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object-Oriented Software, Prentice Hall, 1990. CS 4311

2 Outline Collaborations Hierarchies Identifying collaborations
Recording collaborations Hierarchies Hierarchy graphs Venn diagrams CS 4311

3 Motivation for Collaborations
Two ways to perform responsibilities ? Collaboration is Request from one object to another in order to fulfill a responsibility. CS 4311

4 Motivation (Cont.) Why identify collaborations?
Collaborations represents flow of control and information through the system, May identify misplaced responsibilities, and May identify missing responsibilities. In sum, shows dynamics of the system. CS 4311

5 Finding Collaborations
Look at each responsibility of each class: Is the class capable of fulfilling this responsibility by itself? If not, where can it get what it needs? Look at each class: What other classes needs what this class does or knows? CS 4311

6 Finding More Collaborations
Examine relationships between classes, especially: The “is-part-of” relationship, and The “has-knowledge-of” relationship. CS 4311

7 “Is-part-of” Relationship
May imply responsibilities for maintaining information. May fulfill responsibilities by delegating them. Two of relationships: Composite Aggregate (or container) Q: Which relationship is more likely to require collaborations? CS 4311

8 “Has-knowledge-of” Relationship
May know other classes that are not in part-of relationships (i.e., associations in UML). May imply responsibilities to know information, and thus collaborations. Q: Can you think of an example? CS 4311

9 Recording Collaborations
Write the name of the server (or helper) class on the CRC card of the client. Write the name directly to the right of the responsibility the collaboration fulfills. Client Class: Person Responsibilities Collaborations Knows name Knows address AddressBook Knows phone number PhoneBook Server (or helper) CS 4311

10 Collaboration Graph Graphical representation of collaborations
Arrow from client to a “contract” of the server, denoted by a semicircle Contract: group of responsibilities (more on this later) AddressBook 1 Person PhoneBook 2 CS 4311

11 Example: Mail-Order System
Class Responsibilities Collaborators Catalog Create a catalog Mail a catalog Order Process an order Track an order Product Ship a product Payment Supplier Customer CS 4311

12 Other Tools - UML UML interaction diagrams Message sequence diagram
Communication diagram (a.k.a. collaboration diagram) CS 4311

13 Message Sequence Diagram
object lifetime control message CS 4311

14 Message Sequence Diagram
Collaboration CS 4311

15 Communication Diagram
object link message CS 4311

16 Communication Diagram
Collaboration CS 4311

17 Outline Collaborations Hierarchies Hierarchy graph Venn diagram
CS 4311

18 Review on CRC Process Exploratory phase Analysis phase
Identify a preliminary list of classes, responsibilities and collaborations. Analysis phase Obtain a more global understanding of the design, e.g., by using tools such as: Hierarchy graphs, Venn diagrams, and Contracts. CS 4311

19 Hierarchy Graph A graphical representation of inheritance between related classes. A hierarchy graph is a general tree. The nodes are classes and the arcs represent inheritance. Ancestor nodes are superclasses of descendent nodes, which are subclasses. CS 4311

20 Example - Notation of [Wirfs-Brock-etal90]
PartTime FullTime Employee - Notation of [Wirfs-Brock-etal90] - Leaf nodes are often concrete classes. - Non-leaf nodes are often abstract classes. CS 4311

21 In UML … Employee {abstract} PartTime FullTime Employee (or ) CS 4311

22 Abstract Classes Classes that cannot be instantiated.
Designed only to be inherited from, thus allowing reuse and avoiding duplication. Used to factor common behaviors among classes. CS 4311

23 Finding Abstract Classes
At the exploratory stage, all identified classes are probably concrete and some may have been identified as abstract. But, do you have all your abstract classes? That is, have you used the power of abstraction (factoring behavior)? CS 4311

24 Another Example of Hierarchy Graph
Ordered Collection Indexable Collection Array Magnitude Matrix String Date CS 4311

25 Venn Diagram Another tool to understand inheritance relationships.
Views a class as a set of responsibilities. Thus, an intersection among classes: Denotes common responsibilities, and thus May indicates an abstract superclass. CS 4311

26 Example set of responsibilities PartTime Employee FullTime
set of objects PartTime FullTime Employee set of responsibilities PartTime FullTime Employee PartTime FullTime Employee CS 4311

27 Exercise Draw a Venn diagram for the following hierarchy graph.
Ordered Collection Indexable Collection Array Magnitude Matrix String Date CS 4311

28 In Sum, Hierarchies … Are for reviewing the inheritance relationships, and Use hierarchy graphs and Venn diagrams as a notation and an analysis tool CS 4311

29 Building Good Hierarchies
Model “is-a” relationships. Factor common responsibilities as high as possible. Make sure abstract classes do not inherit from concrete classes. Eliminate classes that do not add functionality. CS 4311

30 Example – Using Venn Diagram To Check Hierarchy
If B supports only a part of responsibilities defined for A, what does the Venn diagram look like? How to fix this? A B CS 4311

31 Fixing the Problem CS 4311

32 Example – Factoring Responsibilities
Drawing Element Text Element Line Element Ellipse Element Rectangle Element Group Element CS 4311

33 Factoring (Cont.) CS 4311

34 Factoring (Cont.) CS 4311

35 Group Exercise Suppose that you are designing a new Java compiler
and you identified the following concrete classes for various kinds of declarations allowed in Java. Class Declaration Interface Declaration Field Declaration Method Declaration Local Variable Declaration Method Parameter Declaration Organize the above classes into a class hierarchy. CS 4311


Download ppt "Collaborations and Hierarchies"

Similar presentations


Ads by Google