uml diagrammi delle classi diagrammi degli oggettitullio/is-1/dispense_2003/e2.pdf ·...
TRANSCRIPT
© Renato Conte - UML: CLASSI e OGGETTI - 1 -
UMLDiagrammi delle classi
Class diagrams
Diagrammi degli oggetti Object diagrams
�������
&RUVR GL ,QJHJQHULD GHO 6RIWZDUH � �
© Renato Conte - UML: CLASSI e OGGETTI - 2 -
Diagramma delle classi
E’ un diagramma che illustra una collezione di elementi dichiarativi (statici) di un modello come classi e tipi, assieme ai lorocontenuti e alle loro relazioni.
Serve per individuare gli elementi di un sistema
Costruito, perfezionato ed utilizzato durante tutto il processo disviluppo 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 - 3 -
Diagrammi delle classi e degli oggetti
Un diagramma delle classi è un grafocomposto da classi e relazioni.
Un diagramma degli oggetti è un grafocomposto da istanze di classi (oggetti) erelazioni; esso è una istanza del diagrammadelle classi.
© Renato Conte - UML: CLASSI e OGGETTI - 4 -
Fasi, modelli e diagrammi Use CaseDiagrams
CollaborationDiagrams
ComponentDiagrams
DeploymentDiagrams
ObjectDiagrams
StatechartDiagrams
SequenceDiagrams
ClassDiagrams
ActivityDiagrams
Incl. subsystemsand packages
Design
Implementation
Analysis
Test
Requirements Use CaseModel
DesignModel
DeploymentModel
Implem.Model
AnalysisModel
TestModel
© Renato Conte - UML: CLASSI e OGGETTI - 5 -
Classe
“A class is the descriptor
for a set of objects with
similar structure, behavior,
and relationships”.
dal manuale di riferimento di UML v.1.5
© Renato Conte - UML: CLASSI e OGGETTI - 6 -
Sintassi di una classe ( esempi 1)
Account
balance: MoneyaccountHolder: StringinterestRate: int
setInterest()setOverdraftLevel()
Attributi
Operazioni
Nome della classe
© Renato Conte - UML: CLASSI e OGGETTI - 7 -
( esempi 2)
# balance: Money# accountHolder: String- interestRate: int = 7- lastAccountID : String
- setInterest(d: Date)+ update()# setOverdraftLevel()+ getBalance():Money
ExceptionsaccessViolationException
Responsibilities-- Keep track of balance
{ abstract, author= Joe, status= tested }
Account «entity»
marcatori
di visibilità
opzionali
definite dall’utente
stereotype
© Renato Conte - UML: CLASSI e OGGETTI - 8 -
( esempi 3)
Boolean
stato: enum {false,true}
Customer
name: Stringtitle: Stringage: IntegerisMale: Boolean
{ title = if isMale then ‘Mr.’ else ‘Ms.’ endif}
{ age >= 18 and age < 66 }
{ name.size < 100 }
constraints
Account
Classe attiva
© Renato Conte - UML: CLASSI e OGGETTI - 9 -
Livello di dettaglio nei diagrammi
Astrazione tecnologica e/oimplementativa
Dettagli tecnologici e/oimplementativi
Diagrammi essenziali Diagrammi
reali
BrevitàGenericità
DettagliSpecificità
Diagrammiad altolivello
Diagrammi espansi
© Renato Conte - UML: CLASSI e OGGETTI - 10 -
Attributi
[visibility] name [multiplicity] [: type]
[= initial-value] [{property-string}]
Operazioni ( implementate da metodi, ... )
[visibility] name [(parameter-list)] [: return-type][{property-string}]
parameter-list [direction] name : type [= default-value]
direction in, out, inout.
Sintassi membri ( in diagrammi espansi o reali )
changeable, addOnly, frozen
default
leaf, query, sequential, guarded, concurrent
© Renato Conte - UML: CLASSI e OGGETTI - 11 -
+ public
- private
# protected
~ package
Marcatori di visibilità (visibility)
© Renato Conte - UML: CLASSI e OGGETTI - 12 -
class-scope - instance-scope
ATM card
cardID: integer
UltimaCardID: integer = 0 PIN: String
dataEmissione: date
scadenza: date
limitePrelievo: integer
stato: statoV {attiva, smarrita, ...}
class-scope(static)
© Renato Conte - UML: CLASSI e OGGETTI - 13 -
Relazioni ( principali ) tra le classi
• Associazioni (association) sono relazioni strutturali
• Generalizzazioni (generalization) sono relazioni diereditarietà.
• Composizione e Aggregazione (composition andaggregation) speciali relazioni strutturali
• Dipendenza (dependency)
• Realizzazioni (realization) una relazione tra unaspecificazione e la sua implementazione
© Renato Conte - UML: CLASSI e OGGETTI - 14 -
Associazioni
© Renato Conte - UML: CLASSI e OGGETTI - 15 -
Associazioni
Company Person1 *employee
employer
works for
Molteplicità
Direzione e nome
ruoli
Molteplicità
© Renato Conte - UML: CLASSI e OGGETTI - 16 -
Molteplicità nelle associazioni ( 1 )
ClasseA ClasseB1..4 *
lower-bound .. upper-bound
Illimitato:
da zero a “molti”
© Renato Conte - UML: CLASSI e OGGETTI - 17 -
Molteplicità nelle associazioni ( 2 )
*supervisor
*****1..*
* worksFor
allocatedTo 0..1
boardMember
0,3..8 *****
Employee
Secretary
Office
Person
Company
Employee Company
Manager
BoardOfDirectors
BoardOfDirectors
*
*
© Renato Conte - UML: CLASSI e OGGETTI - 18 -
Molti-a-uno ( Many-to-one )
• 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à
* worksForEmployee Company
relazione parziale (zero sottinteso) Sottinteso 1: relazione totale
© Renato Conte - UML: CLASSI e OGGETTI - 19 -
Molti-a-uno ( significato con istanze )
* worksForEmployee Company
Topolino
Paperino
Pippo
Ladri&affini
GambaDiLegno
Investigazioni S.p.a
© Renato Conte - UML: CLASSI e OGGETTI - 20 -
Molti-a-molti ( Many-to-many )
• 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 undirigente
supervisorSecretary Manager* 1.. *
relazione parzialerelazione totale
© Renato Conte - UML: CLASSI e OGGETTI - 21 -
Uno-a-uno ( One-to-one )
• For each company, there is exactly one board ofdirectors
• 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
© Renato Conte - UML: CLASSI e OGGETTI - 22 -
Esempio: voli e prenotazioni
– A booking is always for exactly one passenger
• no booking with zero passengers
• a booking could never involve more than onepassenger.
– 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 - 23 -
Voli e prenotazioni: soluzione ?
Passeggero
cognomenome
Volo
numero
Prenotazione
dataPrenotazionecosto
?
© Renato Conte - UML: CLASSI e OGGETTI - 24 -
Classe d ’associazione ( association class )
1..2500..10
Volo
numero
Passeggero
cognomenome
Prenotazione
dataPrenotazionecosto
1..250 0..10Passeggero
cognomenome
Volo
numero
Prenotazione
dataPrenotazionecosto
© Renato Conte - UML: CLASSI e OGGETTI - 25 -
Associazioni qualificate ( qualified associations )
Show0..1
TiketPerformance: datasaleSales
Qualificatore con attributi
© Renato Conte - UML: CLASSI e OGGETTI - 26 -
Associazione ternaria con classe d’associazione
LinguaggioDiProgrammazione
ModuloSW
Programmatore1..10
assegnatoA
utilizzasvilup
pa
toCo
n
conosce 1..*
*
Sviluppo
dataIniziodataFine
1..*
© Renato Conte - UML: CLASSI e OGGETTI - 27 -
Associazioni ricorsive (o riflessive)
Persona
0..1
0..1
1..* operaio
marito
sposata
dirige
capo
moglie
© Renato Conte - UML: CLASSI e OGGETTI - 28 -
Direzionalità nelle associazioni
– Le associazioni sono per default bi-direzionali, o con“ direzione non specificata” per i diagrammi ad altolivello o essenziali.
– E’ possibile limitare la direzione di una associazioneaggiungendo una freccia ad una estremità della linea.
NodoDiAlberoBinarioradice
figlio
0..1
0..2
© Renato Conte - UML: CLASSI e OGGETTI - 29 -
Dipendenze ( dependency )
© Renato Conte - UML: CLASSI e OGGETTI - 30 -
Dipendenze ( dependency )
Una dipendenza mostra che una classe usa un’altraclasse. Un cambiamento nella classe indipendenteinfluirà l’altra.
Money
Account
...accountHolder: StringinterestRate: int
addInterest()setOverdraftLevel()deposit(cash: Money)
© Renato Conte - UML: CLASSI e OGGETTI - 31 -
Generalizzazione
© Renato Conte - UML: CLASSI e OGGETTI - 32 -
Generalizzazione ( specializzazione, ereditarietà ) (1)
“Generalizzazioneimplica sostituibilità”
Parent
Child
superclasse
classe generica
classe derivata
classe specializzata
Una relazione tassonomica tra un elemento più generale ed uno più specifico
© Renato Conte - UML: CLASSI e OGGETTI - 33 -
Specializzazione (2)
– Il discriminatore (discriminator) è una etichetta chedescrive il criterio utilizzato per la specializzazione.
Animal Animal
habitat typeOfFood
HerbivoreCarnivoreLandAnimalAquaticAnimal
© Renato Conte - UML: CLASSI e OGGETTI - 34 -
Specializzazione: stili grafici
Shape
SplineEllipsePolygon
Shape
SplineEllipsePolygon
© Renato Conte - UML: CLASSI e OGGETTI - 35 -
Discriminatori multipli
Animal
habitat
LandAnimalAquaticAnimal
AquaticCarnivore AquaticHerbivore LandCarnivore LandHerbivore
typeOfFood typeOfFood
© Renato Conte - UML: CLASSI e OGGETTI - 36 -
Ereditarietà multipla (1)
Vehicle
WindPoweredVehicle
MotorPoweredVehicle
LandVehicle
WaterVehicle
venuevenuepower
power
SailboatTruck
{overlapping} {overlapping}
© Renato Conte - UML: CLASSI e OGGETTI - 37 -
Ereditarietà multipla (2)
Animal
habitat typeOfFood
HerbivoreCarnivoreLandAnimalAquaticAnimal
AquaticCarnivore AquaticHerbivore LandCarnivore LandHerbivore
© Renato Conte - UML: CLASSI e OGGETTI - 38 -
Classi astratte, tipi, interfacceAbstract classes, Types, Interfaces
«type»SomeType
«interface»SomeFace
{abstract}SomeClass
Le interfacce hanno solo operazioni(Le interface Java possono avere anche attributi)
I tipi non hanno implementazione
Usati per i “built in types” come int.
Le classi astratte non hanno istanze(Le classi astratte pure C++ sono simili alle intefacceJava)
Il nome della classe in corsivo qualifica laclasse astratta
© Renato Conte - UML: CLASSI e OGGETTI - 39 -
Interfacce
GestoreEvento
ActionListener
«interface»
ActionListenerGestoreEvento
actionPerformed()...
realizzazione
actionPerformed()
...
...
© Renato Conte - UML: CLASSI e OGGETTI - 40 -
Interfacce
+create()
+login(UserName, Passwd)
+find(StoreId)
+getPOStotals(POSid)
+updateStoreTotals(Id,Sales)
+get(Item)
-storeId: Integer
-POSlist: List
StoreX
+getPOStotals(POSid)
+updateStoreTotals(Id,Sales)
+get(Item)
<<interface>>
Store
• Una interfaccia (interface) descrive una porzione delcomportamento visibile di un insieme di oggetti
• Una interfaccia è simile aduna classe, solo che nonpossiede attributi d’istanza emetodi implementati
© Renato Conte - UML: CLASSI e OGGETTI - 41 -
Interfacce: notazioni equivalenti
Employee
Person
Cashier
Machine
ATM
Cashier
«interface»Cashier
Withdraw( )
Deposit( )
Machine
ATMEmployee
Person
© Renato Conte - UML: CLASSI e OGGETTI - 42 -
Interfacce: esempio
File
outputStream
inputStream
FileWriter{file must not be locked}
FileReader{file must exist}
dipendenza
© Renato Conte - UML: CLASSI e OGGETTI - 43 -
Classi astratte ( notazioni equivaenti )
Circle Square
{abstract}
Shape
Shape
d: Dimension
draw()
draw() draw()
font corsivo
© Renato Conte - UML: CLASSI e OGGETTI - 44 -
Classi generiche ( template )
TPriority Queue
insert(T)
remove(T)
Print Queue{Print Job}
a realization ( part dependency and part generalization )
© Renato Conte - UML: CLASSI e OGGETTI - 45 -
Classi generiche: diverse realizzazioni
T,k:integerFArray
TAddressList0..k
bind (Address, 24)
FArray<Point,22>
© Renato Conte - UML: CLASSI e OGGETTI - 46 -
Package
Package A
Package B
• Un package è unmeccanismo generale perorganizzare elementi ingruppi omogenei.
• Un packages puòcontenere altri package.
• Dipendenze tra packagesi indicano con unafreccia (vedi figura).
• Vi sono delle regole divisibilità per icomponenti dei package.
© Renato Conte - UML: CLASSI e OGGETTI - 47 -
Package: dipendenze
Banking::CheckingAccount
CheckingAccount
Customer
Banking
«access»
© Renato Conte - UML: CLASSI e OGGETTI - 48 -
Package: dipendenze
Controller
DiagramElements
DomainElements
GraphicsCore
«access»
«access»
«access»
«access»
«access»
© Renato Conte - UML: CLASSI e OGGETTI - 49 -
Package
JavaCompiler
Generalizzazione e dipendenze trapackage.Compiler
Java
© Renato Conte - UML: CLASSI e OGGETTI - 50 -
Visibilità tra package
A
B
C
F
E
D
© Renato Conte - UML: CLASSI e OGGETTI - 51 -
Associazione e generalizzazione: commenti
– Le associazioni descrivono relazioni che esistono traistanze a run time.
• Quando si disegna un diagramma degli oggetti,generato da un diagramma delle classi, ci deve essereun’istanza per entrambe le classi congiunte dallaassociazione.
– Le generalizzazioni descrivono relazioni tra classi neidiagrammi delle classi.
• Queste non appaiono affatto nei diagrammi deglioggetti.
© Renato Conte - UML: CLASSI e OGGETTI - 52 -
Aggregazione e Composizione
© Renato Conte - UML: CLASSI e OGGETTI - 53 -
Aggregazione e Composizione
Polygon
GraphicsBundle
colortexture
Point
aggregation
composition
Una speciale forma di associazione che specifica una relazione tra la parteintera (aggregato) ed i suoi componenti (parti)
© Renato Conte - UML: CLASSI e OGGETTI - 54 -
Aggregazione e Composizione (2)
Polygon PointContains
{ordered}
3..∗*
GraphicsBundle
colortexturedensity
1
-bundle
+vertex
© Renato Conte - UML: CLASSI e OGGETTI - 55 -
Aggregazione (Aggregation)
isPartOf
1..*CittàItinerario
*
ParoleTesto1..**
© Renato Conte - UML: CLASSI e OGGETTI - 56 -
– Una composizione è una forma forte di aggregazione
• Se l’aggregato viene distrutto, anche le sue partivengono distrutte
Composizione (Composition)
* RoomBuilding
EmployeeEmployeeaddress: Address
AddressstreetmunicipalityregioncountrypostalCodeDue alternative per ”Address”
© Renato Conte - UML: CLASSI e OGGETTI - 57 -
Composizione: alcune notazioni equivalenti
Window
scrollbar[2]:Slidertitle: Headerbody: Panel
Window
scrollbar: Slider
title: Header
body: Panel
2
1
1
Window
PanelHeaderSlider
1 12
© Renato Conte - UML: CLASSI e OGGETTI - 58 -
Una gerarchia di aggregazioni (... o composizioni?)
*
RuoteTransmissioneMotoreTelaio
CarrozzeriaChassis
Veicolo
© Renato Conte - UML: CLASSI e OGGETTI - 59 -
Quando usare una aggregazione od una composizione
• Come regola generale, usa associazione è unaaggregazione/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 esistereanche se l’aggregato viene a mancare
• Si tratta di una composizione se le parti cessano di esisterequando l’aggregato viene distrutto
© Renato Conte - UML: CLASSI e OGGETTI - 60 -
Propagazione
– 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 spessoindietro verso l’aggregato
– La propagazione sta all’aggregazione come l’ereditarietà staalla sua generalizzazione.
• La maggior differenza è:– l’ereditarietà è un meccanismo implicito
– la propagazione deve essere programmata quando richiesto
3..*LineSegmentPolygon
aggregato parti
© Renato Conte - UML: CLASSI e OGGETTI - 61 -
Composizione e classi annidate: differenze
DeclaringClass
NestedClass
CompositeClass
PartClass
© Renato Conte - UML: CLASSI e OGGETTI - 62 -
Diagramma degli oggetti
© Renato Conte - UML: CLASSI e OGGETTI - 63 -
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 classdiagram; it shows a snapshot of the detailedstate of a system at a point in time.
The use of object diagrams is fairly limited,mainly to show examples of data structures.
dal manuale di riferimento di UML v.1.5
© Renato Conte - UML: CLASSI e OGGETTI - 64 -
Istanze o oggetti (1)
triangle: Polygon
center : Point = (2,2)vertices : Point* = ((0,0), (4, 0), (2,4))borderColor : Color = blackfillColor : Color = white
triangle: Polygon
triangle
: Polygon
© Renato Conte - UML: CLASSI e OGGETTI - 65 -
Istanze o oggetti (2)
attendee: Person
Istanza con nome
: Card
multiObject
steve : Person
shoeSize = 42
Attributi con valore
: Frame
Istanza anonima attiva e passiva
: Frame
© Renato Conte - UML: CLASSI e OGGETTI - 66 -
Charlie / Parent Charlie / Parent : Person
Istanze e ruoli (notazione standard?)
instanceName / ClassifierRoleName [: ClassifierName ]
PersonParent
© Renato Conte - UML: CLASSI e OGGETTI - 67 -
Diagramma degli oggetti
Un link è una istanza di una associazione (nello stesso modo incui affermiamo che un oggetto è una istanza di una classe)
Carla : Employee
Ali : Employee
Wayne: EmployeeOOCorp : Company OOCorp's Board
UML inc's BoardUML inc : Company
Pat: Employee
Terry : Employee
© Renato Conte - UML: CLASSI e OGGETTI - 68 -
Diagramma degli oggetti ...
: Corso: Valutazione: Studente
: Valutazione
: Studente : Valutazione
: Valutazione
: Valutazione
pippo: Studente
nome = ”Pippo”
paperino : Studente
nome = ”Paperino”
primaV : Valutazione
voto = 30
programmazione: Corso
© Renato Conte - UML: CLASSI e OGGETTI - 69 -
... relativo diagramma delle classi
* *Studente
cognomenome
Corso
codice
Valutazione
datavoto
© Renato Conte - UML: CLASSI e OGGETTI - 70 -
Esempio diagramma degli oggetti con aggregazione
Joe : Person Jill : Person
: Family
husband wife
© Renato Conte - UML: CLASSI e OGGETTI - 71 -
Esempi riassuntivi
© Renato Conte - UML: CLASSI e OGGETTI - 72 -
Flight_X Person
pilot
FlightAttendant
crew
0..*
1..*
Persone e voli
© Renato Conte - UML: CLASSI e OGGETTI - 73 -
MatrimonioPerson
nameplaceOfBirthdateOfBirthplaceOfDeathdateOfDeath
Union
placeOfMarriagedateOfMarriagedateOfDivorce
parents0..1
child
*
child*** malePartner* 0..1child
*
femalePartner 0..1
Woman Man
*{ AND }
© Renato Conte - UML: CLASSI e OGGETTI - 74 -
Organismo
Organismo Apparato
{Sistema} Organo Tessuto Cellula
Muscolare
GhiandolareStomaco
Fegato
Polmoni
Digerente
Respiratorio
Animale
Vegetale
Circolatorio
Cuore
© Renato Conte - UML: CLASSI e OGGETTI - 75 -
Biblioteca
LettoreOccasionale
Autorenome : string
Librotitolo : string
HaScritto
AbbonatonTessera : int
HaPrenotatodal : Data
prenotazione()
HaPrenotato
1..*
HaInPrestitodal : Data
VolumeFisico copiaCorrisp
Lettorenome : string
0..1
HaInPrestito
HaLettodal : Dataal : Data
HaLetto
0..1
*
*
*
*
* *
1..*
© Renato Conte - UML: CLASSI e OGGETTI - 76 -
Sistema universitario: registrazioni
© Renato Conte - UML: CLASSI e OGGETTI - 77 -
Sistema universitario: use case
Student
Register for courses
Maintain curriculum
Registrar
Select courses to teach
Professor
© Renato Conte - UML: CLASSI e OGGETTI - 78 -
Sistema di registrazione universitario (vari package)
UniversityArtifacts People
Databasedipendenze
© Renato Conte - UML: CLASSI e OGGETTI - 79 -
Sist. di registrazione universitario: Data Base
TransactionManager
+ saveC ourse()
DBCourse
+ saveC ourse()1
DBS tudent
DBProfessordipendenze
© Renato Conte - UML: CLASSI e OGGETTI - 80 -
Sist. di registrazione universitario: People
Course
- name- program- location
+ addStudent()+ addProfessor()+ isFull() : return
People- name- phone- address- IDNumber
4
3..10
registersFor
4
1 teachesStudent
- major- gradYear
Professor- tenureStaus
<<UniversityArtifacts>>
© Renato Conte - UML: CLASSI e OGGETTI - 81 -
Sist. di registrazione universitario: UniversityArtifacts
RegistrationUser
- name- phone- address...
(from People)
CourseOffering- ddaysOffered- timeOfDay- location
+ addStudent()...
3..10
4
3..10
4registersFor
1
4
1
4
teaches
CourseMaintenanceForm
+ verifyID()+ untitled()+ setID()+ createCourse()+ setCourseInfo()...
(from Interfaces)Add/DropForm(from Interfaces)
CourseSelectionForm(from Interfaces)
RegistrationForm(from Interfaces)
NewCourseForm
+ Set name()+ Set description()+ Set time and day()...
(from Interfaces)
Curriculum
Course- name : CString- description : CString- creditHours : short- timeOfDay- location
+ create()+ getCourseInfo()+ save()+ getCourseNumber()+ getName()+ getDescription()+ getTimeOfDay()...
1..*
1
1
1
111
+primary 41..41..4 *
2
+alternate
2
1
1
1
1
1
1..n
1
1..n
*
© Renato Conte - UML: CLASSI e OGGETTI - 82 -
Sistema bancomat (ATM)
© Renato Conte - UML: CLASSI e OGGETTI - 83 -
Use case sistema bancomat (ATM) - alto livello -
ListaMovimentio Saldo
PrelievoContanti
Validazione PIN
Cliente ATM
TrasferimentoFondi
Aggiungi Contante
Shutdown
Startup
<<include>>
<<include>>
operatore ATM
ATM Banking system
<<include>>
© Renato Conte - UML: CLASSI e OGGETTI - 84 -
Banking System
«entity»ATM info
«entity»Bank
gestisce
«entity»Cliente
«entity»ATM card
ha
1..*
«entity»Conto corrente
possiede
1..*
gestisce
possiede
0..*1..*
1..*
«entity»Transazione
identifica
*
*
1,2modifica
Validaz.PIN
Prelievo
Estratto conto
Trasfer. conto
accede a
*
1..*
© Renato Conte - UML: CLASSI e OGGETTI - 85 -
Dettagli per la classe ATM card (soli attributi )
«entity»ATM card
cardID: StringPIN: StringdataEmissione: datescadenza: datelimitePrelievo: integerstato: statoV {attiva, smarrita, ...}
© Renato Conte - UML: CLASSI e OGGETTI - 86 -
Struttura dati “Grafo”
© Renato Conte - UML: CLASSI e OGGETTI - 87 -
Studio della struttura dati “Grafo” (1)
A
F
B
D E
C
Grafo: schema dal punto di vista logico
Grafo
Arco
Vertice
ArrivaA
ParteDa
*
*
*
*
© Renato Conte - UML: CLASSI e OGGETTI - 88 -
Studio della struttura dati “Grafo” (2)
Grafo: una soluzione fisica
Grafo ListaDiAdiacenza
A
B
C
E
D
F
&C
&D
&C &F
&A
&B
ListaDiAdiacenza
CellaVertice
CellaArco
*
*
0..1
0..1
© Renato Conte - UML: CLASSI e OGGETTI - 89 -
Design pattern iteratoretratto dal testo
“Design Patterns”: Gamma, Helm, johnson, Vlissides
da un reverse engineeringricavato dal codice associato al testo
© Renato Conte - UML: CLASSI e OGGETTI - 90 -
Design pattern iteratore (da un reverse engineering)
bool Coord
List
Iterator
ListIteratorReverseListIterator
SkipList
SkipListIterator
AbstractList IteratorPtrPrintNEmployees
(Iterator< Employee* >)
(ListTraverser< Employee* >)
(List< Employee* >)
ListTraverser
Item
(ListIterator< Item >)
1-_iterator
FilteringListTraverser
1 -_iterator
Item
ItemItem
Item
Item
ItemItem
Item
Item
Item
© Renato Conte - UML: CLASSI e OGGETTI - 91 -
Design pattern iteratore (particolare)
Iterator
Iterator() : IteratorFirst() : voidNext() : voidIsDone() : boolCurrentItem() : Item
ListIterator_current : long
ListIterator(aList : const List*) : ListIteratorFirst() : voidNext() : voidIsDone() : boolCurrentItem() : Item
Item
ReverseListIterator
ReverseListIterator(aList : const List*) : ReverseListIteratorFirst() : voidNext() : voidIsDone() : boolCurrentItem() : Item
SkipListIterator
SkipListIterator(aList : const List*) : SkipListIteratorFirst() : voidNext() : voidIsDone() : boolCurrentItem() : Item
(Iterator< Employee* >)Item
Item
Item
Item
© Renato Conte - UML: CLASSI e OGGETTI - 92 -
Design pattern iteratore (codici C++)
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;
private: const List<Item>* _list; int _current;};
template <class Item>class Iterator {public: 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 - 93 -
Riassunto delle relazioni
© Renato Conte - UML: CLASSI e OGGETTI - 94 -
Construct
Composizione eAggregazione
Composition andAggregation
Generalizzazione
Generalization
Dipendenza
Dependency
Realizzazione
Realization
Associazione
Association
Annidamento
Nesting
descrizione
Una speciale forma di associazioneche specifica una relazione tra laparte intera (aggregato) ed i suoi
componenti (parti)
Una relazione tra una specificazione ela sua implementazione
Una relazione tassonomica tra un elementopiù generale ed uno più specifico
Una relazione tra due elementi, nei quali ilcambiamento nell’elemento indipendente
può influire nell’elemento dipendente
Una relazione tra due o più classificatori cheimplica una connessione tra le loro istanze
Una relazione tra due o più classi: all’interno diuna classe vengono dichiarate altre classi
sintassi
© Renato Conte - UML: CLASSI e OGGETTI - 95 -
Bibliografia
Grady Booch, James Rumbaugh, Ivar Jacobson.The Unified Modeling Language User Guide, AddisonWesley , (1999).
Grady Booch, James Rumbaugh, Ivar JacobsonThe Unified Modeling Language Reference Manual ,Addison Wesley, (1999).
Ivar Jacobson, Grady Booch, James RumbaughThe Unified Software Development Process,Addison Wesley, (1999).
© Renato Conte - UML: CLASSI e OGGETTI - 96 -
Riferimenti nel Web
OMG UML - OMG UML - Reference manual UML 1.5www.www.omgomg.org/.org/umluml//
UML: tool, demo,docwww.rational.comwww.rational.com
UML: Tutorial e link:www.kobryn.com