Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo che trasforma la descrizione di un problema nella definizione delle classi e degli oggetti che sono richiesti per ottenere i risultati richiesti Ogni classe rappresenta lastrazione di un comportamento che è definito nella descrizione del problema. Ogni oggetto fornisce le funzionalità definite nella sua classe 4 OBJECT-ORIENTED DESIGN Specifica dellarchitettura del sistema e della filosofia che guiderà limplementazione Decomposizione del problema guidata dai dati piuttosto che dalle procedure 4 OBJECT-ORIENTED PROGRAMMING Usare gli oggetti come i mattoni fondamentali del programma Applicare un linguaggio ad oggetti per uno specifico obiettivo di programmazione Organizzare il programma come una collezione di oggetti che collaborano tra loro
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 2 Il Modello ad Oggetti 4 Astrazione –Concettualizzazione che incorpora solo i costituenti che sono essenziali –Le entità concettuali sono individuate dal solo comportamento, e non da come tale comportamento è implementato 4 Incapsulamento –Separare comportamento da implementazione 4 Modularità –Raggruppare componenti con caratteristiche omogenee –Organizzare soluzioni a problemi complessi in maniera da poter maneggiare più facilmente le componenti 4 Gerarchia –Livelli di astrazione delle classi –Classi più generali dànno origine a classi più specifiche: EREDITARIETA
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 3 Le Classi –Descrizione di una famiglia di oggetti tutti con la stessa struttura e medesimo comportamento –Componenti di una classe: Componente statica: DATI (sotto forma di campi) caratterizzano lo stato di un oggetto Componente dinamica: PROCEDURE (sotto forma di metodi) rappresentano il comportamento comune degli oggetti appartenenti alla classe. Manipolano i campi e caratterizzano le azioni che gli oggetti possono effettuare
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 4 Definizione di una classe (esempio: gestione di un magazzino) Riferimento: numero con cui larticolo è registrato Descrizione: testo che descrive larticolo Prezzo: prezzo unitario netto dellarticolo Quantità: numero degli esemplari di tale articolo presenti in magazzino STATO delloggetto ARTICOLO COMPORTAMENTO delloggetto ARTICOLO PrezzoIva: metodo che calcola il prezzo comprensivo di IVA PrezzoTrasporto: metodo che calcola il prezzo del trasporto di un articolo definito come il 5% del prezzo netto Carico: metodo che permette di aggiungere esemplari di un articolo al magazzino ha un parametro q il cui valore viene aggiunto a Quantità Scarico: metodo per scaricare esemplari di un articolo dal magazzino ha un parametro q il cui valore viene sottratto da Quantità Aggiorna: metodo che aggiorna il prezzo di un articolo
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 5 Esempio (continua) Classe ARTICOLO CAMPI Riferimento: Numero Descrizione: Testo Prezzo: Numero Quantità: Numero METODI PrezzoIva (): ritorna (1,20 * Prezzo) PrezzoTrasporto (): ritorna (0,05 * Prezzo) Carico (q): Quantità = Quantità + q Scarico (q): Quantità = Quantità - q Aggiorna (p): Prezzo = p
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 6 Le istanze Il dizionario dei metodi è mantenuto soltanto nella matrice La lista dei campi è mantenuta solo nella matrice, mentre le istanze ne possiedono i valori, per cui i campi corrispondono a variabili di istanza matrice oggetti riprodotti (istanze)
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 7 LEreditarietà Specificità di alcune Categorie di oggetti Specializzazione e fattorizzazione ESEMPIO: dovendo trattare articoli di tipo CAMICIA, sarebbe opportuno avere un campo Taglia e un campo Tessuto, mentre per articolo di tipo TELEVISORE, sarebbe utile un campo Dimensione Non è opportuno che la classe ARTICOLO contenga tutte le possibili caratteristiche e comportamenti dei diversi tipi di articoli La classe ARTICOLO si può specializzare in diverse sottoclassi per descrivere adeguatamente le diverse caratteristiche degli oggetti di tipo articolo
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 8
9 Vantaggi della ereditarietà Usare librerie di classi fornite dal linguaggio specializzandole al caso specifico Riuso di classi definite dal programmatore Modularità: luniverso del programma è diviso in parti indipendenti che raggruppano classi di oggetti secondo le affinità e le dipendenze Modificabilità locale: se si modifica la classe VESTITO aggiungendo un campo per indicare se si tratta di un capo femminile o maschile, solo la classe VESTITO e la sua sottoclasse CAMICIA ne sono affette
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 10 Ereditarietà singola vs. ereditarietà multipla Ereditarietà semplice: una classe può avere al più una superclasse diretta ==> la relazione di ereditarietà è rappresentata da un albero Ereditarietà multipla: una classe può avere diverse superclassi dirette Vantaggi e svantaggi Lereditarietà multipla accresce la modularità dei programmi (la relazione di ereditarietà è un grafo). Lo svantaggio è che la maggiore complessità delle relazioni fra le classi può portare a minore chiarezza nella struttura del codice Lereditarietà multipla dà maggiore possibilità di fattorizzare il codice, evitando duplicazioni, ma maggiore attenzione deve essere rivolta al definire il contenuto delle classi e alla loro correlazione
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 11
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 12 Linvio di messaggi La primitiva send send(oggetto_ricevente, selettore, arg1, arg2, …, argn) oggetto_ricevente è un riferimento alloggetto cui si chiede una azione selettore è il nome del metodo che loggetto ricevente deve eseguire arg1, arg2, …, argn è la lista dei parametri attuali del metodo da eseguire Esempio send(cav_nero, aggiorna, 18500)