You are on page 1of 23

Module 4:

Relationships

Lawrence Chung CS6359.0T1: Module 4 1


Overview
Relationships
Dependency
Generalization
Association
Realization (See Module 2 for this)
Modeling Techniques

Lawrence Chung CS6359.0T1: Module 4 2


Relationships and
Associations
different words, but more or less same concept

UML
Associations
Fusion
Relationships

OMT
Associations

Lawrence Chung CS6359.0T1: Module 4 3


Relationships: 3 Kinds
Window

open() Event
close()

dependency
generalization

ConsoleWindow DialogBox Control

association
Lawrence Chung CS6359.0T1: Module 4 4
Dependency
A change in one thing may affect another.
Uses relationship.
May have a name, but not common.

AudioClip
name
Microphone
record(m:Microphone)
start()
stop()
dependency

One important use of dependency


Lawrence Chung CS6359.0T1: Module 4 5
Generalization
Relationship between general thing (parent) and more
specific thing (child)
Child is-a-kind-of parent.
Child inherits attributes and operations of parent.

generalization Shape base class

Rectangle Circle Polygon

Square leaf class

Lawrence Chung CS6359.0T1: Module 4 6


Associations (UML)
Represent conceptual relationships between classes

direction indicator:
how to read relation name
relationship name

Professor teaches 1..* Course


*
teacher class

role names Multiplicity


defines the number of objects associated with
an instance of the association.
Default of 1;
Zero or more (*);
n..m; range from n to m inclusive

Lawrence Chung CS6359.0T1: Module 4 7


Associations - In Other OOAD
Associations may be binary, ternary, or higher order
binary association

Professor Course
teaches

Fusion Style
Ternary association

Project Language

Person

How are these represented in UML?

Lawrence Chung CS6359.0T1: Module 4 8


Associations A Question
How would you model the following situation?

You have two files, say Homework1 and MyPet, where Homework1 is
accessible only by you, but MyPet is accessible by anybody.

You could create two classes, File and User. Homework1 and MyPet
are files, and you are a user.

Approach 1: Now, would you associate the file access right with File?
Approach 2: Or, would you associate the file access right with User?

Lawrence Chung CS6359.0T1: Module 4 9


Associations Links
UML has links and associations whose ideas originate largely from OMT and also from Fusion to a certain
extent.

OMT has links


link is a physical or conceptual connection between object
instances. E.g., MyPet is-accessible-to by any user.
OMT has association
describes a group of links with common structure and common
semantics
Inherently bi-directional
Often implemented as pointers in programming languages

In other advanced OOAD notations, such as RML (Requirements Modeling Language),


relationships including associations are treated fully and uniformly as classes. And as
such they can have links as instances.

Lawrence Chung CS6359.0T1: Module 4 10


Associations UML Links
link is a semantic connection among objects.
A link is an instance of an association.

association class
class association name
Worker 1..* works for *
employee
Company
employer
+setSalary( s : Salary)
+setDept( d : Dept)

assign(development)
w : Worker : Company

Named object link Anonymous object

Lawrence Chung CS6359.0T1: Module 4 11


Associations Link Attributes
Link Attributes
The most compelling reason for having links and attributes is for-many-to-many relationships

File User

link attribute
access permission
UML Association Class
File * 1..* User
class class

AccessRight
access permission association class

Lawrence Chung CS6359.0T1: Module 4 12


Associations - Aggregation
- structural association representing whole/part relationship.
- has-a relationship.

part whole
multiplicity
1..*
Department Company

association
aggregation

Lawrence Chung CS6359.0T1: Module 4 13


Modeling Techniques
Simple dependencies
Single inheritance
Structural relationships

Lawrence Chung CS6359.0T1: Module 4 14


Modeling Simple
Dependencies
The most common dependency between two classes is one
where one class uses another as a parameter to an operation.
Create dependency pointing from class with operation to parameter.

Using relationship

CourseSchedule

addCourse(c : Course) Course


removeCourse(c : Course

Usually initial class diagrams will not have any significant number of
dependencies in the beginning of analysis but will as more details are identified.
Lawrence Chung CS6359.0T1: Module 4 15
Modeling Single
Inheritance
Look for common responsibilities, attributes, and operations that are
common to two (2) or more classes.
If necessary, create a new class to assign commonalities.
Specify that the more-specific classes inherit from the more-general.
In UML, abstract classes and their
Security operations would be italicized.
But not in Rational Rose
presentValue()
abstract
history()
is-a-kind-of relationship

CashAccount Stock Bond


interestRate
presentValue() presentValue() presentValue()

PreferredStock CommonStock

Lawrence Chung CS6359.0T1: Module 4 16


Modeling Single
Inheritance (contd)
Abstract
Abstractionthe essential characteristics of a thing.
Abstract classcannot be instantiated.
Abstract methodhas no implementation defined (i.e., no
method body).
Depicted in italics or with stereotypes.
Concrete
Not abstract.
Can have instances.

Lawrence Chung CS6359.0T1: Module 4 17


Modeling Structural
Relationships
Considering a bunch of classes and their association relationships

1
School Department 0..1
has
1..*
1..*
1..* 1..*

assigned to
member

* 1..* 1..* 1 chairperson

attends * teaches 1..*


Student Course Instructor
* *

The model above is from Rational Rose. How did the composite symbol ( )get loaded versus the
aggregation? Use the Role Detail and select aggregation and then the by value radio button.

Lawrence Chung CS6359.0T1: Module 4 18


Modeling Structural
Relationships
Composite Aggregation

Body Car

Liver Heart Wheel Engine

Composite is a stronger form of aggregation. Composite parts live and die with the whole.

Lawrence Chung CS6359.0T1: Module 4 19


Modeling Structural
Relationships
Specify an association to create a navigation path between two
objects (in either direction).
Specify an association if two objects interact with each other beyond
operation arguments.
How do you know that objects of one class must interact with another class?
Review the scenarios that were derived from Use Cases.
CRC cards seem much less used in practice..

Specify multiplicity; 1 is assumed. (Error in text on implicit default.)


Specify aggregation when one of the classes represents a whole over
the other classes.

Lawrence Chung CS6359.0T1: Module 4 20


Hints & Tips
Modeling relationships
Use dependencies when relationship is not structural.
Use generalization with is-a relationship.
Dont introduce cyclical generalizations.
Balance generalizations - Not too deep, not too wide.
Use associations where structural relationships exist.

Drawing a UML relationship


Use rectilinear or oblique lines consistently.
Avoid lines that cross.
Show only relationships necessary to understand a particular grouping
of things.
Elide redundant associations.

Lawrence Chung CS6359.0T1: Module 4 21


Summary
Relationships
Dependency
Generalization
Association
-Links and Link Attributes
-Aggregation
Modeling techniques
Simple dependencies
Single inheritance
Structural relationships
Lawrence Chung CS6359.0T1: Module 4 22
Points To Ponder
Show that cyclical generalizations lead to symmetric relationships
between two classes. Use a couple of examples.
Why are cyclical generalizations not desirable?
Show that associations do not lead to transitive relationships but
aggregations do. Use a couple of examples.
Express compositions using FOL (first-order logic).
Show that two classes C1 and C2 can be such that C2 is a subclass
of C2 but at the same time C2 is an aggregation of C1. Use a
couple of examples.
Show that two association classes can be related to each other, for
example, through an association.
Can you give a counter-example to the statement Composite parts
live and die with the whole? Or when would the statement not hold?
Lawrence Chung CS6359.0T1: Module 4 23

You might also like