Module 4: Relationships Lawrence Chung CS6359.0T1: Module 4 1

Download Report

Transcript Module 4: Relationships Lawrence Chung CS6359.0T1: Module 4 1

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
Event
open()
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
record(m:Microphone)
start()
stop()
Microphone
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
leaf class
Square
Lawrence Chung
CS6359.0T1: Module 4
6
Associations (UML)

Represent conceptual relationships between classes
direction indicator:
relationship name
Professor
*
how to read relation name
teaches
teacher
1..*
class
role names
Lawrence Chung
Course
CS6359.0T1: Module 4
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
7
Associations - In Other OOAD
Associations may be binary, ternary, or higher order
binary association
Professor
teaches
Course
Fusion Style
Ternary association
Language
Project
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


OMT has association



link is a physical or conceptual connection between object
instances. E.g., MyPet “is-accessible-to” by any user.
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
works for
1..*
employee
*
employer
Company
+setSalary( s : Salary)
+setDept( d : Dept)
w : Worker
Named object
Lawrence Chung
assign(development)
: Company
link
CS6359.0T1: Module 4
Anonymous object
11
Associations – Link Attributes

Link Attributes
The most compelling reason for having links and attributes is for-many-tomany relationships
File
User
link attribute
access permission

UML Association Class
File
1..*
*
User
class
class
AccessRight
access permission
Lawrence Chung
CS6359.0T1: Module 4
association class
12
Associations - Aggregation
- structural association representing “whole/part” relationship.
- “has-a” relationship.
whole
part
Department
multiplicity
1..*
Company
association
Lawrence Chung
CS6359.0T1: Module 4
aggregation
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)
removeCourse(c : Course
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.
Security
presentValue()
history()
In UML, abstract classes and their
operations would be italicized.
But not in Rational Rose
abstract
is-a-kind-of relationship
CashAccount
interestRate
presentValue()
Stock
presentValue()
PreferredStock
Lawrence Chung
Bond
presentValue()
CommonStock
CS6359.0T1: Module 4
16
Modeling Single Inheritance (cont’d)

Abstract





Abstraction—the essential characteristics of a thing.
Abstract class—cannot be instantiated.
Abstract method—has 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
has
Department
0..1
1..*
1..*
1..*
1..*
5
assigned to
5 member
*
1..*
attends 4
Student
*
1..*
3 teaches 1..*
*
Course
1 chairperson
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.
Don’t 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