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 -