collaborations and hierarchies

Post on 25-Feb-2016

59 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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. Outline. Collaborations Identifying collaborations Recording collaborations Hierarchies Hierarchy graphs Venn diagrams. - PowerPoint PPT Presentation

TRANSCRIPT

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 diagramsSequence diagramCommunication diagram (a.k.a. collaboration

diagram)

13CS 4311

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

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

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

Example – Factoring Responsibilities

EllipseElement

TextElement

LineElement

RectangleElement

GroupElement

DrawingElement

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

top related