sulla realizzazione dell ereditariet
Download
Skip this Video
Download Presentation
Sulla realizzazione dell’ereditarietà

Loading in 2 Seconds...

play fullscreen
1 / 11

Sulla realizzazione dell’ereditarietà - PowerPoint PPT Presentation


  • 108 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Sulla realizzazione dell’ereditarietà' - suki-reid


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
sulla realizzazione dell ereditariet
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

attribuzione dei tipi
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

designazione dell oggetto ricevente self e super
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

designazione dell oggetto ricevente self e super cont
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

esempio uso di self
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

la variabile speciale super
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

la variabile speciale super continua
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

realizzazione di super
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

fusione e composizione di oggetti
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

fusione e composizione di oggetti continua
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

fusione e composizione di oggetti continua1
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

ad