CS 4311 1
Collaborations and Hierarchies
CS 4311Chapters 5 and 6 of
Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object-Oriented Software, Prentice Hall, 1990.
2CS 4311
Outline
Collaborations Identifying collaborationsRecording collaborations
HierarchiesHierarchy graphsVenn diagrams
3CS 4311
Motivation for Collaborations
Two ways to perform responsibilities??
Collaboration isRequest from one object to another in order to
fulfill a responsibility.
4CS 4311
Motivation (Cont.)
Why identify collaborations?Collaborations represents flow of control and
information through the system, May identify misplaced responsibilities, andMay identify missing responsibilities. In sum, shows dynamics of the system.
5CS 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?
6CS 4311
Finding More Collaborations
Examine relationships between classes, especially:The “is-part-of” relationship, andThe “has-knowledge-of” relationship.
7CS 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?
8CS 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?
9CS 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: PersonResponsibilities CollaborationsKnows nameKnows address AddressBookKnows phone number PhoneBook…
Client
Server(or helper)
10CS 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
AddressBook1
PhoneBook2
11CS 4311
Example: Mail-Order System
Class Responsibilities Collaborators
Catalog Create a catalogMail a catalog
Order Process an order Track an order
Product Ship a productPaymentSupplier Customer
12CS 4311
Other Tools - UML
UML interaction diagramsMessage sequence diagramCommunication diagram (a.k.a. collaboration
diagram)
13CS 4311
Message Sequence Diagram
: Customer : Order : Payment : Product : Supplier
place an order
process
validate
deliverif ( payment ok )
back order
if ( not in stock )
get address
mail to address
message
lifetimecontrol
object
14CS 4311
Message Sequence Diagram
: Customer : Order : Payment : Product : Supplier
place an order
process
validate
deliverif ( payment ok )
back order
if ( not in stock )
get address
mail to address
Collaboration
15CS 4311
Communication Diagram
p : Product
: Order : Payment
c : Customer
: Supplier
1.1 : ok := validate()
1.2 [ok] : deliver(c)
1.2.1 [not in stock] : back order(p)
1.2.2 : get address()
1 : place an order(c)
object
link
message
16CS 4311
Communication Diagram
p : Product
: Order : Payment
c : Customer
: Supplier
1.1 : ok := validate()
1.2 [ok] : deliver(c)
1.2.1 [not in stock] : back order(p)
1.2.2 : get address()
1 : place an order(c)
Collaboration
17CS 4311
Outline
Collaborations Hierarchies
Hierarchy graphVenn diagram
18CS 4311
Review on 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.
19CS 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.
20CS 4311
Example
- Notation of [Wirfs-Brock-etal90] - Leaf nodes are often concrete classes.- Non-leaf nodes are often abstract classes.
PartTime FullTime
Employee
21CS 4311
In UML …
Employee{abstract}
PartTime FullTime
Employee (or )
22CS 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.
23CS 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)?
24CS 4311
Another Example of Hierarchy Graph
OrderedCollection
IndexableCollection
MagnitudeArray
Matrix String Date
25CS 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.
26CS 4311
Example
PartTime FullTime
Employee
PartTime
set of responsibilities
Employee set of objects
PartTime FullTime
Employee
FullTime
27CS 4311
Exercise
OrderedCollection
IndexableCollection
MagnitudeArray
Matrix String Date
Draw a Venn diagram for the following hierarchy graph.
28CS 4311
In Sum, Hierarchies …
Are for reviewing the inheritance relationships, and
Use hierarchy graphs and Venn diagrams as a notation and an analysis tool
29CS 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.
30CS 4311
Example – Using Venn Diagram To Check Hierarchy
A
B
If B supports only a part of responsibilities defined for A, whatdoes the Venn diagram look like? How to fix this?
31CS 4311
Fixing the Problem
32CS 4311
Example – Factoring Responsibilities
EllipseElement
TextElement
LineElement
RectangleElement
GroupElement
DrawingElement
33CS 4311
Factoring (Cont.)
34CS 4311
Factoring (Cont.)
35CS 4311
Group ExerciseSuppose that you are designing a new Java compilerand you identified the following concrete classes forvarious 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.