1 / 11

Sulla realizzazione dell’ereditarietà

Sulla realizzazione dell’ereditarietà. Ereditarietà: statica / dinamica Binding: statico / dinamico Attribuzione dei tipi: statica / dinamica. Attribuzione dei tipi. Attribuzione dei tipi statica : le variabili, i parametri formali, il risultato dei metodi, sono tipati

suki-reid
Télécharger la présentation

Sulla realizzazione dell’ereditarietà

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sulla realizzazione dell’ereditarietà • Ereditarietà: statica / dinamica • Binding: statico / dinamico • Attribuzione dei tipi: statica / dinamica Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4

  2. Attribuzione dei tipi • Attribuzione dei tipi statica: le variabili, i • parametri formali, il risultato dei metodi, sono tipati • Il compilatore può verificare a priori se lo scambio • dei messaggi e l’accesso alle variabili sono validi e • consistenti • Attribuzione dei tipi dinamica: il compilatore • ammette a priori tutti gli scambi di messaggi e tutti • gli accessi alle variabili - La loro validità viene • verificata solo a run-time Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4

  3. Designazione dell’oggetto ricevente: self e super Supponiamo di aggiungere un metodo “prezzoTotale” alla classe ARTICOLO,Calcolato come prezzoIva + prezzoTrasporto PROBLEMA: il prezzoIva di un articolo di lusso è calcolato diversamente dal prezzoIva di un articolo normale. Il metodo prezzoTotale deve quindi prevedere un trattamento differenziato se applicato ad articoli della sottoclasse ARTICOLO_LUSSO Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4

  4. Designazione dell’oggetto ricevente: self e super (cont.) Soluzione: uso della variabile speciale “self”: è un riferimento allo stesso oggetto che esegue “prezzoTotale” prezzoTotale (): return (send (self, prezzoIva) + send (self, prezzoTrasporto)) Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4

  5. Esempio: uso di self L’oggetto cav, istanza della classe CAVIALE, riceve il messaggio: send (cav, prezzoTotale)Esegue quindi il metodo prezzoTotale della classe ARTICOLO, che gli rimanda i messaggi: send (cav, prezzoIva) e send (cav, prezzoTrasporto) A questo punto cav esegue correttamente i metodi prezzoIva e prezzoTotale della classe ARTICOLO_LUSSO, come richiestoOSSERVAZIONE: notare l’utilità del binding dinamico Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4

  6. La variabile speciale super Supponiamo che il metodo “prezzoTrasporto” della classe ARTICOLO_LUSSO sia una specializzazione del corrispondente metodo della superclasse ARTICOLO,e che anche la sottoclasse ARTICOLO_DEPERIBILE specializzi lo stesso metodo,ma in maniera differente: ARTICOLOprezzoTrasporto(): return (0,05 x prezzo) ARTICOLO_LUSSOprezzoTrasporto(): return (0,06 x prezzo) ARTICOLO_DEPERIBILE prezzoTrasporto(): return (15.000 + 0,05 x prezzo) CAVIALE UOVA Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4

  7. La variabile speciale super (continua) • Il metodo “prezzoTrasporto” può essere scritto in entrambe le sottoclassi • Utilizzando il metodo corrispondente della superclasse nel modo seguente: • in ARTICOLO_LUSSO: prezzoTrasporto (): return (1,2 x send (super, prezzoTrasporto)) • in ARTICOLO_DEPERIBILE: prezzoTrasporto (): return (15.000 + send (super, prezzoTrasporto))Con la variabile speciale super, il messaggio è inviato allo stesso oggetto, • come con self, ma la ricerca del metodo da eseguire viene fatta nella • superclasse Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4

  8. Realizzazione di super PROBLEMA (soluzione dei conflitti): sia ob l’oggetto ricevente un messaggio con selettore sel, e sia C la superclasse di ob che contiene il metodo da eseguire. Se questo metodo fa riferimento a super, in quale classe va cercato il supermetodo? • Soluzione 1: viene scelto il primo metodo di selettore sel • incontrato al di sopra della classe C, nella lista di priorità • di C • Soluzione 2: viene scelto il primo metodo di selettore sel • incontrato al di sopra della classe C, nella lista di priorità • di ob Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4

  9. Fusione e composizione di oggetti Costruzione di classi per “fusione” di oggetti Ereditarietà multipla ARTICOLO ELETTRODOMESTICO ARTICOLO_LUSSO TELEVISORE Concettualmente corretto: TELEVISOREè un ELETTRODOMESTICO ed è unARTICOLO_LUSSO (relazione is_a) Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4

  10. Fusione e composizione di oggetti (continua) RUOTA CARROZZERIA MOTORE AUTOMOBILE Concettualmente scorretto: AUTOMOBILEnon è una CARROZZERIA, né un MOTORE,né una RUOTA Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4

  11. Fusione e composizione di oggetti (continua) Per la composizione di oggetti esiste già un valido meccanismo disponibile: le variabili di istanza AUTOMOBILEcarrozza : CARROZZERIAmotore : MOTOREruote_ant : RUOTA ruote_pos : RUOTA La classe AUTOMOBILE non eredita da CARROZZERIA, MOTORE, RUOTA, bensì possiede dei campi definiti di tali tipi (relazione has_a) NOTA: una classe può ereditare da un’altra una sola volta Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4

More Related