THE UNIFIED MODELING
LANGUAGE (UML)
Objectives
Explain what UML is and explain the
role of four of the most common
diagrams
Draw a class diagram, object diagram,
sequence diagram, and package diagram
Topics
An Introduction to UML
UML Class Diagrams
UML Syntax
UML Package Diagrams
UML Object Diagrams
UML Sequence Diagrams
What is UML?
Unified Modeling Language
A precise diagramming notation that will allow
program designs to be represented and discussed.
As it is graphical in nature it becomes easy to
visualize, understand and discuss the information
presented in the diagram.
However as the diagrams represent technical
information they must be precise and clear in
order for them to work, therefore there is a
precise notation that must be followed.
UML Class Diagrams
Shows individual class in details
Shows multiple classes and how they are
related to each other
Shows the architecture of a system
Parts of a Class
A unique name (conventionally starting
with an uppercase letter)
A list of attributes (int, double,
boolean, String)
A list of methods
Parts of a Class
Class Diagram Notation
Attributes and Methods visibility
modifiers :
+ for public access
( - ) for private access
*Attributes normally being kept private
and methods normally made public
Example
A class Book, with String attributes of
title and author, and methods of
getTitle(), setAuthor(), getAuthor(),
and toString()
Example
Activity
Draw a diagram to represent a class
called Bank Account with the attribute
balance (of type int) and methods
depositMoney() and withdraw Money().
Show appropriate visibility modifiers.
Class Diagram
UML allows to suppress any information
that are needed to be highlighted in the
diagram.
It allows to suppress irrelevant detail
and bring to the readers attention just
the information that are needed to be
focused on.
Class Diagram
It shows:
Classes
- attributes
- operations or methods
- visibility
Relationships
- navigability
- multiplicity
- dependency
- aggregation
- composition
Generalization/Specialization
- inheritance
- interfaces
Keywords
Notes and Comments
UML Syntax
Attributes should be shown as:
Visibility name : type multiplicity
Where visibility is one of:
+ = public
- = private
# = protected
~ = package
UML Syntax
Attributes should be shown as:
Visibility name : type multiplicity
Where multiplicity is one of:
n exactly n
* zero or more
m between m and n
Example:
- custRef : int[1]
a private attribute custRef is a single int value
Note:
This would often be shown as custRef:int
However with no multiplicity shown it would be
difficult to assume a multiplicity of one was
intended by the author
Example:
# itemCodes : String[1 *]
A protected attribute itemCodes is one
or more String values
validCard : boolean
an attribute validCard, of unspecified
visibility, has unspecified multiplicity
UML Syntax
Syntax for operations:
visibility name (par1 : type, part2 :
type2): return type
where each parameter is shown in
(parenthesis) and then the return type
is specified.
Example
+ addName (newName : String) :
boolean
This denotes a public method addName
which takes one parameter newName
of type String and returns a boolean
value
Activity
Draw a diagram to represent a class
called BankAccount with a private
attribute balance (this being a single
integer) and a public method
depositMoney() which takes an integer
parameter, deposit and returns a
boolean value. Fully specify all of this
information on a UML class diagram.
Denoting Relationships
Association relationships between
classes
OneClass
value :
Example:
OtherClass
Denoting Relationships
We use an association when we want to
give two related classes and their
relationship prominence on a class
diagram.
The source class points to the target
class
Denoting Relationships
Additionally we can show multiplicity at
both ends of an association:
This implies that OneClass maintains
a collection of objects of type
OtherClass
Activity
Draw a diagram to represent a class called Catalogue and a class called
ItemForSale as defined below:
ItemForSale has an attribute name of type string and an attribute price of type
int. It also has a method setPrice() which takes an integer parameter newPrice.
Catalogue has an attribute listOfItems i.e the items currently held in the
catalogue. A zero or more items can be stored in the catalogue listOfItems will
need to be an array or collection. Catalogue also has one method addItem()
which takes an item as a parameter (of type ItemForSale) and adds this item
to the listItems.
Draw this on a class diagram showing appropriate visibility modifiers for
attributes and methods.
Types of Association
Dependency
Simple association
Bidirectional association
Aggregation
Composition
Types of Association - Dependency
The most unspecific relationship
between classes (not strictly an
association)
Class A in some way uses facilities
defined by Class B
Changes to Class B may affect Class A
Types of Association - Dependency
Typical use of dependency lines would
be where Class A has a method which is
passed a parameter object of Class B,
or uses a local variable of that class, or
calls static methods in Class B.
Types of Association Simple
Association
In association, Class A uses objects of
Class B
Typically Class A has an attribute of Class
B
Navigability is from A to B:
i.e A Class A object can access the Class B
object(s) with which it is associated. The
reverse is not true the class B object doesnt
know about the Class A object
Types of Association Simple
Association
A simple association typically
corresponds to an instance variable in
Class A of the target class B type.
Types of Association Bidirectional
Association
Bidirectional Association is when Classes A and B
have a two-way association
Each refers to the other class
Navigability A to B and B to A:
A Class A object can access the Class B object(s) with
which it is associated
Object(s) of Class B belong to Class A
Implies reference from A to B
Also, a Class B object can access the Class A object(s)
with which it is associated
Types of Association Bidirectional
Association
A bidirectional association is
complicated because each object must
have a reference to the other
object(s) and generally bidirectional
associations are much less common
than unidirectional ones.
Types of Association Aggregation
Aggregation denotes a situation where
Object(s) of Class B belongs to Class A
Implies reference from A to B
While aggregation implies that objects
of Class B belongs to objects of Class A
it also implies that object of Class B
retain an existence independent of Class
A.
Types of Association Aggregation
Types of Association Composition
Composition is similar to aggregation but implies
a much stronger belonging relationship i.e
Obect(s) of Class B are part of a Class A object
Implies reference from A to B
Much stronger than aggregation in this case
Class B objects are an integral part of Class A
and in general objects of Class B never exist
other than as part of Class A, i.e. they have the
same lifetime
Types of Association Composition
An example of composition would be
between Points, Lines and Shapes as
elements of a Picture. These objects
can only exist as part of a picture is
deleted they are also deleted
Denoting Relationships
As well as denoting associations, class
diagrams can denote:
Inheritance
Interfaces
Keywords
Notes
Denoting Relationships - Inheritance
Class A inherits both the interface and
implementation of Class B, though it may
override implementation details and
supplement both.
Denoting Relationships - Interfaces
Interfaces are similar to inheritance
however with interfaces only the
interface is inherited. The methods
defined by the interface must be
implemented in every class that
implements the interface.
Interfaces can be represented using
the <<interface>> keyword.
Denoting Relationships - Interfaces
The SaleableItem
interface is required by
CashTill and
implemented by
Denoting Relationships - Keywords
Refines the meaning of the graphical
symbols
Ex:
<<interface>>, <<abstract>>
Denoting Relationships - Notes
Can be used to comment on a diagram element
Can be used to add information not conveyed
by the graphical notation
UML Package Diagrams
Package Diagrams
Object Diagrams
Sequence Diagrams
UML Package Diagrams
Package a directory containing a group
of related classes (and interfaces)
- Provide a level of organization and
encapsulation above that of individual
classes
UML Package Diagrams
UML Package Diagrams
Represent the relationships between
classes and packages
Can show:
Classes within packages
Nesting of packages
Dependencies between packages
UML Package Diagrams
UML Package Diagrams
Alternative Representation:
Package Naming
By convention, package names are
normally in lowercase
Ex:
mysystem, [Link], [Link],
[Link], [Link]
Note:
On a package diagram each element is not
separated by a . but by ::
Example #1:
You and your classmate decided to go shopping
together. For speed, split the following list
into two halves items to be collected by you
and items to be collected by your classmate.
Apples, furniture polish, pears, carrots, toilet
rolls, potatoes, floor cleaner, matches,
grapes
Solution:
Organize the list into two lists of items
that are located in the same parts of
the shop:
List 1
Apples
Pears
Grapes
Carrots
Potatoes
Example#2:
You run a team of programmer and are
required to write a program in Java to
monitor and control a network system. The
system will be made up of seven classes as
described below. Organize these classes
into three packages. Each programmer will
then be responsible for the code in one
package. Give the packages any name you
feel appropriate.
Example#2:
Main
This class starts the system
Monitor
This class monitors the network for
performance and breaches in security
Interface
This is a visual interface for entire system
Reconfigure This allows the network to be reconfigured
RecordStats This stores data regarding the network in
a database
RemoteCon This allows some remote control over the
trol
system via telephone
PrintReports This uses the data stored in the database
to print management reports for the
organizations management
Possible Solution
interface
Main
Interface
RemoteControl
network
Monitor
Reconfigure
database
RecordStats
PrintReport
Activity
Assume the URL of your organization is
[Link] and three packages and
seven classes shown below are all part of
project1. Draw a package diagram to convey
this information.
interface
Main
Interface
RemoteControl
network
Monitor
Reconfigure
UML Object Diagrams
Allows to visualize one instance of time and the
data that a system may contain in that moment
Boxes are titled with:
objectName:ClassName
As each box describes a particular object at a
specific moment in time, the box contains
attributes and their values (at that moment in
time).
attribute = value
UML Object Diagrams
UML Sequence Diagrams
Describe how the system works over a period
of time.
Dynamic rather than static representations of
the system
Show the sequence of method invocations
within and between objects over a period of
time
Useful for understanding how objects
collaborate in a particular scenario