Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
© Renato Conte - UML: CLASSI e OGGETTI - 1/100 © Renato Conte - UML: CLASSI e OGGETTI - 2/100
Analysis Component
Analysis
Un diagramma delle classi è un grafo composto da Model Diagrams
Incl. subsystems and
packages
classi e relazioni. Design Deployment
Model Diagrams
Design
Sequence
Deployment Diagrams
Model
Un diagramma degli oggetti è un grafo composto da Collaboration
UML 2:
Communication
istanze di classi (oggetti) e relazioni; esso è una Implementation
Implem.
Model
Diagrams Diagrams
© Renato Conte - UML: CLASSI e OGGETTI - 3/100 © Renato Conte - UML: CLASSI e OGGETTI - 4/100
Sintassi di una classe ( esempi 1)
Classe
© Renato Conte - UML: CLASSI e OGGETTI - 5/100 © Renato Conte - UML: CLASSI e OGGETTI - 6/100
© Renato Conte - UML: CLASSI e OGGETTI - 7/100 © Renato Conte - UML: CLASSI e OGGETTI - 8/100
Livello di dettaglio nei diagrammi Sintassi membri ( in diagrammi espansi o reali )
Attributi
Diagrammi [visibility] name [multiplicity] [: type]
ad alto Diagrammi
livello [= initial-value] [{property-string}]
espansi
changeable, addOnly, frozen
default
© Renato Conte - UML: CLASSI e OGGETTI - 9/100 © Renato Conte - UML: CLASSI e OGGETTI - 10/100
+ public visibility
/ Derived
- private visibility
# protected visibility $ Static (non standard
~ package visibility preferibile la sottolineatura )
© Renato Conte - UML: CLASSI e OGGETTI - 11/100 © Renato Conte - UML: CLASSI e OGGETTI - 12/100
class-scope - instance-scope Principali relazioni tra le classi
© Renato Conte - UML: CLASSI e OGGETTI - 13/100 © Renato Conte - UML: CLASSI e OGGETTI - 14/100
Associazioni
molteplicità
molteplicità
ruoli
© Renato Conte - UML: CLASSI e OGGETTI - 15/100 © Renato Conte - UML: CLASSI e OGGETTI - 16/100
Molteplicità nelle associazioni (1) Molteplicità nelle associazioni (2)
* worksFor
Employee Company
© Renato Conte - UML: CLASSI e OGGETTI - 17/100 © Renato Conte - UML: CLASSI e OGGETTI - 18/100
Employee * worksFor
Company
Ladri&Affini
Pippo P&P
Investigazioni S.p.a
Topolino
relazione parziale (zero sottinteso) sottinteso 1: relazione totale
© Renato Conte - UML: CLASSI e OGGETTI - 19/100 © Renato Conte - UML: CLASSI e OGGETTI - 20/100
Molti-a-molti ( Many-to-many ) One-to-one
• Una segretaria può lavorare per molti dirigenti • For each company, there is exactly one board of
• Un dirigente può avere molte segretarie directors
• Alcuni dirigenti potrebbero avere nessuna segretaria. • A board is the board of only one company
• Una segretaria deve per forza avere almeno un • A company must always have a board
dirigente • A board must always be of some company
relazione totale
relazione parziale
Company BoardOfDirector
Secretary * 1.. *
supervisor
Manager
© Renato Conte - UML: CLASSI e OGGETTI - 21/100 © Renato Conte - UML: CLASSI e OGGETTI - 22/100
Passeggero Volo
– A booking is always for exactly one passenger
cognome numero
• no booking with zero passengers nome
© Renato Conte - UML: CLASSI e OGGETTI - 23/100 © Renato Conte - UML: CLASSI e OGGETTI - 24/100
Classe d’associazione ( association class ) Associazioni qualificate ( qualified associations )
Passeggero Volo
1..250 0..10
cognome numero
nome
Prenotazione
dataPrenotazione
costo
qualificatori
1..N 64
Passeggero Prenotazione Volo
0..10 1..250
cognome numero
dataPrenotazione
nome
costo
© Renato Conte - UML: CLASSI e OGGETTI - 25/100 © Renato Conte - UML: CLASSI e OGGETTI - 26/100
LinguaggioDiProgrammazione
moglie 0..1
*
sviluppatoCon
utilizza 0..1
1..10 Sviluppo Persona
Programmatore capo marito
dataInizio
dataFine
assegnatoA 1..* operaio
1..*
ModuloSW dirige
© Renato Conte - UML: CLASSI e OGGETTI - 27/100 © Renato Conte - UML: CLASSI e OGGETTI - 28/100
Navigabilità nelle associazioni
– Le associazioni sono per default con “direzione non
specificata” per i diagrammi ad alto livello o essenziali.
– E’ possibile indicare la direzione di una associazione
(navigabilità) aggiungendo una freccia alla estremità
della linea.
Dipendenze
– Se si vuol indicare l’impossibilita’ della navigazione in dependency
una direzione si inserisce un simbolo di blocco
NodoDiAlberoBinario radice
0..1
figlio 0..2
haSottoalbero
© Renato Conte - UML: CLASSI e OGGETTI - 29/100 © Renato Conte - UML: CLASSI e OGGETTI - 30/100
Dipendenze
Una dipendenza mostra che una classe usa
un’altra classe. Un cambiamento nella classe
indipendente influirà l’altra.
Account
...
accountHolder: String Generalizzazione
interestRate: int
Money
addInterest()
setOverdraftLevel()
deposit(cash: Money)
© Renato Conte - UML: CLASSI e OGGETTI - 31/100 © Renato Conte - UML: CLASSI e OGGETTI - 32/100
Generalizzazione ( specializzazione, ereditarietà )
(1) Specializzazione (2)
Una relazione tassonomica tra un elemento più generale ed uno più specifico
Il discriminatore (discriminator) è una etichetta che
descrive il criterio utilizzato per la specializzazione.
superclasse
Parent
classe generica
Animal Animal
“generalizzazione implica
sostituibilità” IS-A typeOfFood
habitat
Child
AquaticAnimal LandAnimal Carnivore Herbivore
classe derivata
classe specializzata
© Renato Conte - UML: CLASSI e OGGETTI - 33/100 © Renato Conte - UML: CLASSI e OGGETTI - 34/100
Shape Animal
habitat
typeOfFood typeOfFood
Shape
© Renato Conte - UML: CLASSI e OGGETTI - 35/100 © Renato Conte - UML: CLASSI e OGGETTI - 36/100
Ereditarietà multipla (1) Ereditarietà multipla (2)
Animal
Vehicle
habitat typeOfFood
power venue
venue
power
{overlapping} {overlapping}
© Renato Conte - UML: CLASSI e OGGETTI - 37/100 © Renato Conte - UML: CLASSI e OGGETTI - 38/100
actionPerformed()
Le classi astratte non hanno istanze ... ...
SomeClass (Le classi astratte pure C++ sono simili alle actionPerformed()
{abstract} interfacce Java) ... realizzazione
Il nome della classe in corsivo «abstract»
SomeClass
qualifica la classe astratta
© Renato Conte - UML: CLASSI e OGGETTI - 39/100 © Renato Conte - UML: CLASSI e OGGETTI - 40/100
Interfacce Interfacce: notazioni equivalenti
• Una interfaccia descrive una porzione del Machine
comportamento visibile di un insieme di oggetti
Cashier
realizzazione
© Renato Conte - UML: CLASSI e OGGETTI - 41/100 © Renato Conte - UML: CLASSI e OGGETTI - 42/100
inputStream
{ file must exist }
TheftAlarm ISensor ProximitySensor FileReader
realizzazione
© Renato Conte - UML: CLASSI e OGGETTI - 43/100 © Renato Conte - UML: CLASSI e OGGETTI - 44/100
Classi astratte ( notazioni equivalenti ) Classi generiche ( template )
font corsivo
Shape
T
d: Dimension
Priority Queue
draw() font corsivo per il metodo astratto
{Print Job}
Shape Print Queue
insert(T)
{abstract}
remove(T)
Circle Square <<abstract>>
Shape
a realization
( part dependency and part generalization )
draw() draw()
© Renato Conte - UML: CLASSI e OGGETTI - 45/100 © Renato Conte - UML: CLASSI e OGGETTI - 46/100
© Renato Conte - UML: CLASSI e OGGETTI - 47/100 © Renato Conte - UML: CLASSI e OGGETTI - 48/100
Package: dipendenze Package: dipendenze
Customer
Controller
Banking::CheckingAccount
«access» «access»
«access» Diagram
«access» Elements
«access»
«access»
Banking
Domain Graphics
CheckingAccount Elements Core
© Renato Conte - UML: CLASSI e OGGETTI - 49/100 © Renato Conte - UML: CLASSI e OGGETTI - 50/100
D
Generalizzazione e dipendenze tra package.
Compiler
A
F
B
C E
JavaCompiler Java
© Renato Conte - UML: CLASSI e OGGETTI - 51/100 © Renato Conte - UML: CLASSI e OGGETTI - 52/100
Associazione e generalizzazione: commenti
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)
+ vertex
* Contains 3..∗
Polygon Polygon Point
{ordered}
composition
aggregation
GraphicsBundle
1
Graphics
-bundle color
Bundle texture
color density
Point
texture
© Renato Conte - UML: CLASSI e OGGETTI - 55/100 © Renato Conte - UML: CLASSI e OGGETTI - 56/100
Aggregazione (Aggregation)
Composizione (Composition)
© Renato Conte - UML: CLASSI e OGGETTI - 57/100 © Renato Conte - UML: CLASSI e OGGETTI - 58/100
Window Veicolo
scrollbar[2]:Slider
title: Header
body: Panel
Window
Chassis Carrozzeria
Window
2
scrollbar: Slider 2 1 1
*
1 Slider Header Panel Telaio Motore Transmissione Ruote
title: Header
1
body: Panel
© Renato Conte - UML: CLASSI e OGGETTI - 59/100 © Renato Conte - UML: CLASSI e OGGETTI - 60/100
Propagazione
Quando usare una aggregazione od una composizione
– Un meccanismo dove un’operazione su un aggregato è implementata
• Come regola generale, un' associazione è una facendo eseguire quella operazione sulle sue parti
aggregazione/composizione se è vero che: – Allo stesso tempo, le proprietà delle parti si propagano spesso
indietro verso l’aggregato
– si può stabilire
– La propagazione sta all’aggregazione come l’ereditarietà sta alla sua
• le parti sono “pezzi” dell’aggregato generalizzazione.
• oppure l’aggregato è “composto” di parti • La maggior differenza è:
– quando qualcosa che possiede o controlla – l’ereditarietà è un meccanismo implicito
l’aggregato, allora controlla anche le sue parti – la propagazione deve essere programmata quando richiesta
© Renato Conte - UML: CLASSI e OGGETTI - 61/100 © Renato Conte - UML: CLASSI e OGGETTI - 62/100
CompositeClass DeclaringClass
PartClass NestedClass
© Renato Conte - UML: CLASSI e OGGETTI - 63/100 © Renato Conte - UML: CLASSI e OGGETTI - 64/100
Object Diagram or Instance Diagram Istanze o oggetti (1)
© Renato Conte - UML: CLASSI e OGGETTI - 65/100 © Renato Conte - UML: CLASSI e OGGETTI - 66/100
Person
: Frame : Frame
Parent
steve: Person
© Renato Conte - UML: CLASSI e OGGETTI - 67/100 © Renato Conte - UML: CLASSI e OGGETTI - 68/100
Diagramma degli oggetti Diagramma degli oggetti ...
Un link è una istanza di una associazione (nello stesso modo
primaV: Valutazione
in cui affermiamo che un oggetto è una istanza di una
pippo: Studente
classe) Pat: Employee voto = 30
nome = ”Pippo”
: Valutazione
Wayne: Employee
OOCorp: Company OOCorp's Board programmazione: Corso
paperino : Studente
: Valutazione
Carla: Employee UML inc: Company UML inc's Board : Studente : Valutazione : Corso
: Studente : Valutazione
Terry: Employee
© Renato Conte - UML: CLASSI e OGGETTI - 69/100 © Renato Conte - UML: CLASSI e OGGETTI - 70/100
... relativo diagramma delle classi Esempio diagramma degli oggetti con aggregazione
: Family
Studente Corso
* *
cognome codice
nome
Valutazione
data
voto
husband wife
Joe : Person Jill : Person
© Renato Conte - UML: CLASSI e OGGETTI - 71/100 © Renato Conte - UML: CLASSI e OGGETTI - 72/100
Persone e voli
pilota
Esempi riassuntivi equipaggio
Volo Persona
1..*
0..* assistenteDiVolo
© Renato Conte - UML: CLASSI e OGGETTI - 73/100 © Renato Conte - UML: CLASSI e OGGETTI - 74/100
Association - Multiplicity
Alberi binari
• A cricket team has 11 players. One of them is the captain.
• A player can play only for one Team. NodoDiAlberoBinario 0..1
• The captain leads the team members. radice
figlio 0..2
Captain
Team
Member 1
Player 0..1 Team
10
11 member of 1 0..1 radice
1
Captain NodoDiAlberoBinario
0..1 radice
Leads
figlioDestro 0..1 0..1 figlioSinistro
© Renato Conte - UML: CLASSI e OGGETTI - 75/100 © Renato Conte - UML: CLASSI e OGGETTI - 76/100
Matrimonio Person Agenda
name
placeOfBirth Address Book
dateOfBirth - Name: char
placeOfDeath child *
+ Add Contact() : void * Address Book Group
dateOfDeath * + Add Group() : void
+ Sort() : void + Add Contact() : void
+ Search() : void * + Add Group() : void
0..1
1..* *
Woman Man
femalePartner
*
child 0..1 childmalePartner
* 0..1
Contact
- Name: char
{ AND } - Email Address: char
- Cell Phone: int
* * - Fax: int
- Address Line 1: char
Union - Address Line 2: char
0..1 - City/Town/Suburb: char *
placeOfMarriage - Post Code: char
parents - State/Province: char
dateOfMarriage - Country: char
dateOfDivorce
© Renato Conte - UML: CLASSI e OGGETTI - 77/100 © Renato Conte - UML: CLASSI e OGGETTI - 78/100
Biblioteca
Organismo
copiaCorrisp Libro
* VolumeFisico * titolo : string
Organismo Apparato
* 1..* 1..*
{Sistema} Organo Tessuto Cellula
HaInPrestito
dal : Data
HaScritto
Animale
HaPrenotato *
Muscolare HaLetto Autore
Vegetale Fegato dal : Data nome : string
al : Data
HaInPrestito
Digerente Stomaco Ghiandolare 0..1
Lettore HaPrenotato
* nome : string
dal : Data
HaLetto
Cuore Polmoni prenotazione()
Respiratorio
*
Circolatorio Abbonato
LettoreOccasionale
nTessera : int
© Renato Conte - UML: CLASSI e OGGETTI - 79/100 © Renato Conte - UML: CLASSI e OGGETTI - 80/100
Sistema universitario: use case
registrazioni
Maintain curriculum
Registrar
© Renato Conte - UML: CLASSI e OGGETTI - 81/100 © Renato Conte - UML: CLASSI e OGGETTI - 82/100
1 + saveCourse()
UniversityArtifacts People
TransactionManager
DBStudent
+ saveCourse()
dipendenze
Database
dipendenze
DBProfessor
© Renato Conte - UML: CLASSI e OGGETTI - 83/100 © Renato Conte - UML: CLASSI e OGGETTI - 84/100
Sist. di registrazione universitario: People Sist. di registrazione universitario: UniversityArtifacts
Course
RegistrationForm - name : CString CourseSelectionForm
(from Interfaces) - description : CString 1..4 * (from Interfaces)
+primary 4 - creditHours : short
<<UniversityArtifacts>>
People - timeOfDay
+alternate
- name Course - location
- phone 2
i metodi + create()
- address - name CourseMaintenanceForm 1 *
get() e set() - program + getCourseInfo() 1 Add/DropForm
- IDNumber (from Interfaces) 1 + save() (from Interfaces)
sugli attributi - location
+ getCourseNumber() 1..n
sono impliciti + verifyID() + getName()
+ addStudent() + untitled() + getDescription()
+ addProfessor() + setID() + getTimeOfDay()
+ isFull() : return + createCourse() ... 1
+ setCourseInfo()
Curriculum
4 4 ... 1
?
Student Professor
- major 1 teaches RegistrationUser
3..10
- tenureStaus registersFor (from People)
- gradYear NewCourseForm 1 1..*
0..4 - name
(from Interfaces) 1
- phone
CourseOffering teaches
3..10 + Set name() - ddaysOffered
- address
1..4 ...
registersFor + Set description() - timeOfDay
+ Set time and day() - location
...
+ addStudent()
...
© Renato Conte - UML: CLASSI e OGGETTI - 85/100 © Renato Conte - UML: CLASSI e OGGETTI - 86/100
© Renato Conte - UML: CLASSI e OGGETTI - 89/100 © Renato Conte - UML: CLASSI e OGGETTI - 90/100
Studio della struttura dati “Grafo” (1) Studio della struttura dati “Grafo” (2)
C Grafo ListaDiAdiacenza
F B &A
B
ListaDiAdiacenza C
© Renato Conte - UML: CLASSI e OGGETTI - 91/100 © Renato Conte - UML: CLASSI e OGGETTI - 92/100
Design pattern iteratore (da un reverse engineering)
Item
(List< Employee* >)
Iterator
Item
List
Item
ListIterator
ReverseListIterator
SkipListIterator ListTraverser
(ListTraverser<
Employee* >)
FilteringListTraverser
© Renato Conte - UML: CLASSI e OGGETTI - 93/100 © Renato Conte - UML: CLASSI e OGGETTI - 94/100
Associazione
Una relazione tra due o più classificatori che
Association implica una connessione tra le loro istanze
Composizione e
Una speciale forma di associazione che
Aggregazione
specifica una relazione tra la parte intera
Composition and (aggregato) ed i suoi componenti (parti)
Aggregation
Riassunto delle relazioni Annidamento Una relazione tra due o più classi: all’interno
di una classe vengono dichiarate altre classi
Nesting
Generalizzazione Una relazione tassonomica tra un elemento
più generale ed uno più specifico
Generalization
Una relazione tra due elementi, nei quali il
Dipendenza
cambiamento nell’elemento indipendente può influire
Dependency nell’elemento dipendente
© Renato Conte - UML: CLASSI e OGGETTI - 99/100 © Renato Conte - UML: CLASSI e OGGETTI - 100/100