La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Meccanismi di condivisione ereditarietà, delega, concatenazione Riccardo Solmi 19 luglio 1999.

Presentazioni simili


Presentazione sul tema: "Meccanismi di condivisione ereditarietà, delega, concatenazione Riccardo Solmi 19 luglio 1999."— Transcript della presentazione:

1 Meccanismi di condivisione ereditarietà, delega, concatenazione Riccardo Solmi 19 luglio 1999

2 Introduzione n Enfasi sull’ereditarietà e sulla contrapposizione fra linguaggi class-based e object-based n Tassonomia come classificazione esaustiva n Distinzione fra proprietà esclusive e accidentali n Java, Self, Kevo n Confronto alla pari con metodi formali

3 Argomenti della presentazione n Descrizione dei tre meccanismi di condivisione n Scelta dei tre nuclei di linguaggio n Sintassi, semantica e tipi n Dimostrazione di equivalenza dei tre meccanismi n Conseguenze sui modelli di implementazione e di rappresentazione n Conclusioni

4 Meccanismi di condivisione n condivisione = conformità + allocazione n conformità u ereditarietà (classi) u delega (tratti, prototipi) u concatenazione (oggetti autosufficienti) n allocazione u istanziazione (ricette) u clonazione(prototipi)

5 Scelta dei nuclei di linguaggio n operazioni sugli attributi temporalmente illimitate n uniformità di trattamento degli attributi n attributi condivisi n ereditarietà dinamica n dominio dell’allocazione dinamica n costruttori n istanziabilità

6 Sintassi  e (ereditarietà) D::=class T { B } |class T extends T' { B } |D ; D B::=static T a |T a |m() { S } |B ; B S::=  |Q = E |Q() |S ; S E::=new T |Q Q::=this |a |m |super.m |a.b |a.m

7 Sintassi  d (delega) D::=object T { B } |object T delegates T' { B } |D ; D B::=T a |m() { S } |B ; B S::=  |Q = E |Q() |S ; S E::=clone T |Q Q::=self |a |m |delegated m |a.b |a.m

8 Sintassi  c (concatenazione) D::=object T { B } |object T embeds T' { B } |D ; D B::=shared T a |T a |m() { S } |B ; B S::=  |Q = E |Q() |S ; S E::=clone T |Q Q::=self |a |m |embedded m |a.b |a.m

9 Semantica  e (ereditarietà -  ausiliarie)

10 Semantica  e (ereditarietà - regole)

11 Semantica  d (delega -  ausiliarie)

12 Semantica  d (delega - regole)

13 Semantica  c (concatenazione -  ausil.)

14 Semantica  c (concatenazione - regole)

15 Tipi  e

16 Tipi  d

17 Tipi  c

18 Equivalenza semantica n Definisco tre trasformazioni di programmi:  e   d   c   e n Applico le stesse regole semantiche ad un programma e al suo trasformato n Dimostro che le funzioni ausiliarie danno lo stesso risultato

19 Trasformazione da  e a  d n Per ogni classe E definisco due oggetti D t e D p con ruoli rispettivamente di tratto e prototipo. In D t definisco gli eventuali campi statici di E e tutti i metodi; in D p definisco tutti i campi di istanza definiti in E e nelle classi che compongono la catena di ereditarietà. Per ogni classe E e superclasse E: D p delega a D t e D t delega al D t definito per la superclasse. D p viene clonato dove E viene istanziato. Se una classe E non viene istanziata non è necessario definire D p. D p è clonabile quando E è istanziabile.

20 Vincolo G e (e,a) = G d (d,a) n Il dominio di entrambe le funzioni è dato dall’insieme dei campi definiti rispettivamente nella catena di ereditarietà di e e nella catena di delega di d. Poiché la trasformazione mappa tutti i campi definiti nella catena di ereditarietà sugli oggetti della catena di delega limitandosi a fare degli spostamenti i due domini sono uguali.

21 Vincolo G e (e,m) = G d (d,m) n Il dominio di entrambe le funzioni è dato dall’insieme dei metodi definiti rispettivamente nella catena di ereditarietà di e e nella catena di delega di d. Poiché la trasformazione mappa tutti i metodi definiti nella catena di ereditarietà sugli oggetti della catena di delega limitandosi a fare degli spostamenti i due domini sono uguali.

22 Vincolo U e (M,e,a,v) = U d (M,d,a,v) n Il dominio di entrambe le funzioni è dato dall’insieme dei campi definiti rispettivamente nella catena di ereditarietà di e e nella catena di delega di d. Poiché la trasformazione mappa tutti i campi definiti nella catena di ereditarietà sugli oggetti della catena di delega limitandosi a fare degli spostamenti i due domini sono uguali. In entrambi i casi l’aggiornamento di un campo condiviso avviene in una entità della catena di condivisione comune a tutti gli oggetti che condividono il campo.

23 Conseguenze n Indipendenza del modello di implementazione n Indipendenza del modello di rappresentazione u Vista incrementale e vista di concatenazione n Stessa tipabilità

24 Conclusioni n Differenze fra linguaggi basati su classi o su oggetti? Quando vengono determinate le caratteristiche dei prototipi n Rilevanza della riorganizzazione automatica della gerarchia di condivisione n Enfasi ereditarietà, delega vs concatenazione n Scelta del modello? Gusto e tradizione n In prospettiva attaccano il paradigma (gerarchia e dispatching)


Scaricare ppt "Meccanismi di condivisione ereditarietà, delega, concatenazione Riccardo Solmi 19 luglio 1999."

Presentazioni simili


Annunci Google