Sei sulla pagina 1di 25

Università di Padova Diagramma delle classi

Facoltà di Scienze MM.FF.NN


Informatica - anno 2009-10
E’ un diagramma che illustra una collezione di elementi
dichiarativi (statici) di un modello come classi e tipi, assieme ai loro
Corso di Ingegneria del Software
contenuti e alle loro relazioni.

Diagrammi delle classi Serve per individuare gli elementi di un sistema

Class diagrams Costruito, perfezionato ed utilizzato durante tutto il processo di


sviluppo del sistema

Diagrammi degli oggetti Scopo:


• individua e specifica i concetti del sistema
Object diagrams • specifica le collaborazioni
• specifica gli schemi logici dei D.B.

Utilizzato dagli analisti, progettisti e dai programmatori

© Renato Conte - UML: CLASSI e OGGETTI - 1/100 © Renato Conte - UML: CLASSI e OGGETTI - 2/100

Fasi, modelli e diagrammi Use Case


Diagrams
Diagrammi delle classi e degli oggetti Requirements Use Case
Model Class Object
Diagrams Diagrams

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

istanza del diagramma delle classi. Statechart UML 2: State


Diagrams Machine Diagram.
Test Test
Model
Activity
Diagrams

© Renato Conte - UML: CLASSI e OGGETTI - 3/100 © Renato Conte - UML: CLASSI e OGGETTI - 4/100
Sintassi di una classe ( esempi 1)
Classe

“A class is the descriptor Account Nome della classe


for a set of objects with balance: Money
accountHolder: String
similar structure, behavior, interestRate: int Attributi
and relationships”.
setInterest()
setOverdraftLevel()
Operazioni
dal manuale di riferimento di UML v.1.5

© Renato Conte - UML: CLASSI e OGGETTI - 5/100 © Renato Conte - UML: CLASSI e OGGETTI - 6/100

stereotype «entity» ( esempi 3)


Account
{ abstract, Classe attiva
author= Joe, Boolean
( esempi 2) status= tested }
stato: enum {false,true} Account
# balance: Money
# accountHolder: String
- interestRate: int = 7
- lastAccountID: String
marcatori Customer
- setInterest(d: Date)
di visibilità + update() name: String
# setOverdraftLevel() title: String
+ getBalance():Money constraints age: Integer
isMale: Boolean
Exceptions
accessViolationException { title = if isMale then ‘Mr.’ else ‘Ms.’ endif}
opzionali { age >= 18 and age < 66 }
Responsibilities { name.size < 100 }
definite dall’utente -- Keep track of balance

© 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

Operazioni ( implementate da metodi, ... )


[visibility] name [(parameter-list)] [: return-type]
[{property-string}]
Diagrammi
essenziali Diagrammi parameter-list
leaf, query, sequential, guarded, concurrent
reali [direction] name : type [= default-value]
Astrazione tecnologica Dettagli tecnologici
e/o e/o direction
implementativa implementativi in, out, inout.

default
© Renato Conte - UML: CLASSI e OGGETTI - 9/100 © Renato Conte - UML: CLASSI e OGGETTI - 10/100

Marcatori di visibilità ...altri marcatori

+ public visibility
/ Derived
- private visibility
# protected visibility $ Static (non standard
~ package visibility preferibile la sottolineatura )

* Abstract (non standard )

© 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

ATM card • Associazioni (associations) sono relazioni strutturali

• Generalizzazioni (generalizations) sono relazioni di


cardID: integer
ereditarietà.
UltimaCardID: integer = 0
class-scope PIN: String • Composizione e Aggregazione (composition and
(static) dataEmissione: date
aggregation) speciali relazioni strutturali
scadenza: date
limitePrelievo: integer • Dipendenza (dependency)
stato: statoV {attiva, smarrita, ...}
• Realizzazioni (realizations) una relazione tra una
specificazione e la sua implementazione

© Renato Conte - UML: CLASSI e OGGETTI - 13/100 © Renato Conte - UML: CLASSI e OGGETTI - 14/100

Associazioni

molteplicità
molteplicità

Associazioni direzione e nome

1 Lavora per * Persona


Società datoreDiLavoro
impiegato

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

lower-bound .. upper-bound Secretary * 1..** Manager


supervisor

1..4 * ClasseB Company BoardOfDirectors


ClasseA
Office 0..1 allocatedTo * Employee
Illimitato:
da zero a “molti”
Person 0,3..8 ** BoardOfDirectors
boardMember

© Renato Conte - UML: CLASSI e OGGETTI - 17/100 © Renato Conte - UML: CLASSI e OGGETTI - 18/100

Molti-a-uno ( Many-to-one ) Molti-a-uno ( significato con istanza )

• Una società ha molti dipendenti


• Un dipendente può lavorare solo per una società. Impiegato * LavoraPer
Società
• Una società può avere zero dipendenti
• Non è possibile per un dipendente non “dipendere”
Impiegato
da una società Società
GambaDiLegno

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

Example: Flights and bookings Voli e prenotazioni: soluzione ?

Passeggero Volo
– A booking is always for exactly one passenger
cognome numero
• no booking with zero passengers nome

• a booking could never involve more than one


passenger.
?
– A Passenger can have ten Bookings
• a passenger could have no bookings at all
Prenotazione
– A Flight can have 250 Bookings dataPrenotazione
costo
– A booking have a cost and a date

© 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

Associazione ternaria con classe d’associazione


Associazioni ricorsive (o riflessive)
conosce 1..* sposata

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

Specializzazione: stili grafici Discriminatori multipli

Shape Animal

habitat

Polygon Ellipse Spline AquaticAnimal LandAnimal

typeOfFood typeOfFood
Shape

AquaticCarnivore AquaticHerbivore LandCarnivore LandHerbivore

Polygon Ellipse Spline

© 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}

WindPowered MotorPowered Land Water AquaticAnimal LandAnimal Carnivore Herbivore


Vehicle Vehicle Vehicle Vehicle

AquaticCarnivore AquaticHerbivore LandCarnivore LandHerbivore


Truck Sailboat

© Renato Conte - UML: CLASSI e OGGETTI - 37/100 © Renato Conte - UML: CLASSI e OGGETTI - 38/100

Classi astratte, tipi, interfacce


Abstract classes, Types, Interfaces Interfacce
I tipi non hanno implementazione
«type»
SomeType Usati per i “built in types” , per es. come int.
GestoreEvento
ActionListener

«interface» Stabiliscono un contratto


SomeFace (un obbligo) col cliente
Le interfacce hanno solo dichiarazioni pubbliche «interface»
GestoreEvento ActionListener

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

• Una interfaccia è simile ad


StoreX
una classe, solo che non «interface»
ATM
Person Machine
possiede attributi e metodi -storeId: Integer
Cashier

implementati -POSlist: List Withdraw( )


Deposit( )
+create()
<<interface>> Person
+login(UserName, Passwd)
Store +find(StoreId) Employee ATM
Cashier
+getPOStotals(POSid)
+getPOStotals(POSid) +updateStoreTotals(Id,Sales)
+updateStoreTotals(Id,Sales) +get(Item)
+get(Item) Employee

realizzazione
© Renato Conte - UML: CLASSI e OGGETTI - 41/100 © Renato Conte - UML: CLASSI e OGGETTI - 42/100

Interfacce: esempio con dipendenze Interfacce: esempio con dipendenze

inputStream
{ file must exist }
TheftAlarm ISensor ProximitySensor FileReader

dipendenza d’uso realizzazione ClassFile dipendenza


socket

realizzazione

TheftAlarm ProximitySensor FileWriter


outputStream { file must not be locked }
ISensor

© 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

Classi generiche: diverse realizzazioni Package


• Un package è un meccanismo generale
per organizzare elementi in gruppi
T,
omogenei.
FArray k:integer Package A
• Un packages può contenere altri
« bind » (T→Address, k→24) package.
AddressList
T [0..k] • Dipendenze tra package si indicano con
una freccia (vedi figura).
• Vi sono delle regole di visibilità per i
Package B
FArray<Point,22> componenti dei package.

© 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

Package Visibilità tra package

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

– Le associazioni descrivono relazioni che esistono


tra istanze a run time.
• Quando si disegna un diagramma degli oggetti, Aggregazione
generato da un diagramma delle classi, ci deve
essere un’istanza per entrambe le classi e
congiunte dalla associazione. 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 - 53/100 © Renato Conte - UML: CLASSI e OGGETTI - 54/100

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)

isPartOf – Una composizione è una forma forte di aggregazione


• Se l’aggregato viene distrutto, anche le sue parti
vengono distrutte
* 1..*
Itinerario Città Building 1..* Room

Employee Employee Address


address: Address street
* 1..*
municipality
region
Testo Parole country
Due alternative per ”Address” postalCode

© Renato Conte - UML: CLASSI e OGGETTI - 57/100 © Renato Conte - UML: CLASSI e OGGETTI - 58/100

Composizione: alcune notazioni equivalenti Una gerarchia di aggregazioni (... o composizioni?)

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

• Si tratta di una aggregazione se le parti possono


3..*
esistere anche se l’aggregato viene a mancare Polygon LineSegment
• Si tratta di una composizione se le parti cessano di
esistere quando l’aggregato viene distrutto aggregato parti

© Renato Conte - UML: CLASSI e OGGETTI - 61/100 © Renato Conte - UML: CLASSI e OGGETTI - 62/100

Composizione e classi annidate: differenze

CompositeClass DeclaringClass

Diagramma degli oggetti

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)

An object diagram is a graph of instances, including


objects and data values. triangle
triangle: Polygon
center : Point = (2,2)
A static object diagram is an instance of a class vertices : Point* = ((0,0), (4, 0), (2,4))
diagram; it shows a snapshot of the detailed borderColor : Color = black
fillColor : Color = white
state of a system at a point in time. triangle: Polygon

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 - 65/100 © Renato Conte - UML: CLASSI e OGGETTI - 66/100

Istanze o oggetti (2) Istanze e ruoli

Person
: Frame : Frame
Parent

attendee: Person Istanza anonima attiva e passiva

Istanza con nome instanceName / ClassifierRoleName [: ClassifierName ]

steve: Person

shoeSize = 42 Charlie / Parent Charlie / Parent : Person


: Card
Attributi con valore
multiObject

© 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

Ali: Employee nome = ”Paperino”


: 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

Register for courses

Sistema universitario: Student

registrazioni
Maintain curriculum
Registrar

Select courses to teach


Professor

© Renato Conte - UML: CLASSI e OGGETTI - 81/100 © Renato Conte - UML: CLASSI e OGGETTI - 82/100

Sistema di registrazione universitario Sist. di registrazione universitario: Data Base


(vari package)
DBCourse

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

Sistema bancomat (ATM)

© Renato Conte - UML: CLASSI e OGGETTI - 87/100


Banking System Dettagli per la classe ATM card
«entity» «entity»
gestisce Bank
gestisce
ATM info (soli attributi )
ha identifica
«entity»
1..* * ATM card
«entity» «entity»
Cliente Transazione cardID: String
possiede 1..* possiede PIN: String
* dataEmissione: date
1..* 0..* 1..* modifica scadenza: date
«entity» limitePrelievo: integer
accede a 1..* «entity» 1,2
ATM card Conto corrente stato: statoV {attiva, smarrita, ...}
*

Validaz.PIN Estratto conto

Prelievo Trasfer. conto

© 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)

A E Grafo: una soluzione


D
informatica operativa
A &C

C Grafo ListaDiAdiacenza
F B &A
B

ListaDiAdiacenza C

Grafo: schema dal punto di vista


logico next 0..1
0..1 D &C &F
* Vertice CellaVertice
0..1
Grafo arrivaA
ParteDa> E
* Arco *
0..1
* ArrivaA> 0..1
* CellaArco
F &B &D
{ AND } next 0..1

© 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

Design pattern iteratore Item

ListIterator
ReverseListIterator

tratto dal testo Item

(Iterator< Employee* >) SkipList


“Design Patterns”: Gamma, Helm, johnson, Vlissides Item
Item

SkipListIterator ListTraverser
(ListTraverser<
Employee* >)

da un reverse engineering -_iterator


1 Item
Item Item
ricavato dal codice associato al testo AbstractList IteratorPtr (ListIterator< Item >)
PrintNEmployees
1 -_iterator

bool Coord Item

FilteringListTraverser

© Renato Conte - UML: CLASSI e OGGETTI - 93/100 © Renato Conte - UML: CLASSI e OGGETTI - 94/100

Design pattern iteratore (particolare) Design pattern iteratore (codici C++)


Item
Iterator template <class Item>
Iterator() : Iterator
class ListIterator : public Iterator<Item>
First() : void
Next() : void
{
IsDone() : bool public:
CurrentItem() : Item
ListIterator(const List<Item>* aList);
virtual void First();
Item
ListIterator virtual void Next();
_current : long virtual bool IsDone() const;
(Iterator< Employee* >) ListIterator(aList : const List*) : ListIterator Item
virtual Item CurrentItem() const;
First() : void Item template <class Item>
Next() : void ReverseListIterator
IsDone() : bool private: class Iterator
CurrentItem() : Item
ReverseListIterator(aList : const List*) : ReverseListIterator const List<Item>* _list; {
First() : void
Next() : void int _current; public:
IsDone() : bool virtual void First() = 0;
CurrentItem() : Item };
virtual void Next() = 0;
Item
SkipListIterator virtual bool IsDone() const = 0;
virtual Item CurrentItem() const = 0;
SkipListIterator(aList : const List*) : SkipListIterator
First() : void protected:
Next() : void
IsDone() : bool Iterator();
CurrentItem() : Item
};
© Renato Conte - UML: CLASSI e OGGETTI - 95/100 © Renato Conte - UML: CLASSI e OGGETTI - 96/100
costrutto descrizione sintassi

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

Realizzazione Una relazione tra una specificazione e la sua


implementazione
Realization
© Renato Conte - UML: CLASSI e OGGETTI - 97/100 © Renato Conte - UML: CLASSI e OGGETTI - 98/100

Bibliografia Riferimenti nel Web

Grady Booch, James Rumbaugh, Ivar Jacobson:


The Unified Modeling Language User Guide, OMG UML - www.omg.org/uml/
Addison Wesley (1999). • Reference manual UML 1.5
• UML 2.1 Superstructure Specification
Grady Booch, James Rumbaugh, Ivar Jacobson: • UML 2.2 Superstructure Specification
The Unified Modeling Language Reference Manual,
Addison Wesley (1999).
UML: Tutorial e link:
Martin Fowler: UML Distilled: A Brief Guide to the www.kobryn.com
Standard Object Modeling Language, Third Edition
Addison Wesley (2003) - ISBN : 0-321-19368-7

© Renato Conte - UML: CLASSI e OGGETTI - 99/100 © Renato Conte - UML: CLASSI e OGGETTI - 100/100

Potrebbero piacerti anche