0% found this document useful (0 votes)
92 views41 pages

12+UML+Class++Diagram+and+Packages Updated+

There are two approaches to software design according to C.A.R. Hoare - simple designs with obvious deficiencies or complicated designs with no obvious deficiencies. UML class diagrams can be used to design software systems by identifying classes, their responsibilities, and relationships. Key elements of class diagrams include classes, attributes, operations, associations, generalizations and more.

Uploaded by

kimep alumni
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)
92 views41 pages

12+UML+Class++Diagram+and+Packages Updated+

There are two approaches to software design according to C.A.R. Hoare - simple designs with obvious deficiencies or complicated designs with no obvious deficiencies. UML class diagrams can be used to design software systems by identifying classes, their responsibilities, and relationships. Key elements of class diagrams include classes, attributes, operations, associations, generalizations and more.

Uploaded by

kimep alumni
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/ 41

There are two ways of constructing a software design.

One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated tha

UML Class Diagram

By Pakita Shamoi, fall 2013


There are two ways of constructing a software
design. One way is to make it so simple that
there are obviously no deficiencies. And the
other way is to make it so complicated that
there are no obvious deficiencies

C.A.R. Hoare
Designing a system

• Identify classes in the system

• Identify the responsibilities of each class

• Identifythe relationships among classes


Types of models
• What is a model?
• Functional Model - presents the functionality of the
system from the user’s perspective. Example: Use Case
Diagrams.
• Object Model - represents the system structure using
classes, attributes, operations, and various types of
associations among them. Example: Class Diagrams.
• Dynamic Model - describes the internal behavior of
the system. Example: Sequence Diagrams.
Use Case diagram
• A Use Case Diagram is a type of functional
diagram that is used to present a graphical
overview of the functionality system affords in
terms of actors (usually users of the system),
their actions - use cases, and any
dependencies between those use cases.
Sequence diagrams
• The main convenience of a Sequence
Diagram is that it allows to visually specify
simple dynamic scenarios.
• Sequence Diagrams are composed of objects,
activations and messages
What is a Class Diagram?
• A class diagram describes the types of objects
in the system and the various kinds of static
relationships that exist among them.
▫ A graphical representation of a static view on
declarative static elements.
• A central modeling technique that runs
through nearly all object-oriented methods.
• The richest notation in UML.
The class icon
• It’s a rectangle divided
into three
compartments.

• The class icon has


▫ Name
▫ Attributes
▫ Methods
Essential Elements of a UML Class
Diagram
• Class
• Attributes
• Operations
• Relationships
▫ Associations
▫ Generalization
▫ Dependency
▫ Realization
• Comments and Notes
Classes
• A class is the description of a set of objects
having similar attributes, operations,
relationships and behavior.

Class
Name Window Window Window
size: Size size: Size
Attributes visibility: boolean visibility: boolean No inference can be
drawn about the
display() presence or absence
Operations hide() of elements in a
missing
compartment
Attributes
• Classes have attributes that describe the
characteristics of their objects.
• Attributes are atomic entities with no
responsibilities.
• Attribute syntax (partial):
▫ [visibility] name [ : type ] [ = defaultValue ]
• Class scope attributes are underlined
Attributes (cont.)
• Example (Java implementation):
Note
+ author: String = “unknown”
+ text : String
- total : long = 0

public class Note


{
public String author = “unknown”;
public String text;
private static long total = 0;
...
}
Operations
• Operations are the processes that objects of a
class (or the class itself) carry out.
• Operation syntax (partial):
▫ [ visibility ] name ( [ parameter-list ] ) [ : return-
type ]
▫ where parameter-list is a comma separated list of
formal parameters, each specified using the syntax:
name : type [ = defaultValue ]
• Example:
max(a : int, b : int) : int
Operations (cont.)
• Class scope operations are underlined.
• Java implementation:
public class Figure
{ Figure
private Size size; - size: Size
private Position pos; - pos : Position
private static long figureCount = 0;
+ move(pos : Position)
public void move(Position pos) { ... } + getFigureCount : long
public static long
getFigureCount() { return figureCount; }
...
}
Visibility
• Visibility describes whether an attribute or
operation is visible and can be referenced from
classes other than the one in which they are
defined.

• UML provides four visibility abbreviations:


▫ + (public)
▫ – (private)
▫ # (protected)
▫ ~ (package)
Multiplicity
• Multiplicity
▫ Provides a lower and upper bound on the number
of instances.
Exactly one 1

Zero or more (unlimited) * (0..*)

One or more 1..*

Zero or one (optional association) 0..1

Specified range 2..4

Multiple, disjoint ranges 2, 4..6, 8


Associations
• A semantic relationship between two or more classes
that specifies connections among their instances.
• A structural relationship, specifying that objects of one
class are connected to objects of a second (possibly the
same) class.
• Example: “An Employee works for a Company”
• An association between two classes indicates that objects
at one end of an association “recognize” objects at the
other end and may send messages to them.

Employee Department Company semantic

Employee Company structural


Associations (cont.)
Role
name
Association
name
instructor
StaffMember Student
1..* instructs *
Role
Navigable
Multiplicity (uni-directional)
association * pre -
requisites
Courses
0..3
Reflexive
association
Associations (cont.)
• To clarify its meaning, an association may be named.
▫ The name is represented as a label placed midway along the
association line.
▫ Usually a verb or a verb phrase.

• A role is an end of an association where it connects to


a class.
▫ May be named to indicate the role played by the class
attached to the end of the association path.
Usually a noun or noun phrase
Mandatory for reflexive associations
Aggregation
• A special form of association that models a whole-
part relationship between an aggregate (the whole)
and its parts.
▫ Models a “is a part-part of” relationship.

2..* 1..*
Car Door House

Whole Part
Aggregation (cont.)
• Aggregation tests:
▫ Is the phrase “part of” used to describe the
relationship?
A door is “part of” a car
▫ Are some operations on the whole automatically
applied to its parts?
Move the car, move the door.
▫ Are some attribute values propagated from the
whole to all or some of its parts?
The car is blue, therefore the door is blue.
▫ Is there an intrinsic asymmetry to the relationship
where one class is subordinate to the other?
A door is part of a car. A car is not part of a door.
Aggregation (cont.)
• Java implementation:
public class Car {
private Vector doors = new Vector();
public void addDoor(Door door) { ... }
...
}
public static void main(String[] args)
{
Door door = new Door();
House house = new House(door);
Car car = new Car();
car.addDoor(door);
...
}
Composition
• A strong form of aggregation
▫ The whole is the sole owner of its part.
The part object may belong to only one whole
▫ Multiplicity on the whole side must be zero or one.
▫ The life time of the part is dependent upon the
whole.
The composite must manage the creation and destruction
of its parts.

1
Circle Point Circle

Point
Composition

Window

scrollbar [2]: Slider


title: Header
body: Panel

Window
1
1 1

scrollbar 2 title 1 body 1

Slider Header Panel


Generalization
• Indicates inheritance
• Indicates objects of the specialized class (subclass)
are objects of the generalized class (super-class).
▫ “is kind of” relationship.

{abstract} is a An abstract Shape Super


tagged value that class {abstract} Class
indicates that the
class is abstract. Generalization
The name of an relationship
Sub
abstract class should Circle Class
be italicized
Generalization
• Java implementation:
public abstract class Shape Shape
{ {Abstract}
public abstract void draw();
draw() { abstract }
...
}
public class Circle extends Shape
{
public void draw() { ... }
Circle
...
}
draw()
Generalization

Shape

Separate Target Style

Polygon Ellipse Spline . ..

Shape
Shared Target Style

...
Polygon Ellipse Spline
Dependency
• A dependency is a relation between two classes in
which a change in one may force changes in the
other although there is no explicit association
between them.
• A stereotype may be used to denote the type of the
dependency.
• Example - a class calls a class scope operation of another class.

<<friend>>
Iterator Vector
Realization
• A realization relationship indicates that one class
implements a behavior specified by another class
(an interface or protocol).
• An interface can be realized by many classes.
• A class may realize many interfaces.

<<interface>>
LinkedList List
Realization (cont.)
• Java implementation:
public interface List
{
boolean add(Object o);
...
}
public class LinkedList implements List
{
public boolean add(Object o) { ... }
...
}
Constraint Rules and Notes
• Constraints and notes annotate among other
things associations, attributes, operations and
classes.
• Constraints are semantic restrictions noted as
expressions.
▫ UML offers many pre-defined constraints.

Customer
1 * may be
Order
{ total < $50 } canceled
id: long { value > 0 }

Constraint Note
UML Packages
• A package is a general purpose grouping
mechanism.
▫ Can be used to group any UML element (e.g. use case,
actors, classes, components and other packages.
• Commonly used for specifying the logical
distribution of classes.
Name
Packages and Class Diagrams

• Emphasize the logical structure of the system


(High level view)
c a

b
Packages and Class Diagrams (cont.)

• Emphasize the interface between packages by


showing relations and dependencies between
public classes

b a

a.A
b.C
a.B
Packages and Class Diagrams (cont.)

• Add package information to class diagrams

E D B

C
Example UML Class Diagram

Reference: www.smartdraw.com
Tips

• Don’t try to use all the various notations.


• Don’t draw models for everything, concentrate on
the key areas.
• You can also create models that describe some
particular part of the system, not all system
Review: steps followed

• Draw class symbol in the editor and name it


• List the class attributes
• List the class operations/methods
• Make the links and associations
• Give notations

You might also like