con Java.
Lezione 8 - Diagramma delle Classi e Design Patterns
DIAGRAMMA DELLE CLASSI
UML - DIAGRAMMA DELLE CLASSI
UML (Unified Modeling Language) è una notazione standard visuale usata per
scrivere (disegnare) i modelli: un’astrazione atta a comprendere cosa si vuole fare
prima di doverla fare.
Viene considerato uno standard industriale e comprende un gran numero di
diagrammi impiegati nel progettare SW a diversi livelli di astrazione.
Il diagramma delle classi è una descrizione statica della struttura delle classi
SW, con i loro campi e i loro metodi.
L’utilità di tale diagramma è che una volta disegnato, passare al codice diviene
molto semplice. Inoltre permette di descrivere in modo chiaro soluzioni efficaci a
problemi comuni (Design Patterns…)
UNA VISIONE DI INSIEME
Il diagramma delle classi definisce una visione statica di insieme del sistema
SW, rappresentando:
➔ Classi
➔ Relazioni tra classi:
◆ Associazioni (classi che ne usano altre)
◆ Generalizzazioni (vincoli di ereditarietà)
◆ Aggregazioni (classi che ne contengono altre)
È forse il modello più importante perché definisce gli elementi base del sistema e
da questo possiamo comprenderne il funzionamento d’insieme.
CLASSI
Le classi sono rappresentate da dei rettangoli divisi a loro volta in 3 sezioni che
ne identificano le 3 caratteristiche principali:
★ Nome
★ Campi (stato)
★ Metodi (comportamento)
ATTRIBUTI
Un attributo è una caratteristica della classe che può essere:
Ad ES:
INFORMAZIONI SUI MEMBRI
I modificatori e le altre informazioni importanti dei vari campi e metodi si possono indicare
utilizzando adeguati caratteri speciali precedenti il nome del membro:
➔ modificatori d’accesso:
◆ - private
◆ + public
◆ # protected
◆ ~ package
➔ abstract: (vale anche per la classe)
◆ nomeCorsivo
➔ static:
◆ nomeSottolineato
➔ inizializzazione:
◆ = valore dopo la dichiarazione del tipo
➔ molteplicità:
◆ Indica quante istanze massime ci si aspetta di incontrare. Se omesso, infinite.
OPERAZIONI E METODI
Un’operazione è un servizio che la classe deve fornire.
Spesso utilizzata per modellare una situazione in cui più classi ne estendono una
astratta.
ASSOCIAZIONI
Un’associazione identifica una relazione generica tra più classi, come quella tra
una classe Studente e una classe Corso che modella il concetto per cui lo
studente segue il corso.
Ogni associazione deve avere un nome unico rispetto a tutte le altre all’interno
dello stesso diagramma ed è solitamente un verbo.
L’associazione si indica come una linea continua che collega due classi e il nome
va inserito sopra di essa, più o meno al centro.
MOLTEPLICITÀ NELLE ASSOCIAZIONI
La molteplicità delle associazioni di un diagramma delle classi ha funzionalità
analoghe a quelle che ha nei diagrammi ER; essa ci dice:
❏ 1 Esattamente uno
❏ 0..1 O nessuno o solo 1
❏ 0..* Un qualsiasi numero, anche nessuno
❏ 1..* Uno o più
❏ 7 Esattamente 7
❏ 4..15 Intervallo tra 4 e 15
❏ ? Ancora da definire
ASSOCIAZIONI - ESEMPI
RUOLO
Il ruolo definisce il ruolo svolto dalla classe nell’associazione ed è utile per
identificare:
Una navigazione a doppio senso indica che entrambe le classi usano servizi
dell’altra, mentre una navigazione a senso unico indica è solo una la classe a farlo
ed è indicata trasformando la linea in una freccia.
Per un nome utente ed una password, dall’utente potremmo voler risalire alla sua
password essendo unico, mentre due password possono essere uguali e quindi
non potremmo risalire al nome utente!
AGGREGAZIONI
Le aggregazioni sono associazioni particolari che modellano situazioni in un
oggetto è inteso come descrizione della parte di un’altro. Si indicano aggiungendo
un rombo vuoto al termine dell’associazione, dalla parte dell’insieme e non della
parte.
COMPOSIZIONI
Le composizioni sono forme di aggregazione più forti: un oggetto non può
esistere senza le sue componenti. In pratica:
In fase di analisi:
1) Il Cliente arriva alla Cassa con gli Articoli e/o i Servizi da acquistare.
2) Il Cassiere inizia una nuova vendita.
3) Il Cassiere inserisce l’id dell’Articolo.
4) Il Sistema registra la riga di vendita per l’Articolo e mostra la descrizione di esso così come il suo
prezzo e il totale parziale. Il prezzo è calcolato sulla base di un insieme di regole.
5) Il Cassiere ripete 2 e 3 fino a che non ha terminato, poi prosegue.
6) Il Sistema mostra il totale con le imposte calcolate.
7) Il Cassiere riferisce il totale al Cliente chiedendo il Pagamento.
8) Il Cliente paga e il Sistema gestisce il pagamento.
9) Il Sistema registra la vendita completata e invia informazioni sulla Vendita e sul pagamento ai
sistemi esterni di Contabilità (per contabilità e commissioni) e di Inventario (per il suo
aggiornamento).
10) Il Sistema genera la Ricevuta.
11) Il Cliente se ne va con Ricevuta e articoli acquistati.
ESEMPIO POS - IDENTIFICHIAMO LE CLASSI
1) DEFINIRE ASSOCIAZIONI, MOLTEPLICITÀ, RUOLI
2) AGGIUNGERE AGGREGAZIONI, ATTRIBUTI, NAV
3) ESEMPIO DI STATO DEL SISTEMA
3) ESEMPIO DI STATO DEL SISTEMA
ESEMPIO DA UML @ CLASSROOM
Esempio proposto dal libro UML @ CLASSROOM: University Information System.
Requisiti:
➔ Un’università consiste di più dipartimenti che sono composti da più istituti. Dipartimenti e
istituti hanno un nome ciascuno e ogni istituto ha un indirizzo.
➔ Ogni dipartimento è guidato da un rettore il quale è un dipendente dell’università.
➔ Il numero totale di dipendenti è noto. Essi hanno un numero di sicurezza sociale (SSN
americano), un nome e un indirizzo email. Vanno distinti ricercatori e personale
amministrativo.
➔ I ricercatori sono assegnati ad almeno un istituto e si conosce il loro campo di studio. Essi
possono essere assegnati in determinati progetti per un certo numero di ore. Di ogni
progetto sono conosciuti il nome, la data di inizio e quella di fine. Alcuni ricercatori tengono
corsi e quelli che lo fanno sono definiti relatori.
➔ I corsi hanno un identificativo unico, un nome e una durata settimanale espressa in ore.
1) IDENTIFICHIAMO LE CLASSI
➔ Un’università consiste di più dipartimenti che sono composti da più istituti.
Dipartimenti e istituti hanno un nome ciascuno e ogni istituto ha un indirizzo.
➔ Ogni dipartimento è guidato da un rettore il quale è un dipendente dell’università.
➔ Il numero totale di dipendenti è noto. Essi hanno un numero di sicurezza sociale
(SSN americano), un nome e un indirizzo email. Vanno distinti ricercatori e
personale amministrativo.
➔ I ricercatori sono assegnati ad almeno un istituto e si conosce il loro campo di
studio. Essi possono essere assegnati in determinati progetti per un certo numero di
ore. Di ogni progetto sono conosciuti il nome, la data di inizio e quella di fine. Alcuni
ricercatori tengono corsi e quelli che lo fanno sono definiti come relatori.
➔ I corsi hanno un identificativo unico, un nome e una durata settimanale espressa in
ore.
1) STATO DEL MODELLO
2) IDENTIFICHIAMO GLI ATTRIBUTI
➔ Un’università consiste di più dipartimenti che sono composti da più istituti.
Dipartimenti e istituti hanno un nome ciascuno e ogni istituto ha un indirizzo.
➔ Ogni dipartimento è guidato da un rettore il quale è un dipendente dell’università.
➔ Il numero totale di dipendenti è noto. Essi hanno un numero di sicurezza sociale
(SSN americano), un nome e un indirizzo email. Vanno distinti ricercatori e
personale amministrativo.
➔ I ricercatori sono assegnati ad almeno un istituto e si conosce il loro campo di
studio. Essi possono essere assegnati in determinati progetti per un certo numero di
ore. Di ogni progetto sono conosciuti il nome, la data di inizio e quella di fine. Alcuni
ricercatori tengono corsi e quelli che lo fanno sono definiti relatori.
➔ I corsi hanno un identificativo unico, un nome e una durata settimanale espressa in
ore.
2) STATO DEL MODELLO
3) IDENTIFICHIAMO LE ASSOCIAZIONI
➔ Un’università consiste di più dipartimenti che sono composti da più istituti.
Dipartimenti e istituti hanno un nome ciascuno e ogni istituto ha un indirizzo.
➔ Ogni dipartimento è guidato da un rettore il quale è un dipendente dell’università.
➔ Il numero totale di dipendenti è noto. Essi hanno un numero di sicurezza sociale (SSN
americano), un nome e un indirizzo email. Vanno distinti ricercatori e personale
amministrativo.
➔ I ricercatori sono assegnati ad almeno un istituto e si conosce il loro campo di studio.
Essi possono essere assegnati in determinati progetti per un certo numero di ore. Di
ogni progetto sono conosciuti il nome, la data di inizio e quella di fine. Alcuni ricercatori
tengono corsi e quelli che lo fanno sono definiti relatori.
➔ I corsi hanno un identificativo unico, un nome e una durata settimanale espressa in ore.
3) IDENTIFICHIAMO LE ASSOCIAZIONI (1)
“Vanno distinti ricercatori e personale amministrativo”
“Alcuni ricercatori tengono corsi e quelli che lo fanno sono definiti relatori”
tipi di impiegato.
3) IDENTIFICHIAMO LE ASSOCIAZIONI (2)
“Un’università consiste di più dipartimenti che sono composti da più istituti”
Questa è una composizione, dato che abbiamo una dipendenza tra istituto e
dipartimento.
3) IDENTIFICHIAMO LE ASSOCIAZIONI (3)
“Ogni dipartimento è guidato da un rettore il quale è un dipendente
dell’università”
Il sistema può essere utilizzato da un cliente, da un addetto alla manutenzione (che ricarica i
prodotti nel distributore) o da un amministratore (che fa il set-up iniziale del distributore).
DESIGN PATTERNS
ALCUNI DEI DESIGN PATTERNS FREQUENTI
https://www.tutorialspoint.com/design_pattern/index.htm