introduzione all’ingegneria del software e analisi orientata agli … · 2014. 11. 24. ·...

39
Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof. Andrea Schaerf Corso di Ingegneria del Software Facolt` a di Ingegneria Universit ` a 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

Upload: others

Post on 12-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

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

Page 2: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 3: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 4: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 5: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 6: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 7: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 8: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 9: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 10: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 11: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 12: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 13: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 14: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 15: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 16: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 17: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 18: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 19: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 20: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 21: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 22: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 23: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 24: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 25: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 26: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 27: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 28: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 29: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 30: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 31: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 32: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 33: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 34: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 35: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 36: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 37: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 38: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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

Page 39: Introduzione all’Ingegneria del Software e Analisi Orientata agli … · 2014. 11. 24. · Introduzione all’Ingegneria del Software e Analisi Orientata agli Oggetti in UML Prof

�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