1 / 24

Meccanismi di condivisione

Meccanismi di condivisione. ereditarietà, delega, concatenazione Riccardo Solmi 19 luglio 1999. Introduzione. Enfasi sull’ereditarietà e sulla contrapposizione fra linguaggi class-based e object-based Tassonomia come classificazione esaustiva

zody
Download Presentation

Meccanismi di condivisione

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. Meccanismi di condivisione ereditarietà, delega, concatenazione Riccardo Solmi 19 luglio 1999

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

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

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

  5. Scelta dei nuclei di linguaggio • operazioni sugli attributi temporalmente illimitate • uniformità di trattamento degli attributi • attributi condivisi • ereditarietà dinamica • dominio dell’allocazione dinamica • costruttori • 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 • Definisco tre trasformazioni di programmi:ed c e • Applico le stesse regole semantiche ad un programma e al suo trasformato • Dimostro che le funzioni ausiliarie danno lo stesso risultato

  19. Trasformazione da e a d • Per ogni classe E definisco due oggetti Dt e Dp con ruoli rispettivamente di tratto e prototipo. In Dt definisco gli eventuali campi statici di E e tutti i metodi; in Dp 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: Dp delega a Dt e Dt delega al Dt definito per la superclasse. Dp viene clonato dove E viene istanziato. Se una classe E non viene istanziata non è necessario definire Dp. Dp è clonabile quando E è istanziabile.

  20. Vincolo Ge(e,a) = Gd(d,a) • 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 Ge(e,m) = Gd(d,m) • 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 Ue(M,e,a,v) = Ud(M,d,a,v) • 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 • Indipendenza del modello di implementazione • Indipendenza del modello di rappresentazione • Vista incrementale e vista di concatenazione • Stessa tipabilità

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

More Related