0% found this document useful (0 votes)
39 views16 pages

Introduction To UML Class Diagrams: Pattern-Oriented Software Design

Uploaded by

warsiniridwan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views16 pages

Introduction To UML Class Diagrams: Pattern-Oriented Software Design

Uploaded by

warsiniridwan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

Pattern-Oriented Software Design

Introduction to
UML Class Diagrams

CSIE Department, NTUT


Woei-Kae Chen

UML: Unified Modeling Language


z Successor to OOA&D methods
z late 1980s and early 1990s
z Unifies GoF Book
z Jacobson & OMT (Booch & Rumbaugh)
z Graphical notation used to express
designs
z Use cases
z Class diagrams
z Interaction diagrams
z Sequence diagrams
z Collaboration diagrams
z Package diagrams
z State diagrams
z Activity diagrams
z Deployment diagrams

1
UML class diagrams
z Three perspectives
z Conceptual
z represents of the domain under study
z relate to the class that implement them, but often
no direct mapping
z Specification
z looking at types rather than classes
z a type represents an interface that may have
different implementations
z Implementation
z looking at classes for our POSD class

UML: a class

+ public
# protected
- private

Abstract
Concrete

•data type
•parameter

2
Example: OBSort1.cpp

Example: OBSort1.cpp

Let’s think of
main() as a class

relationship

3
UML: class relationship
z Association X Y (knows a)
z Dependency X Y (uses a)
z Composition X Y (has a)
z Aggregation (has a)
X Y

z Inheritance Y (is a)
X
z Class template Y (parameterized
X class)

“Uses a” Ù “Knows a” relationship

z “Uses a”
z Dependency
z One object issues a function X Y
call to a member function of
another object
z “Knows a”
z Association
z One object is aware of
another; it contains a pointer X Y
or reference to another object

4
“Is a” Ù “Has a” relationship
z “Is a” relationships X
z Inheritance
z A class is derived from
another class Y

z “Has a” relationships
z Composition or Aggregation X Y
z A class contains other
classes as members
X Y

Aggregation Ù Composition
X Y X Y
z Both are “Has a” or “part-of” relationship
z Composition
z A stronger variety of aggregation
z The part object may belong to only one
whole
z Expected to live and die with the whole
z delete whole Æ delete part Following Larman OOAD:
z Aggregation use of aggregation is NOT
z Cascading delete is often recommended
z An aggregated instance can be shared

5
Example: “has a” relationship
Delete Polygon Æ delete Point a Point may appear in only
Delete Polygon Æ
X delete Style one Polygon or Circle

Larman: use
association instead
of aggregation

a Style may be shared by


Multiplicity
many Polygons and Circles

Relationship Examples
z Car Ù Engine ? Æ Composition
z Person Ù Cell Phone ? Æ Association/Composition/Dependency
z Human Ù Brain ? Æ Composition
z Fighter Ù Bomb ? Æ Association
z Fighter Ù F16 Æ Inheritance
z Bomb Ù Explosive Æ Composition/Association/Inheritance
z Bomb Ù Nuclear Bomb Æ Inheritance
z MyComplex Ù Math ? Æ Dependency
z Tree Node Ù Child Node ? Æ Composition
z Tree Node Ù Parent Node ? Æ Association (if needed)
z Hero Ù Life ? Æ Composition/Attribute
z Hero Ù Score ? Æ Association/Dependency
z Hero Ù Map ? Æ Association/Dependency

6
Relationship Examples
z Flight 123 Ù Airplane ? Æ Association/Dependency
z Flight 123 Ù Airport ? Æ Association
z Flight 123 Ù Passenger ? Æ Association/Dependency
z Flight 123 Ù Flight Captain ? Æ Association/Dependency
z Flight 123 Ù Flight Attendant ? Æ Association/Dependency
z Airplane Ù Boeing 747 ? Æ Inheritance
z Airplane Ù Seat ? Æ Composition
z Airplane Ù Fuel ? Æ Composition/Attribute
z Passenger Ù Flight ? Æ Association/Dependency
z Passenger Ù Ticket ? Æ Association/Dependency
z Passenger Ù Travel Agent ? Æ Association/Dependency
z Ticket Ù Price ? Æ Composition/Attribute

UML Example (C++): Association


X Y
class X {
X(Y *y) : y_ptr(y) {}
void SetY(Y *y) {y_ptr = y;}
void f() {y_ptr->Foo();}
...
Y *y_ptr; // pointer
};

7
UML Example (C++): Association
X Y
How is an association created?
Example #1 Example #2
… …
Y an_y(); Y an_y();
X an_x(&an_y); X an_x();
an_x.f(); …
… an_x.SetY(&y);
… …
an_x.f();

UML Example (C++): Dependency


X Y
class X {
...
void f1(Y y) {…; y.Foo();}
void f2(Y *y) {…; y->Foo();}
void f3(Y &y) {…; y.Foo();}
void f4() {Y y; y.Foo();…}
void f5() {…; Y::StaticFoo();}
};

8
Example: OBSort3.cpp

uses
•getSize()
•operator[]

UML Example (C++): Composition 1

X Y

class X {
Java?
...
Y a; // 1; Composition
Y b[10]; // 0..10; Composition
};

9
UML Example (C++): Composition 2

X Y

class X {
X() { a = new Y[10]; }
~X(){ delete [] a; }
...
Y *a; // 0..10; Composition
};
NOT Association

UML Example (C++): Composition 3


X vector<Y> Y
Implementation detail

X Y
class X {
Hiding
... implementation detail
vector<Y> a;
}; Composition of NOT Composition
vector<Y> of Y

10
UML Example: OBSort3.cpp

UML Example (C++): Aggregation

z No example here
z Use Association instead of Aggregation

X Y

X Y

11
UML Example (C++): Inheritance

class Y {
... Y
};

class X : public Y {
... X
};

“is a” relationship

Example: OOSort2.cpp

12
UML Example (C#): Implementation

public interface Y {
int Foo();
}
No fields
Y
class X : Y
{ X implements Y
public int Foo()
{ X

}
} “Can do” relationship

UML Example (C++): Implementation

class Y {
... Y
No variables
}; Only pure virtual functions

class X : public Y {
... X
};
C++ allows multiple inheritance

13
UML Example (C++):
Template Class

template <class T> Y


class X { X
...
... ...
... X<Y> a;
}; ...

14
Abstract class

15
C++ static member

16

You might also like