Post on 12-Oct-2020
Introduzione all’Ingegneria del Software e
Analisi Orientata agli Oggetti in UML
Prof. Andrea Schaerf
Corso di Ingegneria del SoftwareFacolta di Ingegneria
Universita di Udine
Anno Accademico 2008-09
�
�
�
�Programma del corso
1. Introduzione all’ingegneria del software [1 lezione]
2. Dal C al C++ [3 lezioni + 1 esercitazione]
3. Le classi in C++ [8 lezioni + 3 esercitazioni + 1 compitino]
4. Analisi orientata agli oggetti (in UML) [2 lezioni]
5. Progettazione orientata agli oggetti (da UML a C++) [5 lezioni]
Introduzione A.A. 2008-09 1
�
�
�
�1. Introduzione all’ingegneria del software
• Considerazioni generali sullo sviluppo di programmi
– Il ciclo di vita del software
– Le qualita del software
• Princıpi
– Modularizzazione
– Orientazione agli oggetti
1. Principi di ingegneria del software A.A. 2008-09 2
�
�
�
�Ciclo di vita del software
Il modello a cascata:
1. Studio di fattibilita
2. Analisi
3. Progettazione (e realizzazione)
4. Verifica
5. Manutenzione
1. Principi di ingegneria del software A.A. 2008-09 3
�
�
�
�Qualit a del software
Qualit a esterne
Possono essere verificate da chi utilizza il prodotto, sia esso l’utente finale, che
chi lo commissiona
Qualit a interne
Sono percepibili solamente ispezionando il codice (da esperti)
Per l’utente finale hanno importanza solamente le qualita esterne.
Le qualita interne determinano se quelle esterne saranno soddisfacenti oppure no.
1. Principi di ingegneria del software A.A. 2008-09 4
�
�
�
�Qualit a esterne
– Correttezza: capacita del programma di eseguire correttamente i suoi compiti,
secondo le specifiche
– Robustezza: capacita del programma di funzionare anche in condizioni anormali
– Efficienza: capacita del programma di utilizzare in maniera economica e
razionale le risorse di calcolo (tempo e spazio)
– Usabilit a: facilita d’uso e di apprendimento per l’utente
– Costo: tempi di sviluppo, risorse umane
– Sicurezza: capacita del programma di proteggersi da uso non autorizzato.
1. Principi di ingegneria del software A.A. 2008-09 5
�
�
�
�Qualit a interne
– Modularit a: grado di organizzazione interna in parti specifiche e interagenti
– Leggibilit a: capacita del programma di rendere esplicite le scelte fatte da chi lo
ha progettato
– Riusabilit a: capacita del programma di essere riutilizzato, in tutto o in parte, per
applicazioni diverse
– Portabilit a: facilita con cui i programmi possono essere trasferiti in ambienti
hardware e software differenti
– Estendibilit a: facilita con cui i prodotti possono essere adattati a cambiamenti
nelle specifiche
Potrebbero essere necessari compromessi. Ad esempio:
• Efficienza←→ Portabilita
• Sicurezza←→ Usabilita
1. Principi di ingegneria del software A.A. 2008-09 6
�
�
�
�Principi: La modularizzazione
• Principio di divisione del programma in moduli
• Un modulo e un’unita di programma che:
– ha un compito preciso
– offre un insieme di servizi agli altri moduli
– puo utilizzare i servizi degli altri moduli
1. Principi di ingegneria del software A.A. 2008-09 7
�
�
�
�Principi per la modularit a
Alta coesione: un modulo deve corrispondere ad una unita concettuale e deve
incorporarne tutti gli aspetti
Basso accoppiamento: un modulo deve essere indipendente dal funzionamento
di altri moduli
Interfacce esplicite: Il fatto che due moduli comunichino deve essere evidente dal
loro testo
Poche interfacce: Ogni modulo deve comunicare con il minor numero possibile di
altri moduli
Interfacce piccole: Se due moduli comunicano, devono farlo scambiandosi la
minore quantita possibile di informazione
Privatezza dell’informazione: le informazioni che non devono essere scambiate
devono essere gestite privatamente dal modulo
1. Principi di ingegneria del software A.A. 2008-09 8
�
�
�
�Linguaggi di programmazione
Imperativi:
Pascal, Fortran, C, Cobol, Modula-2, Ada, Basic . . .
Funzionali:
Lisp, Scheme, ML, . . .
Logici:
Prolog, Godel, . . .
Orientati agli oggetti:
SmallTalk, C++, Java, C#, . . .
1. Principi di ingegneria del software A.A. 2008-09 9
�
�
�
�Linguaggi imperativi: Pascal
function Fattoriale(n: integer): integer;
var i, f: integer;
begin
f := 1;
i := 1;
while i < n do
begin
i := i + 1;
f := i * f
end;
Fattoriale := f
end;
1. Principi di ingegneria del software A.A. 2008-09 10
�
�
�
�Linguaggi funzionali: Scheme
(define (fattoriale n)
(if (= n 0)
1
(* n (fattoriale (- n 1)))))
1. Principi di ingegneria del software A.A. 2008-09 11
�
�
�
�Programmazione funzionale in C/C++
int Fattoriale(int n)
{
if (n == 0)
return 1;
else
return Fattoriale(n-1) * n;
}
1. Principi di ingegneria del software A.A. 2008-09 12
�
�
�
�Linguaggi logici: PROLOG
fattoriale(0,1).
fattoriale(N,F) :-
N1 is N-1, fattoriale(N1,F1), F is N * F1.
1. Principi di ingegneria del software A.A. 2008-09 13
�
�
�
�Orientazione agli oggetti
Centralita dei dati rispetto alle funzioni:
• Gli oggetti modellano i concetti del dominio
• Gli oggetti come moduli del programma
• Funzioni solo per manipolare gli oggetti e per comunicare tra oggetti
1. Principi di ingegneria del software A.A. 2008-09 14
�
�
�
�Caratteristiche fondamentali dell’orientazione agli ogg etti
Incapsulamento: Ogni modulo (classe) e una implementazione di un tipo di dato.
Contiene cioe l’implementazione delle operazioni del tipo, e tutti i dati necessari
all’implementazione stessa
Information hiding: L’interfaccia della classe fornisce i servizi disponibili (ovvero le
operazioni del tipo). Tutto il resto e nascosto, non visibile alle classi clienti
Genericit a: Ad uno o piu domini possono corrispondere tipi parametrici (template)
Ereditariet a: Una classe puo essere definita tramite la sua differenza da un’altra
- Polimorfismo: Uno stesso identificatore puo denotare funzioni corrispondenti
a classi diverse
- Binding dinamico: Si invocano sempre i metodi della classe specifica a cui
l’oggetto appartiene
1. Principi di ingegneria del software A.A. 2008-09 15
�
�
�
�4. Analisi orientata agli oggetti in UML
• Generalita sull’analisi
• Introduzione a UML (Unified Modeling Language)
• Modellazione di oggetti in UML
• Evoluzione degli oggetti in UML
• Metodologia di analisi
4. Analisi orientata agli oggetti A.A. 2008-09 16
�
�
�
�Cos’ e l’analisi?
L’analisi e caratterizzata da:
Input: requisiti raccolti
Output: schema concettuale dell’applicazione
Obiettivi:
• Costruire un modello completo, preciso, leggibile e traducibile in un
programma
• Concentrarsi sul “cosa” e non sul “come”
4. Analisi orientata agli oggetti A.A. 2008-09 17
�
�
�
�A cosa serve l’analisi?
• Ragionare sui requisiti
– Cogliere le loro implicazioni
– Formalizzarli eliminando incompletezze, inconsistenze e ambiguita
• Creare di un modello
• Verificare i requisiti sul modello
• Discutere i requisiti sul modello con l’utente finale
• Prendere decisioni ad alto livello sulla strutturazione dell’applicazione
4. Analisi orientata agli oggetti A.A. 2008-09 18
�
�
�
�Requisiti del modello per l’analisi
• Leggibilita
• Chiarezza semantica
• Potere espressivo
• Traducibilita nei linguaggi di programmazione
4. Analisi orientata agli oggetti A.A. 2008-09 19
�
�
�
�Modelli e metodi per l’analisi
• Orientati alle funzioni e/o ai dati
– diagrammi di flusso
– modello entita-relazione (cfr. corso di Basi di Dati )
– diagrammi funzionali
• Orientati agli oggetti
– Booch
– OOSE (Jacobson)
– OMT (Rambaugh)
– Coad-Yourdon
→ UML
4. Analisi orientata agli oggetti A.A. 2008-09 20
�
�
�
�Cenni storici su UML
Il progetto UML nasce nel 1994 come unificazione di:
• Booch
• Rumbaugh: OMT (Object Medeling Technique)
• Jacobson: OOSE (Object-Oriented Software Engineering)
Evoluzione:
• 1995: Versione 0.8 (Booch, Rumbaugh)
• 1996: Versione 0.9 (Booch, Rumbaugh, Jacobson)
• 1997: Versione 1.0 (BRJ + Digital, IBM, HP, ...)
• 1999: Versione 1.3, descritta nei testi storici
• 2001: Versione 1.4
• 2004: Versione 2.0
• Corrente (Feb. 2009): Versione 2.2 (cfr. www.uml.org)
4. Analisi orientata agli oggetti A.A. 2008-09 21
�
�
�
�Diagrammi UML
Diagrammi strutturali: Class & Object
Diagrammi comportamentali: Use case, Interaction, Activity, Statechart
Diagrammi architetturali: Component, Collaboration, Deployment
4. Analisi orientata agli oggetti A.A. 2008-09 22
�
�
�
�Nostra metodologia
Diagrammi che utilizziamo:
• Class (& Object) diagram: modellazione statica dei dati
• Statechart diagram (cenni): Modellazione dell’evoluzione dello stato delle
singole classi
Di questi diagrammi utilizzeremo solo le caratteristiche piu importanti
4. Analisi orientata agli oggetti A.A. 2008-09 23
�
�
�
�Modello statico: Classi e oggetti
Oggetti
Persona
Classi
Franco Neri
Citta’
Mario Rossi
:Persona:Persona
Roma : Citta’
:Persona
Milano : Citta’
• Le classi denotano le entita di interesse per l’applicazione
• Gli oggetti sono le istanze delle classi
Classi e oggetti A.A. 2008-09 24
�
�
�
�Attributi e valori
Persona
nome: stringa
eta’: intero eta’ = 35nome = ’Mario Rossi’
: Persona
nome = ’Franco Neri’eta’ = 31
ilCliente : Persona
Classi con attributi Oggetti con valori
• Gli attributi sono associati alle singole classi
• I valori istanziano gli attributi sugli oggetti
• Due oggetti sono distinti anche se hanno gli stessi valori, mentre due valori
uguali sono la stessa cosa
Classi e oggetti A.A. 2008-09 25
�
�
�
�Associazioni
Persona
nome: stringa
eta’: intero
Proprieta’Automobile
CavalliVapore: intero
modello: stringa
Catalizzata: boolean
modello: "Fiat Uno"
CavalliVapore: 33
Catalizzata: false
nome: "Mario Rossi"eta’: 32
Mario:Persona Molly:AutomobileProprieta’
• Le associazioni (o relazioni) legano le classi tra loro
• I legami (o link) instanziano le associazioni e legano gli oggetti tra loro
• Le associazioni modellano proprieta che coinvolgono altre classi.
Classi e oggetti A.A. 2008-09 26
�
�
�
�Piu associazioni tra due classi
PersonaCitta’
Residenza
Nascita
Roma:Citta’ Marta:PersonaNascitaMario:Persona Udine:Citta’
Residenza
Nascita
Residenza
Classi e oggetti A.A. 2008-09 27
�
�
�
�Direzione delle associazioni
Citta’ di NascitaCitta’Persona
Persona AutomobileProprieta’
• La direzione suggerisce un verso di “navigazione”
• Una associazione puo essere bidirezionale
• Non e obbligatorio specificare la direzione (lo faremo piu avanti)
Classi e oggetti A.A. 2008-09 28
�
�
�
�Molteplicit a delle associazioni
Citta’ di NascitaCitta’Persona
• Un’associazione non dice nulla sul numero di link di un oggetto
• Un oggetto in generale puo avere zero, una o piu oggetti a cui e legato
• Esiste un modo per specificare condizioni sul numero di link
Classi e oggetti A.A. 2008-09 29
�
�
�
�Molteplicit a delle associazioni (specifica)
w..zx..y AC2C1
• Si definiscono i vincoli di molteplicita
• Ogni istanza di C2 e legata ad almeno x ed al massimo y istanze di C1
• Ogni istanza di C1 e legata ad almeno w ed al massimo z istanze di C2
Classi e oggetti A.A. 2008-09 30
�
�
�
�Molteplicit a delle associazioni (esempi)
Citta’ di Nascita
nome: stringa
popolazione: intero
Citta’Persona
nome: stringa
eta’: intero
0..*
Impiegato
nome: stringa
livello: integer
Gerarchia
0..*
nome: stringa
sigla : stringa
Regione
nome: stringa
Provincia1..1
0..1
Appartenenza geografica
1..1
1..10
Classi e oggetti A.A. 2008-09 31
�
�
�
�Esercizio 1
Tracciare il diagramma delle classi corrispondente alle seguenti specifiche:
Si vogliono modellare le persone (con nome, cognome, eta), le citta di residenza
(con nome, numero di abitanti e sindaco) e le regioni in cui si trovano le citta (con
nome, anno di istituzione e presidente).
Classi e oggetti A.A. 2008-09 32
�
�
�
�Soluzione esercizio 1
Residenza
nome: stringa
popolazione: intero
Citta’Persona* 1
anno: interonome: stringa
nome: stringacognome: stringaeta’: intero
Regione
Sindaco
Situata
Presidente
1
1
0..1
1
0..1
1..*
Classi e oggetti A.A. 2008-09 33
�
�
�
�Errori tipici dell’esercizio 1
• Attributo Presidente:Persona nella classe Regione.
Si perde l’interfacciamento esplicito
• Attributo Presidente:stringa nella classe Regione.
Errore concettuale: riferimento al nome e non alla persona
Classi e oggetti A.A. 2008-09 34
�
�
�
�Nomi “direzionali” delle associazioni
Persona
nome: stringa
eta’: intero
nome: stringa
popolazione: intero
Citta’Nata a
• Il nome dell’associazione puo essere accompagnato da una freccia
• L’associazione non ha verso
• Il verso e riferito al significato del nome
Classi e oggetti A.A. 2008-09 35
�
�
�
�Nomi di ruoli
nome: stringa
indirizzo: stringa
Impresadipendente datore di lavoro
Lavora perPersona
nome: stringa
eta’: intero
• I nomi di ruoli caratterizzano il modo con cui le classi partecipano alle
associazioni
• Servono soprattutto in caso di piu associazioni tra le stesse classi
• I ruoli possono essere visti come attributi derivati il cui valore e l’oggetto
dall’altra parte dell’associazione
Classi e oggetti A.A. 2008-09 36
�
�
�
�Necessit a dei nomi di ruoli
Genitore
Figlio
Persona
Discendenza
Genitore Figlio
Genitore
Figlio
Mario:PersonaIrene:Persona
Marta:Persona
Discendenza
Discendenza
Nazione
Confine
• Senza i nomi sarebbe impossibile capire chi e il genitore
Classi e oggetti A.A. 2008-09 37
�
�
�
�Attributi delle associazioni
nome: stringa
docente: stringa
Data verbale: data
InsegnamentoStudente
nome: stringamatricola: stringa
voto: intero
Esame
• Gli attributi delle associazioni riguardano la relazione e non i singoli oggetti
• Sono particolarmente utili per i legami molti-a-molti (∗— ∗)
• Si parla anche di classe associazione
Classi e oggetti A.A. 2008-09 38
�
�
�
�Attributi delle associazioni ↔ attributi delle classi
1..* 1
1..* 1
nome: stringa
indirizzo: stringa
ImpresaLavora per
Persona
qualifica : stringa
salario: intero
eta’: intero
nome: stringa
nome: stringa
indirizzo: stringa
Impresa
qualifica : stringa
salario: intero
Lavora per
Persona
nome: stringa
eta’: intero
• Qual e la modellazione corretta?
Classi e oggetti A.A. 2008-09 39
�
�
�
�Associazioni n-arie
Articolo
FornitoreProgetto
• Servono meno frequentemente di quelle binarie
• Da utilizzare solo se non sono suddivisibili in associazioni binarie
• Anche loro possono avere attributi
Classi e oggetti A.A. 2008-09 40
�
�
�
�Aggregazioni (relazione part-of )
1 1..10MotoreAutomobile Cilindro
• Speciale tipo di associazione: tra il tutto e la parte
• La relazione part-of e (generalmente) transitiva e antisimmetrica
• Alcune proprieta dell’oggetto si propagano alla sue parti
• Non c’e una semantica specifica in UML
Classi e oggetti A.A. 2008-09 41
�
�
�
�Composizione
Libro Capitolo Paragrafo
• Speciale tipo di aggregazione
• La parte appartiene ad una sola aggregazione
• La parte da sola non ha ragione di esistere
Classi e oggetti A.A. 2008-09 42
�
�
�
�Generalizzazione (relazione is-a)
Impiegato
Persona
Studente Disoccupato
Bancario Ministeriale
• Finora abbiamo assunto che le classi fossero disgiunte
• La generalizzazione coinvolge una superclasse ed una sottoclasse
• Ogni istanza della sottoclasse e anche istanza delle superclasse
Classi e oggetti A.A. 2008-09 43
�
�
�
�Ereditariet a della relazione is-a
Persona
nome: stringa
eta’: intero
Studente
matricola : stringa
Paolo:Studente
eta’ = 24matricola = "09051408"
nome = "Paolo Verdi"
• Tutti gli attributi e i metodi sono ereditati attraverso la relazione is-a
• L’ereditarieta si propaga lungo tutta la gerarchia is-a
L’ereditarieta non la tratteremo in questo corso (per mancanza di tempo)
Classi e oggetti A.A. 2008-09 44
�
�
�
�Operazioni e metodi
Residenza nome: stringa
popolazione: intero
Persona Citta’
nome: stringa
eta’: intero
CambiaCitta’(c : Citta’)GrandeCitta’(): boolean
AggiornaEta’()
• Le operazioni sono associate alle classi
• Le operazioni possono avere parametri
• I metodi implementano le operazioni
• Le operazioni si distinguino in interrogazioni (selettori) e modifiche
Classi e oggetti A.A. 2008-09 45
�
�
�
�Dichiarazione delle operazioni
alfa (X1: T1, ... , Xn:Tn): T
nome del−
nome delparametro tipo del
parametro
l’operazione
lista del parametri
tipo del risultato
(puo’ essere assente)
Classi e oggetti A.A. 2008-09 46
�
�
�
�Specifica delle operazioni
alfa(x1 : T1, . . . , xn: T
n) : T
-Descrizione dell’effetto sull’oggetto e del risultato
dell’operazione (Postcondizioni)
-Precondizioni: condizioni che devono valere prima
dell’esecuzione della operazione
beta(x1 : T1, . . . , xn: T
n)
-Descrizione dell’effetto sull’oggetto (Postcondizioni)
-Precondizioni: condizioni che devono valere prima
dell’esecuzione della operazione
Classi e oggetti A.A. 2008-09 47
�
�
�
�Tipi utilizzati nelle specifiche
Tipi primitivi: intero, stringa, reale, . . .
Tipi composti: vettore, insieme, record predefiniti (ad esempio Coppia)
Classi: Classi definite nello schema UML
Nota : i tipi (primitivi o composti) rappresentano valori senza identita, mentre gli
oggetti delle classi rapresentano entita autonome
Classi e oggetti A.A. 2008-09 48
�
�
�
�Specifica della classe: Esempio Pila(interi)
Push(e : intero): Il valore e viene inserito in cima alla pila (elemento affiorante).
Pop(): Il valore in cima alla pila viene eliminato dalla pila.
Precondizioni: La pila non e vuota.
Top() : intero: Restituisce l’elemento affiorante della pila.
Precondizioni: La pila non e vuota.
EstV uota() : booleano: Restituisce true se la pila e vuota, false altrimenti.
Classi e oggetti A.A. 2008-09 49
�
�
�
�Vincoli in UML: linguaggio OCL (non lo faremo)
context ContoCorrente::Deposita(deposito: Integer)
pre: deposito > 0
post: saldo = saldo@pre + deposito
context ContoCorrente::Preleva(prelievo: Integer )
pre: prelievo > 0 and ( prelievo <= saldo )
post: saldo = saldo@pre - prelievo
Classi e oggetti A.A. 2008-09 50
�
�
�
�Specifica algebrica (non la faremo)
• EstV uota(PilaV uota) = True
• EstV uota(Push(p, e)) = False
• Pop(PilaV uota) = Errore
• Pop(Push(p, e)) = p
• Top(PilaV uota) = Errore
• Top(Push(p, e)) = e
Classi e oggetti A.A. 2008-09 51
�
�
�
�Specifica delle operazioni: Esempio Biblioteca
Acquisisce(l : Libro): Il libro l viene acquisito dalla biblioteca.
Precondizioni: La biblioteca non possiede l.
Prestito(l : Libro, p : Persona): Il libro l viene dato in prestito alla persona p.
Precondizioni: La biblioteca possiede l e questo non e in prestito.
Restituzione(l : Libro): Il libro l viene restituito.
Precondizioni: Il libro l e in prestito
InPrestito(l : Libro) : boolean: Restituisce true se il libro e in prestito,
false altrimenti.
Prestiti(p : Persona) : vettore〈Libro〉: Restituisce la lista dei libri in
prestito alla persona p.
Classi e oggetti A.A. 2008-09 52
�
�
�
�Costruzione del diagramma delle classi
1. Individuare le classi (e gli oggetti)
2. Individuare gli attributi delle classi
3. Individuare le associazioni
4. Individuare gli attributi delle associazioni
5. Determinare le molteplicita delle associazioni
6. Individuare le generalizzazioni (non lo trattiamo)
7. Individuare le operazioni
8. Controllo di qualita, eventualmente tornare al passo 1
Classi e oggetti A.A. 2008-09 53
�
�
�
�Attributo o classe?
Persona
Nome: stringa
Cognome: stringa
CittaNascita: stringa
Nascita 10..*Persona
Nome: stringa
Cognome: stringa
Nome: stringa
Citta’
Classi e oggetti A.A. 2008-09 54
�
�
�
�Attributo o classe
Un concetto verra modellato come:
una classe, se
• Le sue istanze hanno vita propria e possono essere identificate
indipendentemente da altri oggetti
• Ha delle proprieta indipendenti dagli altri concetti
un attributo, se
• Le sue istanze non hanno vita propria
• Ha senso solo per rappresentare proprieta di altri concetto
Classi e oggetti A.A. 2008-09 55
�
�
�
�Associazione o classe?
0..*0..*
0..*0..*1 1
nome: stringa
docente: stringa
Data verbale: data
InsegnamentoStudente
nome: stringamatricola: stringa
voto: intero
Esame
nome: stringa
docente: stringa
InsegnamentoStudente
nome: stringamatricola: stringa
Data verbale: data
voto: intero
Esame
Classi e oggetti A.A. 2008-09 56
�
�
�
�Associazione o classe
Un concetto verra modellato come:
una classe, se
• Le sue istanze hanno vita propria e possono essere identificate
indipendentemente da altri oggetti
• Ha delle associazioni con altri concetti
una associazione, se
• Le sue istanze rappresentano ennuple di altre istanze
• Non ha senso pensare alla partecipazioni delle sue istanze ad altre
associazioni
Classi e oggetti A.A. 2008-09 57
�
�
�
�Esercizio 2
Tracciare il diagramma delle classi corrispondende alle seguenti specifiche:
Si vogliono modellare gli studenti (con nome, cognome e matricola), il corso di
laurea in cui sono iscritti, e i corsi di cui hanno sostenuto l’esame, con il professore
che ha verbalizzato l’esame, e il voto conseguito. Dei corsi di laurea interessa il
codice e il nome. Dei corsi interessa il nome e la disciplina a cui appartiene
(matematica, fisica, . . . ). Di ogni professore interessa il codice e l’eta.
Al momento dell’iscrizione lo studente specifica il corso di laurea a cui si iscrive.
Dopo un esame, questo viene verbalizzato con i dati relativi (studente, corso,
professore, voto).
Si vuole periodicamente calcolare la media dei voti di uno studente, e il numero di
studenti di un corso di laurea.
Classi e oggetti A.A. 2008-09 58
�
�
�
�Soluzione esercizio 2
Studente
Nome: stringaCognome:stringaEta’: intero
Iscrizione(c: CorsoDiLaurea)MediaVoti(): reale
Esame Nome: stringaDisciplina: stringa
Nome: stringaCodice: stringa
NumeroStudenti(): intero
Verbalizzazione(s: Studente,
Professore
CorsoDiLaurea
p: Professore, v: intero)
Iscrizione
Insegnamento
Voto: interoCodice: stringa
Eta’: stringa
10..*
0..*
0..*
0..*
Classi e oggetti A.A. 2008-09 59
�
�
�
�Commenti alla soluzione esercizio 2
• La relazione a 3 e necessaria se piu professori possono verbalizzare per un
corso
• L’esame potrebbe anche essere una classe (meno preciso)
• L’operazione Verbalizzazione potrebbe anche appartenere alla classe
Studente (o Professore): introdurremo il concetto di “responsabilita su
un’associazione”
Classi e oggetti A.A. 2008-09 60
�
�
�
�Diagrammi Comportamentali
• Diagrammi di casi d’uso (Use Case Diagrams)
• Diagrammi di interazione (Interaction Diagrams)
– Diagrammi di sequenza (Sequence Diagrams)
– Diagrammi di collaborazione (Collaboration Diagrams)
• Diagrammi di attivita (Activity Diagrams)
• Diagrammi di macchina a stati (Statechart Diagrams)
Diagrammi Comportamentali in UML A.A. 2008-09 61
�
�
�
�Use Case Diagram
Cliente
Sistema di validazione carte di credito
Esecuzione
transazione
Processamentofattura
Saldo transazioni
Gestione conto
Negozio
Istituto dicredito
PrivatoSocieta’
Diagrammi Comportamentali in UML A.A. 2008-09 62
�
�
�
�Sequence Diagram
s : Utente : Centrale
: Coversazione
r : Utente
AlzaRicevitore
ComponiNumero(n)
DaiSegnaleLibero
<<Crea>>
Squilla
AlzaRicevitore
Connetti(r,s)
Connesso(r) Connesso(s)
s ed r possono parlare
Instrada(s,n)
Diagrammi Comportamentali in UML A.A. 2008-09 63
�
�
�
�Activity Diagram
Cliente Venditore Fabbrica
Richiesta
Ordine
Produzione
Spedizione
Lavoro
FatturaRiscossione
Pagamento
Chiusura
Diagrammi Comportamentali in UML A.A. 2008-09 64
�
�
�
�Statechart Diagram (Diagramma degli stati)
• Stato : Valore di un insieme di attributi specifici
• Evento : Azione che provoca una transizione di stato dell’oggetto
• Stati ed eventi si riferiscono ad un singolo oggetto di una specifica classe
Modellazione dinamica A.A. 2008-09 65
�
�
�
�Diagramma degli stati
Spento Inizio
Caldo
In funzione
off
off
off
desiderata
on
desiderata
fine-accensione
inferiore
temperaturatemperaturatemperatura
• Automa a stati finiti in cui gli eventi sono le transizioni
Modellazione dinamica A.A. 2008-09 66
�
�
�
�Diagrammi di oggetti con tempo di vita limitato
• Alla sua creazione, l’oggetto entra in uno degli stati iniziali
• Raggiunto uno stato finale, l’oggetto muore
Modellazione dinamica A.A. 2008-09 67
�
�
�
�Esempio di diagramma
Immatricolazione
promosso promosso promosso
respinto respinto respinto
respinto respinto
promossopromossopromosso
respinto
promosso
Iscr. I anno Iscr. II anno Iscr. III anno
Rip. I anno Rip. II anno Rip. III anno Fuori corso
Diplomato
Espulso
respinto
• Ogni stato iniziale e etichettato dalla condizione iniziale
• Ogni stato finale e etichettato dalla condizione finale
Modellazione dinamica A.A. 2008-09 68
�
�
�
�Condizioni di transizione
Spento Inizio
Caldo
In funzione
off
off
off
desideratadesiderata
fine-accensioneon [acqua non gelata]
temperaturatemperatura
temperaturainferiore
• Le condizioni hanno validita su intervalli di tempo
• Si distinguono dagli eventi che invece non hanno durata (sono istantanei)
• Le condizioni agiscono da guardie rispetto agli eventi
Modellazione dinamica A.A. 2008-09 69
�
�
�
�Operazioni: attivit a e azioni
on / accende spiaSpento Acceso
do: scalda acqua
off / spegne spia
• Gli eventi provocano le operazioni
• Le attivita sono operazioni con una certa durata, e vengono associate agli stati.
• Le azioni sono operazioni istantanee, e vengono associate agli eventi.
• Le attivita possono durate tutto il tempo di permanenza in uno stato oppure
terminare prima
Modellazione dinamica A.A. 2008-09 70
�
�
�
�Esercizio 6
Un orologio (a cristalli liquidi) ha due bottoni (A e B) di setting. Il bottone A selezione
la scelta ciclicamente (display, set ore, set minuti, display). Il
bottone B aumenta l’oggetto selezionato di 1.
Disegnare il diagramma degli stati.
A B
Modellazione dinamica A.A. 2008-09 71
�
�
�
�Soluzione esercizio 6
Visualizza Set ore Set minutido: mostra ore
e minuti do: mostra ore do: mostra minuti
A A
A
B/incrementa ore B/incrementa minuti
Modellazione dinamica A.A. 2008-09 72
�
�
�
�Varianti alla notazione
Inserimento
aggiungi al totaleentra moneta(valore) /
In funzione
entra moneta(valore) / calcola dovuto
annulla / restituisci monete
[resto < 0]
[elemento finito] scegli(elemento)
[resto = 0] [resto > 0]
do: dai scelta do: dai resto
do: verifica sceltae calcola resto
• Gli stati possono essere anonimi
• Le transizioni senza evento avvengono automaticamente quando l’attivita
connessa allo stato e terminata
• Gli eventi che fanno permanere nello stesso stato possono essere indicati
all’interno dello stato stesso
Modellazione dinamica A.A. 2008-09 73
�
�
�
�Relazione tra modello degli oggetti e modello dinamico
• Gli stati sono classi di equivalenza di valori degli attributi degli oggetti
• Gli eventi, le condizioni, le azioni e le attivita sono operazioni nel modello degli
oggetti
• Il modello dinamico descrive il funzionamento delle operazioni e restringe i
possibili valori di un oggetto
Modellazione dinamica A.A. 2008-09 74
�
�
�
�Argomenti non trattati sul diagramma degli stati
• Descrizione dettagliata di eventi e stati
• Diagrammi annidati
• Relazione is-a tra eventi
• Concorrenza
• Comunicazione e sincronizzazione di eventi
Modellazione dinamica A.A. 2008-09 75
�
�
�
�Stumenti software per UML
1. Carta, matita e gomma
2. Qualsiasi strumento per fare disegni (Autocad, . . . )
3. Strumenti di disegno con un modulo specifici per UML
• Dia
• Umbrello
• Visio
4. Strumenti di analisi in UML
• Rational Rose
• Enterprise Architect
• Molti altri
Modellazione dinamica A.A. 2008-09 76
�
�
�
�Bibliografia per la Parte sull’Analisi
• MARTIN FOWLER. UML Distilled (III ed). Pearson, 2004.
• MEILIR PAGE-JONES. Progettazione a oggetti con UML. Apogeo, 2002.
• G. BOOCH, J. RUMBAUGH, I. JACOBSON. The Unified Modeling Language User
Guide. Addison-Wesley, 1999.
• http://www.uml.org
Modellazione dinamica A.A. 2008-09 77