Download presentation
Presentation is loading. Please wait.
Published byGodfrey Howard Modified over 8 years ago
1
CS 43111 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.
2
2 CS 4311 Outline Collaborations Identifying collaborations Recording collaborations Hierarchies Hierarchy graphs Venn diagrams
3
3 CS 4311 Motivation for Collaborations Two ways to perform responsibilities ? Collaboration is Request from one object to another in order to fulfill a responsibility.
4
4 CS 4311 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.
5
5 CS 4311 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?
6
6 CS 4311 Finding More Collaborations Examine relationships between classes, especially: The “is-part-of” relationship, and The “has-knowledge-of” relationship.
7
7 CS 4311 “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?
8
8 CS 4311 “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?
9
9 CS 4311 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. Class: Person Responsibilities Collaborations Knows name Knows address AddressBook Knows phone number PhoneBook … Client Server (or helper)
10
10 CS 4311 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) Person AddressBook 1 PhoneBook 2
11
11 CS 4311 Example: Mail-Order System Class ResponsibilitiesCollaborators Catalog Create a catalog Mail a catalog OrderProcess an order Track an order Product Ship a product Payment Supplier Customer
12
12 CS 4311 Other Tools - UML UML interaction diagrams Sequence diagram Communication diagram (a.k.a. collaboration diagram)
13
13 CS 4311 Sequence Diagram message lifetime control object
14
14 CS 4311 Sequence Diagram Collaboration
15
15 CS 4311 Communication Diagram object link message
16
16 CS 4311 Communication Diagram Collaboration
17
17 CS 4311 Outline Collaborations Hierarchies Hierarchy graph Venn diagram
18
18 CS 4311 Review of CRC Process 1. Exploratory phase Identify a preliminary list of classes, responsibilities and collaborations. 2. Analysis phase Obtain a more global understanding of the design, e.g., by using tools such as: – Hierarchy graphs, – Venn diagrams, and – Contracts.
19
19 CS 4311 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.
20
20 CS 4311 Example - Notation of [Wirfs-Brock-etal90] - Leaf nodes are often concrete classes. - Non-leaf nodes are often abstract classes. PartTime FullTime Employee
21
21 CS 4311 In UML … Employee {abstract} PartTime FullTime Employee (or )
22
22 CS 4311 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.
23
23 CS 4311 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)?
24
24 CS 4311 Another Example of Hierarchy Graph Ordered Collection Indexable Collection Magnitude ArrayMatrixStringDate
25
25 CS 4311 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.
26
26 CS 4311 Example PartTime FullTime Employee PartTime set of responsibilities Employee set of objects PartTime FullTime Employee FullTime
27
27 CS 4311 Exercise Ordered Collection Indexable Collection Magnitude ArrayMatrixStringDate Draw a Venn diagram for the following hierarchy graph.
28
28 CS 4311 In Sum, Hierarchies … Are for reviewing the inheritance relationships, and Use hierarchy graphs and Venn diagrams as a notation and an analysis tool
29
29 CS 4311 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.
30
30 CS 4311 Example – Using Venn Diagram To Check Hierarchy A B If B supports only a part of responsibilities defined for A, what does the Venn diagram look like? How to fix this?
31
31 CS 4311 Example – Factoring Responsibilities Ellipse Element Text Element Line Element Rectangle Element Group Element Drawing Element
32
32 CS 4311 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.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.