Académique Documents
Professionnel Documents
Culture Documents
Heinrich Hussmann
Technische Universität Dresden
Gianna Reggio
Università di Genova
Combinations Object-oriented
Modelling
Function Modelling
Data Modelling
State Modelling
Event Modelling
ERM Statecharts
SA/SD SREM SSADM OMT UML
Heinrich Hussmann Technische Universität Dresden UML Tutorial
Roots of UML
OOD
Booch
OOSE OMT
Jacobson Rumbaugh et al.
1995:
Booch / Rumbaugh / Jacobson
1997: UML 1.1 (OMG adopted technology)
• Books:
– Booch/Rumbaugh/Jacobson: Unified Modeling Langauge User Guide.
Addison-Wesley 1998. (just published)
– Rumbaugh/Booch/Jacobson: Unified Modeling Language Reference
Guide. Addison-Wesley 1998. (to appear)
– Fowler/Scott: UML Distilled. Addison-Wesley 1997.
– Warmer/Kleppe: The Object Constraint Language - Precise Modeling
with UML, Addison-Wesley 1998 (October !)
CorpCustomer
<<instance of>>
x: CorpCustomer
c: Company
employs name = "Joe Smith"
name = "XXY Ltd." adress = ""
adress = "Dresden, ..." custNum = 9876
turnover = 105.23 employeeNum = 1234
department = "A1"
introduce
new course
cancel
course
assign
speakers
programme
maintenance
produce
catalog
customer
service make
reservation
cancel
reservation
r1: Reservation
addReservation()
r2: Reservation
cancel()
cancel()
printLetter()
cancel()
printLetter()
3.1.1: printLetter()
r1: Reservation
{new}
x1: Customer
3.1: cancel() 1.1: create()
1: addReservation()
c: course
{new}
2: addReservation()
3: cancel()
x2: Customer 2.1: create
3.2: cancel()
r2: Reservation 0:
3.2.1: printLetter() {new} create()
:programme
maintenance
Heinrich Hussmann Technische Universität Dresden UML Tutorial
Statechart Diagram
Class "Course" update
release
process
reservation
check
reservation
check check
participant availability
reject reject
[ok] [ok]
create
reservation
User Interface
Course
Manager
SQL
Database
Client
User Interface
Server
Client Course
Application Manager
SQL
Database
Course
self.totalParticipants <= self.maxParticipants
Reservation
self.course.date >= self.dateBooked
Course
Customer title
0..* 0..* date
custNum
dateRegistered participant totalParticipants
maxParticipants
printLetter() addReservation()
cancel()
Course
self.totalParticipants = self.participant->size
Customer
self.course->forall(date >= self.dateRegistered)
Course
Customer title
0..* 0..* date
custNum
dateRegistered participant totalParticipants
maxParticipants
printLetter() addReservation()
cancel()
Course::addReservation(c: Customer)
pre: not (self.participant->includes(c))
and (self.totalParticipants < self.maxParticipants)
post: (self.participant = self.participant@pre->including(c))
and
(self.totalParticipants = self.totalParticipants@pre +1)
prequisite
Dependency
Course
examGrade
title
date
totalParticipants
maxParticipants follow-up
addReservation()
cancel()
Course
self.dependency
• OCL does not contain a way to specify the role to be used for this
navigation.