Top Banner
CS 4311 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.
35

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

Jan 02, 2016

Download

Documents

Paula Allison
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 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,

CS 4311 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.

Page 2: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

2CS 4311

Outline

Collaborations Identifying collaborationsRecording collaborations

HierarchiesHierarchy graphsVenn diagrams

Page 3: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

3CS 4311

Motivation for Collaborations

Two ways to perform responsibilities??

Collaboration isRequest from one object to another in order to

fulfill a responsibility.

Page 4: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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.

Page 5: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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?

Page 6: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

6CS 4311

Finding More Collaborations

Examine relationships between classes, especially:The “is-part-of” relationship, andThe “has-knowledge-of” relationship.

Page 7: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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?

Page 8: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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?

Page 9: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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: Person

Responsibilities CollaborationsKnows nameKnows address AddressBookKnows phone number PhoneBook…

Client

Server(or helper)

Page 10: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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

Page 11: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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 product

PaymentSupplier Customer

Page 12: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

12CS 4311

Other Tools - UML

UML interaction diagramsSequence diagramCollaboration diagram

Page 13: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

13CS 4311

Sequence Diagram

: Customer : Order : Payment : Product : Supplier

place an order

process

validate

deliver

if ( payment ok )

back order

if ( not in stock )

get address

mail to address

message

lifetimecontrol

object

Page 14: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

14CS 4311

Sequence Diagram

: Customer : Order : Payment : Product : Supplier

place an order

process

validate

deliver

if ( payment ok )

back order

if ( not in stock )

get address

mail to address

Collaboration

Page 15: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

15CS 4311

Collaboration 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

Page 16: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

16CS 4311

Collaboration 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

Page 17: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

17CS 4311

Outline

Collaborations Hierarchies

Hierarchy graphVenn diagram

Page 18: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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.

Page 19: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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.

Page 20: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

20CS 4311

Example

- Notation of [Wirfs-Brock-etal90] - Leaf nodes are often concrete classes.- Non-leaf nodes are often abstract classes.

PartTime FullTime

Employee

Page 21: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

21CS 4311

In UML …

Employee{abstract}

PartTime FullTime

Employee (or )

Page 22: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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.

Page 23: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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)?

Page 24: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

24CS 4311

Another Example of Hierarchy Graph

OrderedCollection

IndexableCollection

MagnitudeArray

Matrix String Date

Page 25: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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.

Page 26: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

26CS 4311

Example

PartTime FullTime

Employee

PartTime

set of responsibilities

Employee set of objects

PartTime FullTime

Employee

FullTime

Page 27: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

27CS 4311

Exercise

OrderedCollection

IndexableCollection

MagnitudeArray

Matrix String Date

Draw a Venn diagram for the following hierarchy graph.

Page 28: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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

Page 29: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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.

Page 30: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

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?

Page 31: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

31CS 4311

Fixing the Problem

Page 32: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

32CS 4311

Example – Factoring Responsibilities

EllipseElement

TextElement

LineElement

RectangleElement

GroupElement

DrawingElement

Page 33: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

33CS 4311

Factoring (Cont.)

Page 34: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

34CS 4311

Factoring (Cont.)

Page 35: CS 43111 Collaborations and Hierarchies CS 4311 Chapters 5 and 6 of Wirfs-Brock, R., Wilkerson, B., and Wiener, L., Designing Object- Oriented Software,

35CS 4311

Group Exercise

Suppose 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.