Download UML

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Programming With Java
ICS201
Chapter 12
UML and Patterns
University Of Hail
1
Programming With Java
ICS201
Introduction to UML
o UML
(Unified
Modeling
Language)
is
a
graphical
language used for designing and documenting OOP
software.
o UML is a software design tools that can be used within
the context of any OOP (Object-Oriented programming)
language.
University Of Hail
2
Programming With Java
ICS201
UML
o Pseudocode is a way of representing a program in a
linear and algebraic manner.
 It simplifies design by eliminating the details of
programming language syntax.
o Graphical representation systems for program design
have also been used:
 Flowcharts and structure diagrams for example.
o Unified
Modeling
Language
(UML)
is
yet
another
graphical representation formalism.
 UML is designed to reflect and be used with the OOP
philosophy.
University Of Hail
3
Programming With Java
ICS201
Types of UML Diagrams
• Use Case Diagram
• Class Diagram
• Sequence Diagram
• Collaboration Diagram
• State Diagram
• ….
Programming With Java
ICS201
Classes
•A class is simply represented as a box with the name of the class inside
– The diagram may also show the attributes and operations
– The complete signature of an operation is:
operationName(parameterName: parameterType …): returnType
Rectangle
Rectangle
getArea
resize
Rectangle
height
width
Rectangle
Rectangle
height
width
height: int
width: int
getArea
resize
getArea(): int
resize(int,int)
5
Programming With Java
ICS201
UML Class Diagram
o A class diagram is divided up into three sections:
1.The top section contains the class name.
2.The middle section contains the data specification
for the class (attributes).
3.The bottom section contains the actions or methods
of the class (operations).
ClassName
attributes
operations
University Of Hail
6
Programming With Java
ICS201
Class Names
ClassName
attributes
operations
The name of the class is the only
required
tag
in
the
graphical
representation of a class.
It always
appears in the top-most compartment.
Programming With Java
ICS201
Class Attributes (Cont’d)
Attributes are usually listed in the form:
attributeName : Type
Person
+ name
# address
# birthdate
/ age
- ssn
: String
: Address
: Date
: Date
: Id
Attributes can be:
+ public
# protected
- private
/ derived
A derived attribute is one that can be
computed from other attributes. For
example, a Person’s age can be
computed from his birth date.
/ age : Date
Software Design (UML)
Programming With Java
ICS201
Class Operations
Operations describe the class behavior
Person
name
address
birthdate
ssn
: String
: Address
: Date
: Id
eat
sleep
work
play
and appear in the third compartment.
o Each method in a UML diagram is
indicated
by
the
name
of
the
method, followed by its parameter
list, a colon (:), and its returned
type.
Software Design (UML)
Programming With Java
ICS201
UML Class Diagram
o A class diagram need not give a complete description of
the class.
o If a given analysis does not require that all the class
members be represented, then those members are
not listed in the class diagram.
o Missing members are indicated with an ellipsis
(three dots).
University Of Hail
10
Programming With Java
ICS201
Example (UML Class Diagram)
Square
attributes
- Side : double
- xCoordinate : double
- yCoordinate : double
Class name
+ resize (double newSide) : void
+ move (double newx , double newy ) : void
# erase ( ) : void
…
University Of Hail
Class methods
11
Programming With Java
ICS201
Inheritance Diagrams (Generalization)
o An inheritance diagram shows the relationship between
a base class and its derived class(es).
 Normally, only as much of the class diagram is
shown as is needed.
 Note that each derived class may serve as the base
class of its derived class(es).
o Each base class is drawn above its derived class(es)
 An upward pointing arrow is drawn between them to
indicate the inheritance relationship.
University Of Hail
12
Programming With Java
ICS201
Inheritance Diagrams
o The arrows also help in locating method definitions.
o To look for a method definition for a class:
 Examine the class definition first.
 If the method is not found, the path of connecting
arrows will show the order and direction in which to
search.
 Examine the parent
connecting arrow.
class
indicated
by
the
 If the method is still not found, then examine this
parent's parent class indicated by the connecting
arrow.
 Continue until the method is found, or until the top
base class is reached.
University Of Hail
13
Programming With Java
ICS201
A Class Hierarchy in UML Notation
Person
Arrows go from a derived
class to its base class.
Student
Undergraduate
Employee
Graduate
Faculty
University Of Hail
Staff
14
Programming With Java
ICS201
Some Details of a Class Hierarchy
Person
- name: String
+ setName(String newName): void
+ getName( ): String
+ toString( ): String
+ sameName(Person otherPerson): boolean
Student
- studentNumber: int
+ set(String newName , int newStudentNumber): void
+ getStudentNumber( ): int
+ setStudentNumber(int newStudentNumber ): void
+ toString( ): String
+ equals(Object otherObject): boolean
University Of Hail
15
Programming With Java
ICS201
Example
• Consider the class named Book that contains:
–
–
–
–
–
A private String variable called title;
A private integer variable called nbpages;
A public double variable called price ;
Two public methods SetTitle() and SetNbpages();
Two public methods getTitle() and getNbpages();
• Class TextBook is a derived class from the class Book. It
contains:
– A protected integer variable called gradeLevel;
– A public method toString() that returns a description of a
textBook;
– A public method PriceAfterDiscount() that returns the price of a
book after applying a discount of 10%.
• Question: Establish the UML diagram for this problem.
Programming With Java
ICS201
+
+
+
+
+
Book
title : String
nbpages : int
price : double
SetTitle (String t) : void
SetNbpages (int nb) : void
getTitle ( ) : String
getNbpages ( ) : int
TextBook
# gradeLevel : int
+ toString ( ) : String
+ PriceAfterDiscount() : double