Sei sulla pagina 1di 24

 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 Serve per individuare gli elementi di un sistema

Diagrammi delle classi Costruito, perfezionato ed utilizzato durante tutto il processo di


sviluppo del sistema
Class diagrams Scopo:
individua e specifica i concetti del sistema
Diagrammi degli oggetti specifica le collaborazioni
specifica gli schemi logici dei D.B.
Object diagrams
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 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 Model Diagrams Incl. subsystems
and packages
composto da classi e relazioni. Design Deployment
Model Diagrams
Design
Sequence
Deployment Diagrams
Un diagramma degli oggetti un grafo Model

composto da istanze di classi (oggetti) e Collaboration


Diagrams
relazioni; esso una istanza del diagramma Implementation
Implem.
Model
delle classi. Statechart
Diagrams
Test Test
Model
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 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 - Renato Conte - UML: CLASSI e OGGETTI - 6 -

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 dallutente
-- Keep track of balance
Renato Conte - UML: CLASSI e OGGETTI - 7 - Renato Conte - UML: CLASSI e OGGETTI - 8 -
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
Brevit Dettagli
changeable, addOnly, frozen
Genericit Specificit
Operazioni ( implementate da metodi, ... )
[visibility] name [(parameter-list)] [: return-type]
[{property-string}]
Diagrammi
essenziali Diagrammi leaf, query, sequential, guarded, concurrent
reali parameter-list
[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 - Renato Conte - UML: CLASSI e OGGETTI - 10 -

Marcatori di visibilit (visibility) class-scope - instance-scope

ATM card
+ public
cardID: integer
- private
class-scope UltimaCardID: integer = 0
PIN: String
# protected (static)
dataEmissione: date
scadenza: date
limitePrelievo: integer
~ package stato: statoV {attiva, smarrita, ...}

Renato Conte - UML: CLASSI e OGGETTI - 11 - Renato Conte - UML: CLASSI e OGGETTI - 12 -
Relazioni ( principali ) tra le classi

Associazioni (association) sono relazioni strutturali


Generalizzazioni (generalization) sono relazioni di
ereditariet.
Composizione e Aggregazione (composition and Associazioni
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 -

Associazioni Molteplicit nelle associazioni ( 1 )

Molteplicit
Molteplicit
lower-bound .. upper-bound
Direzione e nome
1..4 * ClasseB
1 ClasseA
Company
works for * Person
employer
employee Illimitato:
ruoli da zero a molti

Renato Conte - UML: CLASSI e OGGETTI - 15 - Renato Conte - UML: CLASSI e OGGETTI - 16 -
Molteplicit nelle associazioni ( 2 ) Molti-a-uno ( Many-to-one )

* worksFor
Employee Company
Una societ ha molti dipendenti
Un dipendente pu lavorare solo per una societ.
Secretary * 1..* Manager
supervisor Una societ pu avere zero dipendenti
Non possibile per un dipendente non dipendere
Company BoardOfDirectors da una societ

Office 0..1 allocatedTo * Employee Employee * worksFor


Company

Person 0,3..8 ** BoardOfDirectors


boardMember relazione parziale (zero sottinteso) Sottinteso 1: relazione totale

Renato Conte - UML: CLASSI e OGGETTI - 17 - Renato Conte - UML: CLASSI e OGGETTI - 18 -

Molti-a-uno ( significato con istanze ) Molti-a-molti ( Many-to-many )

Employee * worksFor
Company
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
GambaDiLegno dirigente

Ladri&affini relazione totale


Paperino relazione parziale

Pippo
Investigazioni S.p.a 1.. *
Topolino Secretary * supervisor
Manager

Renato Conte - UML: CLASSI e OGGETTI - 19 - 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 A booking is always for exactly one passenger
directors
no booking with zero passengers
A board is the board of only one company
a booking could never involve more than one
A company must always have a board passenger.
A board must always be of some company A Passenger can have ten Bookings
a passenger could have no bookings at all
Company BoardOfDirector
A Flight can have 250 Bookings
A booking have a cost and a date

Renato Conte - UML: CLASSI e OGGETTI - 21 - Renato Conte - UML: CLASSI e OGGETTI - 22 -

Voli e prenotazioni: soluzione ? Classe dassociazione ( association class )

Passeggero Volo Passeggero Volo


1..250 0..10
cognome numero cognome numero
nome nome

? Prenotazione

dataPrenotazione
costo

Prenotazione
Passeggero Prenotazione Volo
dataPrenotazione 0..10 1..250
cognome numero
costo dataPrenotazione
nome
costo

Renato Conte - UML: CLASSI e OGGETTI - 23 - Renato Conte - UML: CLASSI e OGGETTI - 24 -
Associazione ternaria con classe dassociazione
Associazioni qualificate ( qualified associations )

conosce 1..*

LinguaggioDiProgrammazione

Sales sale *

sviluppatoCon
Show Performance: data Tiket utilizza
0..1 1..10 Sviluppo
Programmatore
dataInizio
dataFine
assegnatoA
1..*

Qualificatore con attributi ModuloSW

Renato Conte - UML: CLASSI e OGGETTI - 25 - Renato Conte - UML: CLASSI e OGGETTI - 26 -

Direzionalit nelle associazioni


Associazioni ricorsive (o riflessive)

sposata Le associazioni sono per default bi-direzionali, o con


direzione non specificata per i diagrammi ad alto
livello o essenziali.
moglie 0..1
E possibile limitare la direzione di una associazione
aggiungendo una freccia ad una estremit della linea.
0..1
Persona
capo marito

1..* operaio NodoDiAlberoBinario 0..1


radice

figlio 0..2
dirige

Renato Conte - UML: CLASSI e OGGETTI - 27 - Renato Conte - UML: CLASSI e OGGETTI - 28 -
Dipendenze ( dependency )

Una dipendenza mostra che una classe usa unaltra


classe. Un cambiamento nella classe indipendente
influir laltra.
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
Parent
Generalizzazione classe generica

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 Ellipse Spline

habitat typeOfFood
Shape

AquaticAnimal LandAnimal Carnivore Herbivore

Polygon Ellipse Spline

Renato Conte - UML: CLASSI e OGGETTI - 33 - Renato Conte - UML: CLASSI e OGGETTI - 34 -

Discriminatori multipli Ereditariet multipla (1)

Animal Vehicle

habitat power venue


venue
power
{overlapping} {overlapping}

AquaticAnimal LandAnimal WindPowered MotorPowered Land Water


Vehicle Vehicle Vehicle Vehicle
typeOfFood typeOfFood

AquaticCarnivore AquaticHerbivore LandCarnivore LandHerbivore


Truck Sailboat

Renato Conte - UML: CLASSI e OGGETTI - 35 - Renato Conte - UML: CLASSI e OGGETTI - 36 -
Classi astratte, tipi, interfacce
Ereditariet multipla (2) Abstract classes, Types, Interfaces

Animal

type I tipi non hanno implementazione


habitat typeOfFood
SomeType Usati per i built in types come int.

AquaticAnimal LandAnimal Carnivore Herbivore


interface Le interfacce hanno solo operazioni
SomeFace (Le interface Java possono avere anche attributi)

Le classi astratte non hanno istanze


(Le classi astratte pure C++ sono simili alle intefacce
AquaticCarnivore AquaticHerbivore LandCarnivore LandHerbivore {abstract} Java)
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


realizzazione comportamento visibile di un insieme di oggetti

interface
GestoreEvento Una interfaccia simile ad
ActionListener StoreX
una classe, solo che non
actionPerformed()
possiede attributi distanza e -storeId: Integer
... ... metodi implementati -POSlist: List

actionPerformed() +create()
... <<interface>> +login(UserName, Passwd)
Store +find(StoreId)
+getPOStotals(POSid)
+getPOStotals(POSid) +updateStoreTotals(Id,Sales)
+updateStoreTotals(Id,Sales) +get(Item)
GestoreEvento +get(Item)

ActionListener

Renato Conte - UML: CLASSI e OGGETTI - 39 - Renato Conte - UML: CLASSI e OGGETTI - 40 -
Interfacce: notazioni equivalenti Interfacce: esempio
Machine

Cashier inputStream
{file must not be locked}
FileWriter
ATM
interface
Person Machine
Cashier

Withdraw( )
Deposit( ) File dipendenza
Person

Employee ATM
Cashier

Employee FileReader
{file must exist}
outputStream

Renato Conte - UML: CLASSI e OGGETTI - 41 - Renato Conte - UML: CLASSI e OGGETTI - 42 -

Classi astratte ( notazioni equivaenti ) Classi generiche ( template )

Shape
font corsivo
T
d: Dimension
Priority Queue
draw()

{Print Job}
Print Queue
{abstract} insert(T)
Shape remove(T)
Circle 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 Package
Un package un
meccanismo generale per
T, organizzare elementi in
FArray k:integer gruppi omogenei. Package A
Un packages pu
bind (Address, 24) contenere altri package.
0..k AddressList
T Dipendenze tra package
si indicano con una
freccia (vedi figura).
Vi sono delle regole di Package B
FArray<Point,22> visibilit per i
componenti dei package.

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 Diagram
access Elements
access
access
Banking

Domain Graphics
CheckingAccount Elements Core

Renato Conte - UML: CLASSI e OGGETTI - 47 - Renato Conte - UML: CLASSI e OGGETTI - 48 -
Package Visibilit tra package

D
Generalizzazione e dipendenze tra
Compiler package.

A
F
B

C E
JavaCompiler Java

Renato Conte - UML: CLASSI e OGGETTI - 49 - 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
unistanza 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)
+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 - 53 - Renato Conte - UML: CLASSI e OGGETTI - 54 -

Aggregazione (Aggregation)
Composizione (Composition)
Una composizione una forma forte di aggregazione
isPartOf Se laggregato viene distrutto, anche le sue parti
vengono distrutte

* 1..* Building * Room


Itinerario Citt

Employee Employee Address


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

Renato Conte - UML: CLASSI e OGGETTI - 55 - 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
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 - 57 - Renato Conte - UML: CLASSI e OGGETTI - 58 -

Quando usare una aggregazione od una composizione Propagazione


Un meccanismo dove unoperazione su un aggregato
Come regola generale, usa associazione una implementata facendo eseguire quella operazione sulle sue parti
aggregazione/composizione se vero che: Allo stesso tempo, le propriet delle parti si propagano spesso
si pu stabilire indietro verso laggregato
le parti sono pezzi dellaggregato La propagazione sta allaggregazione come lereditariet sta
alla sua generalizzazione.
oppure laggregato composto di parti
La maggior differenza :
quando qualcosa che possiede o controlla laggregato,
lereditariet un meccanismo implicito
allora controlla anche le sue parti
la propagazione deve essere programmata quando richiesto
Si tratta di una aggregazione se le parti possono esistere
anche se laggregato viene a mancare
Si tratta di una composizione se le parti cessano di esistere 3..*
Polygon LineSegment
quando laggregato viene distrutto

aggregato parti
Renato Conte - UML: CLASSI e OGGETTI - 59 - 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 Istanze o oggetti (1)

An object diagram is a graph of instances,


including objects and data values. triangle
triangle: Polygon
A static object diagram is an instance of a class center : Point = (2,2)
vertices : Point* = ((0,0), (4, 0), (2,4))
diagram; it shows a snapshot of the detailed borderColor : Color = black
state of a system at a point in time. fillColor : Color = white
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 - 63 - Renato Conte - UML: CLASSI e OGGETTI - 64 -
Istanze o oggetti (2) Istanze e ruoli (notazione standard?)

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


primaV: Valutazione
cui affermiamo che un oggetto una istanza di una classe)
pippo: Studente
voto = 30
Pat: Employee
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 - 67 - Renato Conte - UML: CLASSI e OGGETTI - 68 -
... 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 - 69 - Renato Conte - UML: CLASSI e OGGETTI - 70 -

Persone e voli

pilot
Esempi riassuntivi
crew
Flight_X Person
1..*

0..* FlightAttendant

Renato Conte - UML: CLASSI e OGGETTI - 71 - Renato Conte - UML: CLASSI e OGGETTI - 72 -
Matrimonio Organismo
Person
name
placeOfBirth Organismo Apparato
dateOfBirth
child {Sistema} Organo Tessuto Cellula
placeOfDeath
dateOfDeath *
Animale
Muscolare
Vegetale Fegato
Woman Man
femalePartner
child 0..1 child malePartner
* 0..1 Digerente Stomaco Ghiandolare

{ AND }
* * Cuore Polmoni
Respiratorio
Union
0..1
placeOfMarriage
parents
dateOfMarriage Circolatorio
dateOfDivorce

Renato Conte - UML: CLASSI e OGGETTI - 73 - Renato Conte - UML: CLASSI e OGGETTI - 74 -

Biblioteca

copiaCorrisp Libro
* VolumeFisico * titolo : string

* 1..* 1..*
HaInPrestito
dal : Data
HaScritto

HaPrenotato *
HaLetto Autore
dal : Data
HaInPrestito
nome : string Sistema universitario: registrazioni
al : Data

0..1

Lettore HaPrenotato
* nome : string
dal : Data
HaLetto
prenotazione()

*
Abbonato
LettoreOccasionale
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
Registrar Database

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 - name Course
+ sa ve C ourse () - phone
- address - name
- IDNumber - program
- location

+ addStudent()
Tra nsactio nMa nag er + addProfessor()
+ isFull() : return
DBS tude nt 4 4
+ sa ve C ourse ()
Student Professor
- major 1 teaches
- tenureStaus
- gradYear

3..10
dipendenze
DBProfessor registersFor

Renato Conte - UML: CLASSI e OGGETTI - 79 - Renato Conte - UML: CLASSI e OGGETTI - 80 -
Sist. di registrazione universitario: UniversityArtifacts
Course
RegistrationForm - name : CString CourseSelectionForm
(from Interfaces) - description : CString 1..4 * (from Interfaces)
+primary 4 - creditHours : short
- timeOfDay
+alternate
- location
2
+ create()
CourseMaintenanceForm 1 *
+ getCourseInfo() 1 Add/DropForm
(from Interfaces) 1 + save() (from Interfaces)
+ getCourseNumber() 1..n
+ verifyID() + getName()
+ untitled() + getDescription()
+ setID() + getTimeOfDay() Sistema bancomat (ATM)
+ createCourse() ... 1
+ setCourseInfo()
Curriculum
... 1

3..10
RegistrationUser
registersFor (from People)
NewCourseForm 1 1..*
4 - name
(from Interfaces) 1
- phone
CourseOffering teaches - address
+ Set name() - ddaysOffered 4 ...
+ Set description() - timeOfDay
+ Set time and day() - location
...
+ addStudent()
...

Renato Conte - UML: CLASSI e OGGETTI - 81 - Renato Conte - UML: CLASSI e OGGETTI - 82 -

Use case sistema bancomat (ATM) - alto livello - Banking System


entity entity
gestisce
<<include>> gestisce Bank ATM info

TrasferimentoFondi ha identifica
Validazione PIN
<<include>> 1..* *
entity entity
Cliente Transazione
ListaMovimenti possiede 1..* possiede
Cliente ATM
o Saldo
<<include>> *
1..* 0..* 1..*
Startup modifica
entity 1,2
accede a 1..* entity
ATM card Conto corrente
PrelievoContanti
*
Shutdown operatore ATM

Validaz.PIN Estratto conto


Aggiungi Contante
ATM Banking system Prelievo Trasfer. conto

Renato Conte - UML: CLASSI e OGGETTI - 83 - Renato Conte - UML: CLASSI e OGGETTI - 84 -
Dettagli per la classe ATM card (soli attributi )

entity
ATM card

cardID: String
PIN: String Struttura dati Grafo
dataEmissione: date
scadenza: date
limitePrelievo: integer
stato: statoV {attiva, smarrita, ...}

Renato Conte - UML: CLASSI e OGGETTI - 85 - Renato Conte - UML: CLASSI e OGGETTI - 86 -

Studio della struttura dati Grafo (1) Studio della struttura dati Grafo (2)

A D E
Grafo: una soluzione fisica
A &C

C
F Grafo B &A
ListaDiAdiacenza
B

C
ListaDiAdiacenza
Grafo: schema dal punto di vista logico
* &C &F
D
* Vertice 0..1 CellaVertice
Grafo
ParteDa E
* Arco *
ArrivaA 0..1 *
*
CellaArco
F &B &D

Renato Conte - UML: CLASSI e OGGETTI - 87 - 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 (Iterator< Employee* >) SkipList


Item
Design Patterns: Gamma, Helm, johnson, Vlissides Item
SkipListIterator ListTraverser
(ListTraverser<
Employee* >)
da un reverse engineering
1
ricavato dal codice associato al testo Item Item
-_iterator Item

AbstractList IteratorPtr (ListIterator< Item >)


PrintNEmployees
1 -_iterator

bool Coord Item

FilteringListTraverser

Renato Conte - UML: CLASSI e OGGETTI - 89 - Renato Conte - UML: CLASSI e OGGETTI - 90 -

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

Iterator
Item template <class Item>
class ListIterator : public Iterator<Item>
Iterator() : Iterator
First() : void {
Next() : void
IsDone() : bool public:
CurrentItem() : Item
ListIterator(const List<Item>* aList);
virtual void First();
ListIterator
Item virtual void Next();
_current : long virtual bool IsDone() const;
(Iterator< Employee* >) ListIterator(aList : const List*) : ListIterator Item virtual Item CurrentItem() const; template <class Item>
First() : void Item
Next() : void ReverseListIterator class Iterator
IsDone() : bool
CurrentItem() : Item private: {
ReverseListIterator(aList : const List*) : ReverseListIterator
First() : void const List<Item>* _list; public:
Next() : void
IsDone() : bool int _current; virtual void First() = 0;
CurrentItem() : Item
}; virtual void Next() = 0;
Item
SkipListIterator virtual bool IsDone() const = 0;
SkipListIterator(aList : const List*) : SkipListIterator
virtual Item CurrentItem() const = 0;
First() : void
Next() : void
protected:
IsDone() : bool
CurrentItem() : Item
Iterator();
};
Renato Conte - UML: CLASSI e OGGETTI - 91 - Renato Conte - UML: CLASSI e OGGETTI - 92 -
Construct 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


Aggregazione che specifica una relazione tra la
Composition and parte intera (aggregato) ed i suoi
Aggregation
componenti (parti)

Annidamento Una relazione tra due o pi classi: allinterno di


Riassunto delle relazioni Nesting una classe vengono dichiarate altre classi

Generalizzazione Una relazione tassonomica tra un elemento


Generalization pi generale ed uno pi specifico

Dipendenza Una relazione tra due elementi, nei quali il


Dependency
cambiamento nellelemento indipendente
pu influire nellelemento dipendente
Realizzazione Una relazione tra una specificazione e
Realization la sua implementazione
Renato Conte - UML: CLASSI e OGGETTI - 93 - Renato Conte - UML: CLASSI e OGGETTI - 94 -

Bibliografia Riferimenti nel Web

Grady Booch, James Rumbaugh, Ivar Jacobson.


The Unified Modeling Language User Guide, Addison OMG UML - Reference manual UML 1.5
Wesley , (1999). www.omg
www.omg.org/
.org/uml
uml//

Grady Booch, James Rumbaugh, Ivar Jacobson UML: tool, demo,doc


The Unified Modeling Language Reference Manual , www.rational.com
Addison Wesley, (1999).
UML: Tutorial e link:
Ivar Jacobson, Grady Booch, James Rumbaugh www.kobryn.com
The Unified Software Development Process,
Addison Wesley, (1999).

Renato Conte - UML: CLASSI e OGGETTI - 95 - Renato Conte - UML: CLASSI e OGGETTI - 96 -