![Page 1: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/1.jpg)
UMLUNIFIED MODELING LANGUAGE
![Page 2: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/2.jpg)
Cos’è UMLE’ un linguaggio di progettazione, da non confondere con i linguaggi di programmazione (C, C++, Java,…)
Fornisce una serie di diagrammi per rappresentare ogni tipo di modellazione
Alcuni ambienti di programmazione sono in grado di convertire diagrammi UML in codice e viceversa
![Page 3: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/3.jpg)
Diagrammi UMLdiagramma dei casi d’uso (use case)
diagramma delle classi (class)
diagramma di sequenza (sequence)
diagramma di collaborazione (collaboration)
diagramma di stato (statechart)
diagramma delle attività (activity)
diagramma dei componenti (component)
diagramma di distribuzione (deployment)
![Page 4: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/4.jpg)
Analisi di un problemaDIAGRAMMA DEI CASI D’USO
![Page 5: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/5.jpg)
Definizione dei requisitiRequisiti: insieme delle funzionalità che il sistema deve rendere disponibili agli utenti (non necessariamente persone)
Si definisce ◦ “cosa” fa il sistema
◦ non “come” lo fa
L’insieme dei requisiti descrive il comportamento esterno del sistema (black box)
In UML -> diagramma dei casi d’uso◦ attori
◦ casi d’uso
![Page 6: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/6.jpg)
Un esempio
![Page 7: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/7.jpg)
Tipi di requisitiFunzionali
descrivono le funzionalità che il sistema rende disponibili all◦ ’utente (normalmente interazione utente-sistema)
sono gli unici che compaiono nei diagramma dei casi d◦ ’uso
Non funzionalidescrivono caratteristiche del sistema ◦(per esempio prestazionali)
Tecnologicidescrivono aspetti tecnologici◦(esempio tipo di linguaggio utilizzato)
![Page 8: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/8.jpg)
Priorità dei requisitiMust
◦ indispensabile
Should◦ desiderabile
May◦ opzionale
![Page 9: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/9.jpg)
Diagramma UML dei casi d’usoAttori
◦ Entità che non fanno parte del sistema ma interagiscono con esso
◦ rappresentati da icone con la denominazione del ruolo
Casi d’uso◦ ovali con all’interno la descrizione (verbo/complemento)
Linee◦ di collegamento fra attori e casi d’uso
◦ è possibile attribuire un nome per chiarire il ruolo che svolge l’attore
![Page 10: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/10.jpg)
Relazione fra casi d’usoInclusione
Il caso d◦ ’uso puntato è necessariamente compreso nel caso d’uso da cui parte la freccia
EstensioneIl caso d◦ ’uso puntato è facoltativamente compreso nel caso d’uso da cui parte la freccia
GeneralizzazioneIl caso d◦ ’uso da cui parte la freccia è un caso particolare di quello puntato
![Page 11: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/11.jpg)
Esempio
![Page 12: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/12.jpg)
Rappresentazione alternativa
![Page 13: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/13.jpg)
IndicazioniIndividuare gli attori
◦ chi usa il sistema?
◦ chi ottiene informazioni dal sistema?
◦ chi fornisce informazioni al sistema?
◦ quali altri sistemi interagiscono con questo?
Individuare i casi d’uso◦ per quale scopo gli attori usano il sistema?
◦ quali funzioni sono richieste?
◦ quali informazioni sono elaborate dal sistema?
![Page 14: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/14.jpg)
Specifica dei casi d’usoNome del Caso d’Uso
Precondizioni◦ condizioni che devono essere verificate prima di eseguire il caso d’uso
Postcondizioni◦ stato in cui il caso d’uso lascia il sistema
![Page 15: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/15.jpg)
Un esempioNegozio di noleggio DVD: informatizzazione della gestione prestiti
Il cliente utilizza il sistema per ricercare e richiedere in prestito un film
Il negoziante utilizza il sistema per registrare i prestiti e i rientri dai prestiti:
richiede i dati del cliente prima di effettuare il prestito◦
verifica la disponibilità del film di cui sono presenti più copie◦
![Page 16: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/16.jpg)
Diagramma dei casi d’uso
![Page 17: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/17.jpg)
Maggior dettaglio
![Page 18: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/18.jpg)
Specifica di un caso d’uso
![Page 19: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/19.jpg)
OOADOBJECT-ORIENTED ANALYSIS AND DESIGN
![Page 20: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/20.jpg)
Diagramma delle classiRappresenta le classi che compongono il sistema, cioè le collezioni di oggetti, ciascuno con il proprio stato e comportamento (attributi ed operazioni)
Specifica, mediante associazioni, le relazioni fra le classi
![Page 21: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/21.jpg)
Un esempio
Nome
Attributi (proprietà)
Operazioni (metodi)
![Page 22: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/22.jpg)
Classe Metodi e Attributi
SchedaAnagrafica
-nome:String-cognome:String
+getNome():String+setNome(nome:String):void+getCognome():String+setCognome(cognome:String):void
public class SchedaAnagrafica {
private String nome;
private String cognome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCognome() {
return cognome;
}
public void setCognome(String cognome) {
this.cognome = cognome;
}
}
![Page 23: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/23.jpg)
Modificatori
+Public: Libero Accesso
#Protected: Accessibile dalle Sottoclassi
-Private: Accessibile solo all’interno della classe
Static: Accessibili anche senza creare istanze
![Page 24: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/24.jpg)
Ereditarietà
![Page 25: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/25.jpg)
Classi Astratte e Metodi AstrattiUna Classe Astratta contiene metodi privi di implementazione
Per questa ragione non può essere istanziata
Il corsivo permette di distinguere le parti astratte da quelle concrete
![Page 26: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/26.jpg)
InterfacceInsieme di operazioni che la classe offre ad altre classi
Rappresentata come una classe con specifica <<interface>>
Non ha attributi ma solo la dichiarazione di metodi
![Page 27: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/27.jpg)
Interfaccia: esempiopublic interface Pesabile {
public int getPeso();
}
![Page 28: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/28.jpg)
Ereditarietà multipla
interfaceMediaRecorder
+record:void
VideoRegistratore
LettoreDVD
interfaceMediaPlayer
+play:void+stop:void+pause:void+fastForward:void+rewind:void
RegistratoreDVD
In Java per esempio non è ammessa l’ereditarietà multipla (possibile in C++)
Le interfacce permettono di ovviare a questo problema: una classe può ereditare da una sola classe ma implementare varie interfacce
![Page 29: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/29.jpg)
AssociazioneUn’Associazione rappresenta la possibilità cheun’istanza ha di inviare un messaggio ad un’altraistanza
In UML viene rappresentata con una freccia, in Java viene implementata tipicamente con un reference
![Page 30: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/30.jpg)
Associazione: esempio
public class Automobile {
private Motore motore;
public void accendi() {
motore.inserisciMiscela();
motore.accendiCandele();
}
}
public class Motore {
public void inserisciMiscela() {…};
public void accendiCandele() {…};
}
![Page 31: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/31.jpg)
DipendenzaLa Dipendenza indica che un determinato oggetto può, in certe circostanze, chiamare i metodi di un altro pur senza possederne un’istanza
La classe dipendente presuppone l’esistenza della classe da cui dipende.
Non vale il viceversa
In UML la dipendenza viene rappresentata con una freccia tratteggiata. In java tipicamente l’oggetto dipendente riceve un’istanza dell’oggetto da cui dipende come argomento di una chiamata a metodo
![Page 32: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/32.jpg)
AggregazioneL’Aggregazione rappresenta un’associazione uno a molti
Esprime concetto “è parte di ” (part of), che si ha quando un insieme è relazionato con le sue parti
In UML l’aggregazione viene rappresentato con una freccia con la punta a diamante
![Page 33: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/33.jpg)
Esempio di Aggregazione
![Page 34: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/34.jpg)
ComposizioneUna Composizione è una relazione uno a molti che implica una forma di esclusività
E’ un caso particolare di aggregazione in cui:
◦ la parte (componente) non può esistere da sola, cioè senza la classe composto
◦ una componente appartiene ad un solo composto
La distruzione dell’oggetto che rappresenta il “tutto” provoca la distruzione a catena delle “parti”
Il diamante si disegna pieno
![Page 35: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/35.jpg)
Esempio di Composizione
![Page 36: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/36.jpg)
![Page 37: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/37.jpg)
aggregazione / composizionePer distinguere l’aggregazione dalla composizione possiamo chiederci che destino devono avere gli oggetti-parte al momento che viene distrutto l’oggetto-tutto
Se non ha senso che gli oggetti-parte sopravvivano all’oggetto-tutto, allora siamo di fronte a una relazione compositiva (la cancellazione del rombo pieno che la rappresenta graficamente richiede la cancellazione del bordo e dell’area interna)
Se ha invece senso che gli oggetti-parte sopravvivano autonomamente all’oggetto-tutto, allora si ha una relazione aggregativa (la cancellazione del rombo vuoto che la rappresenta graficamente avviene cancellando il bordo, ma non richiede la cancellazione dell’area interna)
![Page 38: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/38.jpg)
Esempio
![Page 39: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/39.jpg)
Standard UMLMolteplicità
◦ 1 esattamente una istanza
◦ N esattamente N istanze
◦ 1..* una o più istanze
◦ 0..* zero o più istanze
◦ 1..N una o più istanze (massimo N)
◦ 0..N zero o più istanze (massimo N)
Il nome dell’attributo che realizza un’associazione statica tra classi non deve essere compreso nell’elenco degli attributi, ma deve essere indicato sull’estremita della rappresentazione grafica dell’associazione
![Page 40: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi](https://reader030.vdocuments.pub/reader030/viewer/2022040418/5dd0b28dd6be591ccb624117/html5/thumbnails/40.jpg)
Esempio “corretto”