Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoVeronica Landi Modificato 9 anni fa
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)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.