UML (2°lez)
UML: “un immagine vale più di mille
parole ”
• UML: Unified Modelling Language, rappresenta un insieme di
diagrammi usati per la descrizione di sistemi software, basati
sul paradigma Orientato agli Oggetti.
• Lo UML 2.0 è costituito da una serie di diagrammi (circa 14)
che consento di rappresentare tutti gli aspetti legati alla
progettazione, sviluppo, utilizzo di un sistema SW.
• Tra i tanti: i Diagrammi delle Classi sono quelli più utilizzati in
fase di progettazione delle classi. E quelli di Sequenza per
descrivere come gli oggetti interagiscono tra loro per portare
a compimento un un’ operazione.
2
Diagrammi di classe
• Illustrano le classi che costituiscono una parte
significativa del sistema:
– le relazioni tra esse
– la loro struttura interna cioè i metodi e gli attributi
– Gli elementi statici
– Gli elementi astratti
…. ed altre caratteristiche tecniche presenti in molti
linguaggi di programmazione.
3
Rappresentazione di una classe
• La classe cliente è
rappresentata da un
rettangolo, all’interno
del quale si specifica il
nome della classe.
• Il corrispondente codice
Java è:
Public class Cliente {
}
Cliente
• Diagramma composto
da una sola classe.
4
Generalizzazione (derivazione)
• Per rappresentare che una
classe B deriva da una classe
A si usa :
Es: per indicare che la classe
Cliente deriva da una classe
Soggetto:
Il codice Java corrispondente è:
public class Soggetto {
}
public class Cliente extends
Soggetto{
}//ereditarietà
Soggetto
Cliente
5
Generalizzazione ..
Il codice Java corrispondente è:
Public class Soggetto {.. ..}
public class Cliente extends Soggetto {.. ..}
public class Dipendente extends Soggetto {..
..}
public class Docente extends Soggetto {.. ..}
6
• Esercizio: Modellare la gerarchia delle classi
con l’UML, che descrivono i veicoli a motore.
Individuare le sottoclassi che possono derivare
dalla classe base. Scrivere la struttura in
linguaggio JAVA del diagramma prodotto.
Associazioni
• Si usano quando è necessario indicare che una
classe è utilizzata da un’altra classe
• Es: per indicare che la classe Soggetto
utilizza
la
classe
Indirizzo
per
memorizzare le informazioni sull’indirizzo del
soggetto. In questo caso nella classe
Soggetto c’è un attributo di tipo
Indirizzo , usato per il funzionamento
della classe principale.
8
Es: associazione
• in questi diagrammi si indica che un soggetto ha
un solo indirizzo
• un commesso lavora in un solo negozio
9
Associazioni
• Il codice JAVA corrispondente è:
public class Soggetto {
Indirizzo ind;
}
public class Indirizzo{
}
---------------------------------------------------public class Negozio{
Commesso comm;
}
public class Commesso{
}
Associazioni
• La classe Soggetto usa la classe
Indirizzo:
Nella classe Soggetto è presente un attributo di
tipo Indirizzo
Nella classe Negozio è presente un attributo di
tipo Commesso
• Le associazioni nei diagrammi di classe
consentono di specificare alcune informazioni
aggiuntive:
– Molteplicità
– Eventuali vincoli
• Molteplicità: permette di definire quanti oggetti
possono essere contenuti nella proprietà,
nell’esempio (molteplicità 1)
• Se un Soggetto può avere da 0 (indice minimo
non è obbligatorio) a 5 (inidce massimo è
obbligatorio) indirizzi si indica cosi:
12
Associazioni: - molteplicità
• Le varianti di questa situazione possono essere:
– 0..n indica fino ad un massimo di n
– 1..n indica minimo 1 fino ad un massimo di n
– 0..* indica che non ci sono limiti sul numero massimo
– 1..* indica che il valore minimo è uno e quello
massimo non è definito (teoricamente infinito)
13
Associazioni
• Il codice JAVA corrispondente, userà un
vettore, che è dinamico per definizione. Spetta
al codice implementare i controlli sugli indici.
• Vediamo il codice JAVA
Traduzione in JAVA - Associazione
• Codice: SoggettoVettore.java
• Il costruttore ci è servito per definire (cioè
assegnare la sua dimensione, che non potrà più
essere modificata) il vettore di cinque elementi
che la classe Soggetto usa.
• Il metodo setIndirizzo(), imposta l’indirizzo nella
posizione specifica dall’indice, dopo aver
controllato che indice ha un valore accettabile.
• Il metodo getIndirizzo() restituisce l’indirizzo
specificato nella posizione indicata da indice
sempre dopo aver controllato gli indici.
Associazione 1:N
• Supponiamo di dover tradurre in JAVA la
seguente associazione 1:N
• In questo caso il controllo diventa più accurato
perché si deve verificare che esista almeno un
indirizzo.
• Codice: SoggettoList1..N.java
• In questo esempio si è scelto di usare la classe
predefinita ArrayList che implementa un
elenco di oggetti senza limite di numero, in
quanto più efficiente della struttura vettore
usa prima.
• Il controllo sulla presenza di almeno un
elemento con la struttura vettore sarebbe
stato più laborioso.
17
18