Marina Mongiello Principi di Programmazione Object-Oriented.

61
Marina Mongiello Principi di Programmazione Object- Oriented

Transcript of Marina Mongiello Principi di Programmazione Object-Oriented.

Page 1: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Principi di Programmazione Object-Oriented

Page 2: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Modello ad oggetti

Concetto di oggetto riconducibile a diversi settori:– Software engineering– Linguaggi di programmazione– Basi di dati– Intelligenza Artificiale

Page 3: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Approcci alla produzione di programmi

• Programmazione in the small– Progetto di algoritmi e strutture dati

• Programmazione in the large– Software engineering

Page 4: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Metodi per la produzione di programmi

• Metodi tradizionali: – programmazione strutturata orientata alle

funzioni: • flusso di controllo • flusso di dati

• Metodi attuali: – programmazione orientata agli oggetti:

• classe • oggetti• servizi

Page 5: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Strumenti per la progettazione

• Orientati alle funzioni:– Diagramma di flusso (in the small)– Analisi e progetto strutturato (in the large)

• Orientati agli oggetti:– OOSE, OMT, ecc. (in the large)

• Unified Modeling Language UML

Page 6: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Approcci e Metodi

ProgrammazioneOO

Programmazione strutturata

Programming in the large

Programming in the small

UML

Flow chart

Structured software

engineering

Page 7: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Modello del software

• Necessità di modellare un sistema: – creare una astrazione del sistema attraverso

cui specificarne la struttura ed il comportamento.

• Il modello di un software deve rappresentare le informazioni trasformate dal software, le funzioni e sottofunzioni che effettuano tali trasformazioni e il comportamento del sistema conseguente alle trasformazioni stesse

Page 8: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Processo software

• Definisce la strategia adottata nella realizzazione del software. – Comprende metodi, tecniche e strumenti.– Si fonda sul concetto di qualità totale– E’ caratterizzato da:

• Attività portanti• Un insieme di compiti: punti di controllo, prodotti intermedi

(modelli, documenti), punti di garanzia dalla qualità.• Attività ausiliarie: garanzie dalla qualità, gestione delle

configurazioni

Page 9: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Processo di sviluppo unificato

• Fasi del ciclo di vita– Avviamento: consente di stabilire l’effettiva

realizzabilità del progetto– Elaborazione: preparazione del piano del

progetto– Costruzione: implementazione di un sistema

funzionante per un ristretto numero di utenti tester

– Transizione: consegna ai clienti del sistema completamente funzionante

Page 10: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Workflow del Processo Unificato

• Requisiti: costruzione del modello dei casi d’uso che definisce i requisiti funzionali del sistema modellato

• Analisi: raffinamento e strutturazione dei requisiti funzionali descritti nel modello dei casi d’uso mediante la costruzione del modello di analisi

• Progetto: descrizione della realizzazione fisica dei casi d’uso costruzione di un modello di progetto ed un modello di deployment

• Implementazione:definizione dei componenti software che realizzazione gli elementi del modello di progetto

• Test: descrizione dei dati test e delle modalità secondo cui condurre i test del sistema nel modello di test

Page 11: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Modelli UML associati a ciascun workflow

– dei casi d’uso– di analisi– di progetto– di implementazione– di test– di deployment

Lo sviluppo di ciascun modello è condotto in modo trasversale attraverso le 4 fasi del processo unificato

Page 12: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Iterazioni e raffinamenti

• Occorre adottare un modello iterativo e incrementale nel processo di sviluppo– Iterazione:

• un progetto che attraversa trasversalmente ciascuno dei workflow del processo unificato

– Raffinamento: • è prodotto in ciascuna iterazione • versione del progetto con maggiori funzionalità rispetto alla

versione precedente

• Scopo dell’approccio: – Gestione dei rischi del progetto iniziale– Valutazione dell’estensione del progetto iniziale

Page 13: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Punti di vista sul sistema

• I 6 modelli sono sviluppati in modo incrementale attraverso i 5 workflow e attraverso le 4 fasi del processo unificato

• E’ possibile definire diversi punti di vista sul sistema sotto cui considerare i diversi modelli

Page 14: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Punti di vista su un sistema software

Progetto Implementazione

Processo Deployment

Casi d’uso

Page 15: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Modello guidato dai casi d’uso

• UML considera un sistema secondo prospettive diverse in base agli utilizzatori

• Fondamentale è la prospettiva dei casi d’uso che rappresentano la descrizione di un particolare aspetto del sistema

• La modellazione in UML è guidata dai casi d’uso

Page 16: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Casi d’uso

• Definiscono gli scenari d’uso del sistema • Offrono una descrizione dei modi in cui il sistema sarà

utilizzato.• Scenario:

– una sequenza di passi che descrivono l’interazione tra un utente ed il sistema

• Per la descrizione dei casi d’uso occorre individuare:– attori

• principali • secondari

– ruoli• E’ un testo informale che descrive il ruolo di un attore nel

corso dell’interazione con il sistema

Page 17: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Rappresentazione grafica in UML

• Attore • Caso d’uso

Caso d’uso

Caso d’uso

Page 18: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Concetti object oriented

• Oggetto: una entità del mondo reale• Classe:un insieme di oggetti aventi le

stesse caratteristiche• Attributi: proprietà di classi ed oggetti che

ne definiscono le caratteristiche• Metodi: definiscono il comportamento di

un oggetto• Operazioni: definiscono il comportamento

degli oggetti istanze di una classe

Page 19: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Principi object oriented

• Ereditarietà: – ciascuna classe può essere definita in termini di una

classe esistente. La nuova classe (sottoclasse) contiene automaticamente la definizione di elementi propri della classe originaria (superclasse)

• Polimorfismo: – pluralità di forme, gli oggetti possono ridefinire le

operazioni della classe di cui fanno parte

• Information Hiding (incapsulamento):– ciascuna classe nasconde al proprio interno i dettagli

implementativi

Page 20: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Esempio: ereditarietà

Classificazione delle specie animali

Vertebrati

Pesci Anfibi Rettili Mammiferi Uccelli

Page 21: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Oggetto

• Identità: espressa da un nome

• Stato: include le proprietà dette attributi che descrivono gli oggetti

• Comportamento: rappresentato da funzioni dette metodi che utilizzano o cambiano il valore degli attributi

Page 22: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Classe

• Un insieme di oggetti aventi le stesse caratteristiche. E’ caratterizzata da:– Identità: definisce il nome della classe– Attributi: la classe non ha stato, ma definisce

proprietà locali che sono l’astrazione delle proprietà comuni agli oggetti istanze della classe

– Operazioni: definiscono il comportamento della classe. Rappresentano i servizi che possono essere richiesti da un oggetto. I metodi sono implementazioni delle operazioni

Page 23: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Visibilità delle proprietà

Una classe è concettualmente divisa in due parti:• Una parte visibile che fornisce l’unico modo

tramite il quale è possibile operare sugli oggetti della classe e descrive che cosa, in termini di operazioni ammissibili è possibile fare sugli oggetti

• Una parte nascosta il cui contenuto non è visibile all’esterno della classe e che riguarda come le funzionalità visibili sono realizzate

Page 24: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Rappresentazione grafica in UML

Classe Oggetto

operazioni

Classe

attributi

Oggetto:Classe

attributo1=valore1attributo2=valore2

Page 25: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Relazioni tra classi

• Associazione: connessione strutturale tra classi

• Aggregazione: relazione in cui una o più classi sono parti di una classe intera

• Generalizzazione: (ereditarietà) relazione in cui una classe (sottoclasse) eredita gli attributi e le operazioni di una superclasse– multipla– semplice

Page 26: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Rappresentazione in UML delle relazioni tra classi

classe1 classe2

classe intera

classe parte

sottoclasse sottoclasse

superclasse

generalizzazione

aggregazione

associazione

Page 27: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Relazioni tra i casi d’uso

– Inclusione: • un caso d’uso include esplicitamente il comportamento di un

altro in un punto specifico dell’azione. • Il meccanismo serve per eliminare comportamenti ripetuti

all’interno di più casi d’uso

– Estensione: • un caso d’uso include implicitamente il comportamento di un

altro in uno o più punti detti di estensione• Il meccanismo è utilizzato per fattorizzare comportamenti

opzionali o che si verificano in determinate circostanze

– Generalizzazione: • analoga alla generalizzazione per le classi

Page 28: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

extend

Rappresentazione in UML delle relazioni tra casi d’uso

generalizzazione

estensione

inclusione

include

Caso d’uso padre

Caso d’uso figlio Caso d’uso figlio Caso d’uso base Caso d’uso esteso

Page 29: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagrammi UML

• Strutturali– Delle classi– Degli oggetti

• Comportamentali– Casi d’uso (use case) – Attività (activity diagram)– Sequenza– Collaborazione– Transizione di stato (state/transition diagram)

• Architetturali– Componenti

Page 30: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Workflow di Analisi

• Scopo del workflow di analisi è delineare un modello di analisi

• Il modello di analisi – si compone di una serie di diagrammi che

descrivono il software nel suo contesto operativo rispetto ai requisiti.

– rappresenta le informazioni, le funzionalità e il comportamento nel contesto degli elementi di un modello ad oggetti

Page 31: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagramma delle classi

• Rappresenta la struttura del sistema che si sta sviluppando

• Descrive il tipo degli oggetti che compongono il sistema e le relazioni statiche tra loro esistenti

• Mostra gli attributi e le operazioni di una classe

Page 32: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagramma degli oggetti

• Rappresenta una parte della struttura del sistema che si sta modellando

• Rappresenta oggetti e valori specifici per gli attributi

Page 33: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagramma dei casi d’uso

• Descrive le funzionalità fondamentali che il sistema deve realizzare in termini di scenari di utilizzo del sistema

• Descrive gli scenari percepiti in modi diversi dai diversi attori

• Contiene la rappresentazione degli attori e dei casi d’uso usando delle frecce per associare gli attori ai casi d’uso con cui interagiscono

Page 34: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagramma di casi d’uso

Caso d’usopunti di estensione

<<include>>

<<extend>>punti di estensione

Generalizzazione

Page 35: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Package di analisi

Rappresenta il raggruppamento concettuale di elementi dell’analisi.

Comprende le classi di analisi e rappresenta le loro interazioni

Page 36: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Workflow di progetto

• Nel workflow di progetto si delinea il modello di progetto.

• Nel modello di progetto:– si indicano gli oggetti derivati da ciascuna classe e le

loro interazioni– si implementano i comportamenti e le comunicazioni– si rappresenta dinamicamente il comportamento del

sistema mediante la modellazione delle comunicazioni fra gli oggetti

Page 37: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Messaggio

• Rappresenta la comunicazione tra due oggetti o all’interno di un oggetto

• La comunicazione è rappresentata da due tipi di diagrammi:– di collaborazione– di sequenza

che rappresentano la stessa informazione con diversi dettagli

Page 38: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagramma di sequenza

• Specifica come gli oggetti interagiscono evidenziando la sequenza temporale dei messaggi scambiati

• Il diagramma ha due dimensioni– sull’asse orizzontale sono rappresentati gli

oggetti che interagiscono– sull’asse verticale la sequenza temporale dei

messaggi

Page 39: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Elementi del diagramma di sequenza

• Gli oggetti sono rappresentati come box in cima ad una linea tratteggiata verticale– Lifeline: rappresenta la vita dell’oggetto– Box di attivazione: rappresenta il periodo

durante il quale l’oggetto ha il controllo del flusso

Page 40: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagramma di sequenza

un Oggetto

nuovo Oggettocreazione

messaggio

ritorno

delega interna

distruzione

Page 41: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagramma di collaborazione

• Illustra come gli oggetti interagiscono evidenziando le relazioni tra gli oggetti che collaborano

• Le relazioni sono specificate anche nel diagramma delle classi; in questo diagramma assumono la forma di link istanza della associazione

Page 42: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagramma di collaborazione

nome dell’oggetto: classe

nome dell’oggetto: classe

1: messaggio semplice()

messaggio asincrono

nome del ruolo

nome del ruolo

1.1*: messaggio di iterazione()1.2: [condizione] messaggio()

Page 43: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Raffinamento della struttura del sistema

• Il modello di progetto include oltre ai diagrammi di collaborazione e di sequenza che modellano gli aspetti dinamici del comportamento del sistema anche diagrammi che modellano gli aspetti strutturali

• Raffinando la struttura del modello, il diagramma delle classi viene arricchito con ulteriori informazioni riguardanti le operazioni e gli attributi.

• Le classi diventano più specifiche: classi di progetto

Page 44: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Classi di progetto

• Dettagli di attributi e di operazioni– Visibilità

• pubblica +• protetta #• privata -

– Dettagli di attributi• molteplicità• modificabilità• frozen

– Dettagli di operazioni• proprietà per l’esecuzione parallela e thread

Page 45: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Attività e azioni

• Attività:– E’ un lavoro svolto da un oggetto in maniera

continuativa– Può essere suddivisa in attività più semplici

• Azione:– E’ un insieme di computazioni eseguibili in

modo indivisibile (è atomica)– Si assume che sia istantanea

Page 46: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagramma delle attività

• Rappresenta azioni sequenziali o parallele

• E’ necessario rappresentare punti di sincronismo

Page 47: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Ciclo di vita di un oggetto

• Evento:– Qualcosa che accade ed ha rilevanza per un

oggetto

• Stato:– Condizioni in cui un oggetto può trovarsi

durante il suo ciclo di vita

• Transizione:– Passaggio di un oggetto da uno stato ad un

altro

Page 48: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagramma di stato

• Rappresenta la macchina a stati di un oggetto. Indica:– Gli stati che un oggetto può assumere

durante il suo ciclo di vita– Gli eventi a cui può rispondere– Le possibili risposte che può fornire a quegli

eventi– Le transizioni tra gli stati dell’oggetto

Page 49: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Evento(parametri)[condizione]/azione

Diagramma di stato

Nome dello Stato

entry / azionedo / attivitàexit / azione

evento/ azione(parametri)

Nome dello stato

Nome del superstato

Page 50: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Package di progetto

• Rappresenta il raggruppamento degli elementi di progetto. Comprende i diagrammi:– di sequenza– di collaborazione– di stato– delle attività– delle classi di progetto

Page 51: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Workflow di implementazione

• Si sviluppa il modello di implementazione– Illustra come gli elementi del modello di

progetto sono organizzati in componenti software sotto forma di file di codice sorgente, librerie collegate dinamicamente ecc.

Page 52: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Elementi del sistema

• Package:– Raggruppamento concettuale di elementi del modello

• Componente:– Raggruppamento di elementi fisici del sistema– Rappresenta un modulo di codice

• Package e componenti possono coincidere ma anche essere differenti: una singola classe può essere presente in più componenti ma essere definita in un solo package

Page 53: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagramma di componenti

• Illustra i componenti di un sistema e le relative dipendenze.

• Dipendenze: mostrano come i cambiamenti apportati ad un componente si ripercuotono sugli altri. Esistono dipendenze:– di comunicazione– di compilazione

Page 54: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagramma di deployment

• Mostra le relazioni fisiche tra i componenti software ed hardware del sistema finito.

• Le unità computazionali sono rappresentate come nodi

• Le associazioni tra nodi rappresentano le connessioni fisiche usate dai componenti del sistema per interagire

Page 55: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Diagramma di deployment

Componente 2

Componente 1

Page 56: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Fattori di qualità del SW

• Qualità esterne– Riusabilità– Estendibilità

• Qualità interne– Strutturazione– Modularità

Page 57: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Riusabilità: vantaggi

• Riduce la quantità di lavoro necessario

• Evita di ripetere le fasi di sviluppo

• Aumenta la qualità del software: il codice è già stato testato verificato e l’uso

• Software più affidabile

Page 58: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Fattori di qualità influenzati dall’approccio OO

Esterne Favorite da Interne Favorite daEstensibilità •Ereditarietà Strutturazione •Incapsulamento

•Ereditarietà

Riusabilità •Ereditarietà•Concetto di Classe

Modularità •Concetto di classe

Page 59: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Esempio: diagramma delle classi

Classe

operazioni

Individuo

Nome:Cognome:Telefono:

Rubrica

attributo1=valore1attributo2=valore2

Page 60: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Esempio: diagramma dei casi d’uso

Iscrizione

Verifica pagamento

Verifica esonero tasse

Verifica dati

Controllo pagamento

Controllo documenti

Studente

Page 61: Marina Mongiello Principi di Programmazione Object-Oriented.

Marina Mongiello

Esempio: diagramma delle classi

operazioni

Studente

Nome: stringaCognome:stringa

Matricola:intEtà:int