Diagramma delle classi
&RUVR GL ,QJHJQHULD GHO 6RIWZDUH E’ un diagramma che illustra una collezione di elementi
dichiarativi (statici) di un modello come classi e tipi, assieme ai loro
contenuti e alle loro relazioni.
UML
Diagrammi delle classi
Class diagrams
Diagrammi degli oggetti
Object diagrams
Serve per individuare gli elementi di un sistema
Costruito, perfezionato ed utilizzato durante tutto il processo di
sviluppo del sistema
Scopo:
• individua e specifica i concetti del sistema
• specifica le collaborazioni
• specifica gli schemi logici dei D.B.
Utilizzato dagli analisti, progettisti e dai programmatori
© Renato Conte - UML: CLASSI e OGGETTI - 1 -
© Renato Conte - UML: CLASSI e OGGETTI - 2 -
Fasi, modelli e diagrammi
Diagrammi delle classi e degli oggetti
Requirements
Un diagramma delle classi è un grafo
composto da classi e relazioni.
Analysis
Use Case
Model
Component
Diagrams
Design
Model
Deployment
Diagrams
Deployment
Model
Implementation
Test
Class
Diagrams
Analysis
Model
Design
Un diagramma degli oggetti è un grafo
composto da istanze di classi (oggetti) e
relazioni; esso è una istanza del diagramma
delle classi.
Use Case
Diagrams
Implem.
Model
Test
Model
Object
Diagrams
Incl. subsystems
and packages
Sequence
Diagrams
Collaboration
Diagrams
Statechart
Diagrams
Activity
Diagrams
© Renato Conte - UML: CLASSI e OGGETTI - 3 -
© Renato Conte - UML: CLASSI e OGGETTI - 4 -
Classe
Sintassi di una classe ( esempi 1)
“A class is the descriptor
Nome della classe
Account
for a set of objects with
balance: Money
accountHolder: String
interestRate: int
similar structure, behavior,
Attributi
and relationships”.
setInterest()
setOverdraftLevel()
Operazioni
dal manuale di riferimento di UML v.1.5
© Renato Conte - UML: CLASSI e OGGETTI - 5 -
© Renato Conte - UML: CLASSI e OGGETTI - 6 -
( esempi 3)
«entity»
stereotype
Account
{ abstract,
author= Joe,
status= tested }
( esempi 2)
Classe attiva
Boolean
Account
stato: enum {false,true}
#
#
-
balance: Money
accountHolder: String
interestRate: int = 7
lastAccountID: String
Customer
marcatori
di visibilità
+
#
+
setInterest(d: Date)
update()
setOverdraftLevel()
getBalance():Money
Exceptions
accessViolationException
opzionali
definite dall’utente
Responsibilities
-- Keep track of balance
© Renato Conte - UML: CLASSI e OGGETTI - 7 -
constraints
name: String
title: String
age: Integer
isMale: Boolean
{ title = if isMale then ‘Mr.’ else ‘Ms.’ endif}
{ age >= 18 and age < 66 }
{ name.size < 100 }
© Renato Conte - UML: CLASSI e OGGETTI - 8 -
Sintassi membri ( in diagrammi espansi o reali )
Livello di dettaglio nei diagrammi
Attributi
Diagrammi
ad alto
livello
[visibility] name [multiplicity] [: type]
Brevità
Genericità
Dettagli
Specificità
Diagrammi
espansi
[= initial-value] [{property-string}]
changeable, addOnly, frozen
Operazioni ( implementate da metodi, ... )
[visibility] name [(parameter-list)] [: return-type]
[{property-string}]
Diagrammi
essenziali
Diagrammi
reali
Astrazione tecnologica
e/o
implementativa
leaf, query, sequential, guarded, concurrent
parameter-list
[direction] name : type [= default-value]
Dettagli tecnologici
e/o
implementativi
direction
in, out, inout.
default
© Renato Conte - UML: CLASSI e OGGETTI - 9 -
© Renato Conte - UML: CLASSI e OGGETTI - 10 -
Marcatori di visibilità (visibility)
class-scope -
instance-scope
ATM card
+ public
cardID: integer
- private
class-scope
(static)
# protected
~ package
© Renato Conte - UML: CLASSI e OGGETTI - 11 -
UltimaCardID: integer = 0
PIN: String
dataEmissione: date
scadenza: date
limitePrelievo: integer
stato: statoV {attiva, smarrita, ...}
© Renato Conte - UML: CLASSI e OGGETTI - 12 -
Relazioni ( principali ) tra le classi
• Associazioni (association) sono relazioni strutturali
• Generalizzazioni (generalization) sono relazioni di
ereditarietà.
Associazioni
• Composizione e Aggregazione (composition and
aggregation) speciali relazioni strutturali
• Dipendenza (dependency)
• Realizzazioni (realization) una relazione tra una
specificazione e la sua implementazione
© Renato Conte - UML: CLASSI e OGGETTI - 13 -
© Renato Conte - UML: CLASSI e OGGETTI - 14 -
Molteplicità nelle associazioni ( 1 )
Associazioni
Molteplicità
Molteplicità
lower-bound .. upper-bound
Direzione e nome
Company
1
works for
employer
*
ClasseA
1..4
* ClasseB
Person
employee
ruoli
© Renato Conte - UML: CLASSI e OGGETTI - 15 -
Illimitato:
da zero a “molti”
© Renato Conte - UML: CLASSI e OGGETTI - 16 -
Molteplicità nelle associazioni ( 2 )
Employee
*
Secretary
*
worksFor
Company
1..*
Manager
supervisor
Company
Office
Person
Molti-a-uno ( Many-to-one )
•
•
•
•
BoardOfDirectors
0..1
allocatedTo
* Employee
Una società ha molti dipendenti
Un dipendente può lavorare solo per una società.
Una società può avere zero dipendenti
Non è possibile per un dipendente non “dipendere”
da una società
Employee
*
Company
** BoardOfDirectors
0,3..8
boardMember
relazione parziale (zero sottinteso)
© Renato Conte - UML: CLASSI e OGGETTI - 17 -
*
worksFor
Molti-a-molti ( Many-to-many )
Company
GambaDiLegno
Ladri&affini
Paperino
Sottinteso 1: relazione totale
© Renato Conte - UML: CLASSI e OGGETTI - 18 -
Molti-a-uno ( significato con istanze )
Employee
worksFor
•
•
•
•
Una segretaria può lavorare per molti dirigenti
Un dirigente può avere molte segretarie
Alcuni dirigenti potrebbero avere nessuna segretaria.
Una segretaria deve per forza avere almeno un
dirigente
relazione parziale
relazione totale
Pippo
Topolino
Investigazioni S.p.a
© Renato Conte - UML: CLASSI e OGGETTI - 19 -
Secretary
*
1.. *
Manager
supervisor
© Renato Conte - UML: CLASSI e OGGETTI - 20 -
Uno-a-uno ( One-to-one )
Esempio: voli e prenotazioni
• For each company, there is exactly one board of
directors
• A board is the board of only one company
• A company must always have a board
• A board must always be of some company
Company
BoardOfDirector
– A booking is always for exactly one passenger
• no booking with zero passengers
• a booking could never involve more than one
passenger.
– A Passenger can have ten Bookings
• a passenger could have no bookings at all
– A Flight can have 250 Bookings
– A booking have a cost and a date
© Renato Conte - UML: CLASSI e OGGETTI - 21 -
Classe d’associazione ( association class )
Voli e prenotazioni: soluzione ?
Passeggero
© Renato Conte - UML: CLASSI e OGGETTI - 22 -
Volo
Passeggero
Volo
1..250
cognome
nome
numero
0..10
cognome
nome
numero
?
Prenotazione
dataPrenotazione
costo
Prenotazione
Passeggero
dataPrenotazione
costo
cognome
nome
© Renato Conte - UML: CLASSI e OGGETTI - 23 -
Volo
Prenotazione
1..250
0..10
dataPrenotazione
costo
numero
© Renato Conte - UML: CLASSI e OGGETTI - 24 -
Associazioni qualificate ( qualified associations )
Associazione ternaria con classe d’associazione
conosce
1..*
LinguaggioDiProgrammazione
sale
Performance: data
*
Tiket
0..1
Programmatore
1..10
utilizza
assegnatoA
1..*
© Renato Conte - UML: CLASSI e OGGETTI - 25 -
Associazioni ricorsive (o riflessive)
sposata
moglie 0..1
Persona
Sviluppo
dataInizio
dataFine
ModuloSW
Qualificatore con attributi
capo
sviluppatoCon
Sales
Show
© Renato Conte - UML: CLASSI e OGGETTI - 26 -
Direzionalità nelle associazioni
– Le associazioni sono per default bi-direzionali, o con
“direzione non specificata” per i diagrammi ad alto
livello o essenziali.
– E’ possibile limitare la direzione di una associazione
aggiungendo una freccia ad una estremità della linea.
0..1
marito
1..*
NodoDiAlberoBinario
operaio
0..1
radice
figlio
dirige
© Renato Conte - UML: CLASSI e OGGETTI - 27 -
0..2
© Renato Conte - UML: CLASSI e OGGETTI - 28 -
Dipendenze ( dependency )
Una dipendenza mostra che una classe usa un’altra
classe. Un cambiamento nella classe indipendente
influirà l’altra.
Account
Dipendenze ( dependency )
...
accountHolder: String
interestRate: int
Money
addInterest()
setOverdraftLevel()
deposit(cash: Money)
© Renato Conte - UML: CLASSI e OGGETTI - 29 -
© Renato Conte - UML: CLASSI e OGGETTI - 30 -
Generalizzazione ( specializzazione, ereditarietà ) (1)
Una relazione tassonomica tra un elemento più generale ed uno più specifico
superclasse
Generalizzazione
classe generica
Parent
“Generalizzazione
implica sostituibilità”
Child
classe derivata
classe specializzata
© Renato Conte - UML: CLASSI e OGGETTI - 31 -
© Renato Conte - UML: CLASSI e OGGETTI - 32 -
Specializzazione (2)
Specializzazione: stili grafici
Shape
– Il discriminatore (discriminator) è una etichetta che
descrive il criterio utilizzato per la specializzazione.
Animal
Animal
Polygon
Spline
Ellipse
typeOfFood
habitat
Shape
AquaticAnimal
LandAnimal
Carnivore
Herbivore
Polygon
© Renato Conte - UML: CLASSI e OGGETTI - 33 -
© Renato Conte - UML: CLASSI e OGGETTI - 34 -
Discriminatori multipli
Ereditarietà multipla (1)
Animal
Vehicle
habitat
typeOfFood
AquaticCarnivore
venue
power
WindPowered
Vehicle
LandAnimal
venue
power
{overlapping}
AquaticAnimal
Spline
Ellipse
{overlapping}
MotorPowered
Vehicle
Land
Vehicle
Water
Vehicle
typeOfFood
AquaticHerbivore LandCarnivore
LandHerbivore
Truck
© Renato Conte - UML: CLASSI e OGGETTI - 35 -
Sailboat
© Renato Conte - UML: CLASSI e OGGETTI - 36 -
Classi astratte, tipi, interfacce
Ereditarietà multipla (2)
Abstract classes, Types, Interfaces
Animal
AquaticAnimal
«type»
SomeType
typeOfFood
habitat
LandAnimal
Carnivore
Herbivore
I tipi non hanno implementazione
Usati per i “built in types” come int.
Le interfacce hanno solo operazioni
«interface»
SomeFace
(Le interface Java possono avere anche attributi)
Le classi astratte non hanno istanze
AquaticCarnivore
AquaticHerbivore
LandCarnivore
LandHerbivore
(Le classi astratte pure C++ sono simili alle intefacce
Java)
{abstract}
SomeClass
Il nome della classe in corsivo qualifica la
classe astratta
© Renato Conte - UML: CLASSI e OGGETTI - 37 -
© Renato Conte - UML: CLASSI e OGGETTI - 38 -
Interfacce
Interfacce
• Una interfaccia (interface) descrive una porzione del
comportamento visibile di un insieme di oggetti
realizzazione
GestoreEvento
...
«interface»
ActionListener
actionPerformed()
...
• Una interfaccia è simile ad
una classe, solo che non
possiede attributi d’istanza e
metodi implementati
actionPerformed()
<<interface>>
Store
...
StoreX
-storeId: Integer
-POSlist: List
+create()
+login(UserName, Passwd)
+find(StoreId)
+getPOStotals(POSid)
+getPOStotals(POSid)
+updateStoreTotals(Id,Sales)
GestoreEvento
+updateStoreTotals(Id,Sales)
+get(Item)
+get(Item)
ActionListener
© Renato Conte - UML: CLASSI e OGGETTI - 39 -
© Renato Conte - UML: CLASSI e OGGETTI - 40 -
Interfacce: notazioni equivalenti
Interfacce: esempio
Machine
Cashier
«interface»
Person
Cashier
inputStream
{file must not be locked}
FileWriter
ATM
Machine
Withdraw( )
Deposit( )
File
dipendenza
Person
Employee
ATM
Cashier
Employee
FileReader
{file must exist}
outputStream
© Renato Conte - UML: CLASSI e OGGETTI - 41 -
Classi astratte ( notazioni equivaenti )
© Renato Conte - UML: CLASSI e OGGETTI - 42 -
Classi generiche ( template )
Shape
d: Dimension
T
font corsivo
Priority Queue
draw()
{Print Job}
Circle
{abstract}
insert(T)
Shape
remove(T)
Print Queue
Square
a realization
( part dependency and part generalization )
draw()
draw()
© Renato Conte - UML: CLASSI e OGGETTI - 43 -
© Renato Conte - UML: CLASSI e OGGETTI - 44 -
Classi generiche: diverse realizzazioni
FArray
0..k
Package
• Un package è un
meccanismo generale per
organizzare elementi in
gruppi omogenei.
T,
k:integer
bind (Address, 24)
AddressList
T
Package A
• Un packages può
contenere altri package.
• Dipendenze tra package
si indicano con una
freccia (vedi figura).
FArray<Point,22>
• Vi sono delle regole di
visibilità per i
componenti dei package.
Package B
© Renato Conte - UML: CLASSI e OGGETTI - 45 -
© Renato Conte - UML: CLASSI e OGGETTI - 46 -
Package: dipendenze
Package: dipendenze
Customer
Controller
Banking::CheckingAccount
«access»
« access»
« access»
«access»
Diagram
Elements
« access»
« access»
Banking
CheckingAccount
© Renato Conte - UML: CLASSI e OGGETTI - 47 -
Domain
Elements
Graphics
Core
© Renato Conte - UML: CLASSI e OGGETTI - 48 -
Visibilità tra package
Package
D
Compiler
Generalizzazione e dipendenze tra
package.
A
F
B
JavaCompiler
Java
© Renato Conte - UML: CLASSI e OGGETTI - 49 -
C
E
© Renato Conte - UML: CLASSI e OGGETTI - 50 -
Associazione e generalizzazione: commenti
– Le associazioni descrivono relazioni che esistono tra
istanze a run time.
• Quando si disegna un diagramma degli oggetti,
generato da un diagramma delle classi, ci deve essere
un’istanza per entrambe le classi congiunte dalla
associazione.
Aggregazione e Composizione
– Le generalizzazioni descrivono relazioni tra classi nei
diagrammi delle classi.
• Queste non appaiono affatto nei diagrammi degli
oggetti.
© Renato Conte - UML: CLASSI e OGGETTI - 51 -
© Renato Conte - UML: CLASSI e OGGETTI - 52 -
Aggregazione e Composizione
Aggregazione e Composizione (2)
Una speciale forma di associazione che specifica una relazione tra la parte
intera (aggregato) ed i suoi componenti (parti)
*
Polygon
Polygon
+vertex
3..∗
Contains
{ordered}
Point
composition
aggregation
GraphicsBundle
1
Graphics
Bundle
color
texture
density
-bundle
color
texture
Point
© Renato Conte - UML: CLASSI e OGGETTI - 53 -
Aggregazione (Aggregation)
*
1..*
Composizione (Composition)
– Una composizione è una forma forte di aggregazione
• Se l’aggregato viene distrutto, anche le sue parti
vengono distrutte
isPartOf
Itinerario
© Renato Conte - UML: CLASSI e OGGETTI - 54 -
Città
Building
Employee
*
Testo
*
Room
Employee
address: Address
1..*
Parole
© Renato Conte - UML: CLASSI e OGGETTI - 55 -
Due alternative per ”Address”
Address
street
municipality
region
country
postalCode
© Renato Conte - UML: CLASSI e OGGETTI - 56 -
Composizione: alcune notazioni equivalenti
Una gerarchia di aggregazioni (... o composizioni?)
Window
Veicolo
scrollbar[2]:Slider
title: Header
body: Panel
Window
Carrozzeria
Chassis
Window
2
scrollbar: Slider
1
title: Header
body: Panel
2
1
1
*
Slider
Header
Panel
Telaio
Motore
Transmissione
Ruote
1
© Renato Conte - UML: CLASSI e OGGETTI - 57 -
© Renato Conte - UML: CLASSI e OGGETTI - 58 -
Propagazione
Quando usare una aggregazione od una composizione
• Come regola generale, usa associazione è una
aggregazione/composizione se è vero che:
– si può stabilire
• le parti sono “pezzi” dell’aggregato
• oppure l’aggregato è “composto” di parti
– quando qualcosa che possiede o controlla l’aggregato,
allora controlla anche le sue parti
• Si tratta di una aggregazione se le parti possono esistere
anche se l’aggregato viene a mancare
• Si tratta di una composizione se le parti cessano di esistere
quando l’aggregato viene distrutto
– Un meccanismo dove un’operazione su un aggregato è
implementata facendo eseguire quella operazione sulle sue parti
– Allo stesso tempo, le proprietà delle parti si propagano spesso
indietro verso l’aggregato
– La propagazione sta all’aggregazione come l’ereditarietà sta
alla sua generalizzazione.
• La maggior differenza è:
– l’ereditarietà è un meccanismo implicito
– la propagazione deve essere programmata quando richiesto
Polygon
aggregato
© Renato Conte - UML: CLASSI e OGGETTI - 59 -
3..*
LineSegment
parti
© Renato Conte - UML: CLASSI e OGGETTI - 60 -
Composizione e classi annidate: differenze
CompositeClass
DeclaringClass
Diagramma degli oggetti
PartClass
NestedClass
© Renato Conte - UML: CLASSI e OGGETTI - 61 -
© Renato Conte - UML: CLASSI e OGGETTI - 62 -
Object Diagram or Instance Diagram
An object diagram is a graph of instances,
including objects and data values.
A static object diagram is an instance of a class
diagram; it shows a snapshot of the detailed
state of a system at a point in time.
Istanze o oggetti (1)
triangle
triangle: Polygon
triangle: Polygon
center : Point = (2,2)
vertices : Point* = ((0,0), (4, 0), (2,4))
borderColor : Color = black
fillColor : Color = white
The use of object diagrams is fairly limited,
mainly to show examples of data structures.
: Polygon
dal manuale di riferimento di UML v.1.5
© Renato Conte - UML: CLASSI e OGGETTI - 63 -
© Renato Conte - UML: CLASSI e OGGETTI - 64 -
Istanze o oggetti (2)
Istanze e ruoli
: Frame
(notazione standard?)
Person
: Frame
Parent
Istanza anonima attiva e passiva
attendee: Person
instanceName / ClassifierRoleName [: ClassifierName ]
Istanza con nome
steve: Person
shoeSize = 42
: Card
Charlie / Parent : Person
Charlie / Parent
Attributi con valore
multiObject
© Renato Conte - UML: CLASSI e OGGETTI - 65 -
© Renato Conte - UML: CLASSI e OGGETTI - 66 -
Diagramma degli oggetti ...
Diagramma degli oggetti
Un link è una istanza di una associazione (nello stesso modo in
cui affermiamo che un oggetto è una istanza di una classe)
Pat: Employee
primaV: Valutazione
pippo: Studente
voto = 30
nome = ”Pippo”
: Valutazione
Wayne: Employee
OOCorp: Company
OOCorp's Board
Ali: Employee
paperino : Studente
programmazione: Corso
: Valutazione
nome = ”Paperino”
: Valutazione
Carla: Employee
UML inc: Company
UML inc's Board
: Studente
: Valutazione
: Studente
: Valutazione
: Corso
Terry: Employee
© Renato Conte - UML: CLASSI e OGGETTI - 67 -
© Renato Conte - UML: CLASSI e OGGETTI - 68 -
... relativo diagramma delle classi
Studente
*
: Family
Corso
*
cognome
nome
Esempio diagramma degli oggetti con aggregazione
codice
Valutazione
data
voto
Joe : Person
husband
wife
© Renato Conte - UML: CLASSI e OGGETTI - 69 -
Jill : Person
© Renato Conte - UML: CLASSI e OGGETTI - 70 -
Persone e voli
pilot
Esempi riassuntivi
Flight_X
crew
Person
1..*
0..* FlightAttendant
© Renato Conte - UML: CLASSI e OGGETTI - 71 -
© Renato Conte - UML: CLASSI e OGGETTI - 72 -
Matrimonio
Organismo
Person
name
placeOfBirth
dateOfBirth
placeOfDeath
dateOfDeath
Organismo
Apparato
{Sistema}
child
Organo
Tessuto
Cellula
*
Animale
Woman
femalePartner
child
Man
0..1
* 0..1
child malePartner
*
*
Muscolare
Fegato
Vegetale
Digerente
Stomaco
Ghiandolare
{ AND }
Respiratorio
Union
placeOfMarriage
dateOfMarriage
dateOfDivorce
Cuore
Polmoni
0..1
parents
Circolatorio
© Renato Conte - UML: CLASSI e OGGETTI - 73 -
© Renato Conte - UML: CLASSI e OGGETTI - 74 -
Biblioteca
*
VolumeFisico
copiaCorrisp
*
*
Libro
titolo : string
1..*
1..*
HaInPrestito
HaScritto
dal : Data
HaPrenotato
*
HaLetto
Autore
dal : Data
al : Data
nome : string
HaInPrestito
Sistema universitario: registrazioni
0..1
*
HaLetto
HaPrenotato
Lettore
dal : Data
nome : string
prenotazione()
*
LettoreOccasionale
Abbonato
nTessera : int
© Renato Conte - UML: CLASSI e OGGETTI - 75 -
© Renato Conte - UML: CLASSI e OGGETTI - 76 -
Sistema di registrazione universitario (vari package)
Sistema universitario: use case
Register for courses
UniversityArtifacts
People
Student
Maintain curriculum
dipendenze
Database
Registrar
Select courses to teach
Professor
© Renato Conte - UML: CLASSI e OGGETTI - 77 -
© Renato Conte - UML: CLASSI e OGGETTI - 78 -
Sist. di registrazione universitario: Data Base
Sist. di registrazione universitario: People
DBCourse
<<UniversityArtifacts>>
People
1
Course
- name
- phone
- address
- IDNumber
+ sa ve C ourse ()
- name
- program
- location
+ addStudent()
+ addProfessor()
+ isFull() : return
Tra nsactio nMa nag er
+ sa ve C ourse ()
dipendenze
DBS tude nt
4
Student
Professor
- major
- gradYear
- tenureStaus
1
4
teaches
3..10
DBProfessor
© Renato Conte - UML: CLASSI e OGGETTI - 79 -
registersFor
© Renato Conte - UML: CLASSI e OGGETTI - 80 -
Sist. di registrazione universitario: UniversityArtifacts
Course
RegistrationForm
(from Interfaces)
+primary
4
+alternate
2
CourseMaintenanceForm
(from Interfaces)
1
1
+ verifyID()
+ untitled()
+ setID()
+ createCourse()
+ setCourseInfo()
...
CourseSelectionForm
- name : CString
- description : CString
- creditHours : short
- timeOfDay
- location
*
1..4
+ create()
+ getCourseInfo()
1
+ save()
+ getCourseNumber() 1..n
+ getName()
+ getDescription()
+ getTimeOfDay()
...
(from Interfaces)
*
Add/DropForm
(from Interfaces)
Sistema bancomat (ATM)
1
Curriculum
1
NewCourseForm
registersFor
1..*
1
4
(from Interfaces)
1
CourseOffering
+ Set name()
+ Set description()
+ Set time and day()
...
- ddaysOffered
- timeOfDay
- location
3..10
teaches
4
RegistrationUser
(from People)
- name
- phone
- address
...
+ addStudent()
...
© Renato Conte - UML: CLASSI e OGGETTI - 81 -
Use case sistema bancomat (ATM)
© Renato Conte - UML: CLASSI e OGGETTI - 82 -
- alto livello -
Banking System
gestisce
<<include>>
«entity»
Bank
«entity»
ATM info
gestisce
ha
TrasferimentoFondi
Validazione PIN
identifica
1..*
<<include>>
*
«entity»
Cliente
Cliente ATM
ListaMovimenti
o Saldo
1..* possiede
possiede
<<include>>
1..*
Startup
0..*
«entity»
ATM card
PrelievoContanti
Shutdown
«entity»
Transazione
*
1..*
accede a
*
modifica
1..* «entity»
Conto corrente
1,2
operatore ATM
Validaz.PIN
Aggiungi Contante
ATM Banking system
© Renato Conte - UML: CLASSI e OGGETTI - 83 -
Prelievo
Estratto conto
Trasfer. conto
© Renato Conte - UML: CLASSI e OGGETTI - 84 -
Dettagli per la classe ATM card (soli attributi )
«entity»
ATM card
cardID: String
PIN: String
dataEmissione: date
scadenza: date
limitePrelievo: integer
stato: statoV {attiva, smarrita, ...}
Struttura dati “Grafo”
© Renato Conte - UML: CLASSI e OGGETTI - 85 -
Studio della struttura dati “Grafo” (1)
© Renato Conte - UML: CLASSI e OGGETTI - 86 -
Studio della struttura dati “Grafo” (2)
A
E
D
Grafo: una soluzione fisica
A
&C
B
&A
C
F
Grafo
ListaDiAdiacenza
B
C
ListaDiAdiacenza
Grafo: schema dal punto di vista logico
*
Vertice
*
Arco *
0..1
*
CellaVertice
D
&C
&F
Grafo
*
E
ParteDa
ArrivaA
0..1
CellaArco
*
F
© Renato Conte - UML: CLASSI e OGGETTI - 87 -
&B
&D
© Renato Conte - UML: CLASSI e OGGETTI - 88 -
Design pattern iteratore (da un reverse engineering)
Item
(List< Employee* >)
Iterator
Item
List
Item
Item
ReverseListIterator
ListIterator
Design pattern iteratore
Item
tratto dal testo
“Design Patterns”: Gamma, Helm, johnson, Vlissides
SkipList
(Iterator< Employee* >)
Item
Item
SkipListIterator
ListTraverser
(ListTraverser<
Employee* >)
da un reverse engineering
ricavato dal codice associato al testo
Item
AbstractList
Item
IteratorPtr
1
-_iterator
1
bool
Item
(ListIterator< Item >)
PrintNEmployees
-_iterator
Item
Coord
FilteringListTraverser
© Renato Conte - UML: CLASSI e OGGETTI - 89 -
Design pattern iteratore (particolare)
Iterator
Design pattern iteratore (codici C++)
Item
Iterator() : Iterator
First() : void
Next() : void
IsDone() : bool
CurrentItem() : Item
Item
ListIterator
_current : long
(Iterator< Employee* >) ListIterator(aList : const List*) : ListIterator
First() : void
Next() : void
IsDone() : bool
CurrentItem() : Item
Item
ReverseListIterator
Item
ReverseListIterator(aList : const List*) : ReverseListIterator
First() : void
Next() : void
IsDone() : bool
CurrentItem() : Item
SkipListIterator
© Renato Conte - UML: CLASSI e OGGETTI - 90 -
Item
SkipListIterator(aList : const List*) : SkipListIterator
First() : void
Next() : void
IsDone() : bool
CurrentItem() : Item
© Renato Conte - UML: CLASSI e OGGETTI - 91 -
template <class Item>
class ListIterator : public Iterator<Item>
{
public:
ListIterator(const List<Item>* aList);
virtual void First();
virtual void Next();
virtual bool IsDone() const;
virtual Item CurrentItem() const;
template <class Item>
class Iterator
private:
{
const List<Item>* _list;
public:
int _current;
virtual void First() = 0;
};
virtual void Next() = 0;
virtual bool IsDone() const = 0;
virtual Item CurrentItem() const = 0;
protected:
Iterator();
};
© Renato Conte - UML: CLASSI e OGGETTI - 92 -
Construct
Associazione
Association
Composizione e
Aggregazione
Composition and
Aggregation
Riassunto delle relazioni
Annidamento
Nesting
Generalizzazione
Generalization
Dependency
Realizzazione
Una relazione tra due o più classificatori che
implica una connessione tra le loro istanze
Una speciale forma di associazione
che specifica una relazione tra la
parte intera (aggregato) ed i suoi
componenti (parti)
Una relazione tra due o più classi: all’interno di
una classe vengono dichiarate altre classi
Una relazione tassonomica tra un elemento
più generale ed uno più specifico
Una relazione tra una specificazione e
la sua implementazione
© Renato Conte - UML: CLASSI e OGGETTI - 93 -
Bibliografia
sintassi
Una relazione tra due elementi, nei quali il
cambiamento nell’elemento indipendente
può influire nell’elemento dipendente
Dipendenza
Realization
descrizione
© Renato Conte - UML: CLASSI e OGGETTI - 94 -
Riferimenti nel Web
Grady Booch, James Rumbaugh, Ivar Jacobson.
The Unified Modeling Language User Guide, Addison
Wesley , (1999).
Grady Booch, James Rumbaugh, Ivar Jacobson
The Unified Modeling Language Reference Manual ,
Addison Wesley, (1999).
Ivar Jacobson, Grady Booch, James Rumbaugh
The Unified Software Development Process,
Addison Wesley, (1999).
© Renato Conte - UML: CLASSI e OGGETTI - 95 -
OMG UML - Reference manual UML 1.5
www.omg
.org/uml
uml//
www.omg.org/
UML: tool, demo,doc
www.rational.com
UML: Tutorial e link:
www.kobryn.com
© Renato Conte - UML: CLASSI e OGGETTI - 96 -
Scarica

UML Diagrammi delle classi Diagrammi degli oggetti