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

Slides:



Advertisements
Presentazioni simili
Il paradigma Object Oriented
Advertisements

I tipi Strutturati.
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Unified Modeling Language
Linguaggi di programmazione
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Metodologie di Programmazione = decomposizione basata su astrazioni
Semantica Operazionale di un frammento di Java: lo stato
Generalità Linguaggio e Macchina Astratta
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Principi di Programmazione Object-Oriented
Principi di Programmazione Object-Oriented
4 – Progettazione – Introduzione e Modello E-R
Basi di Dati prof. A. Longheu 4 – Progettazione – Introduzione e Modello E-R Cap. 5 Basi di dati Atzeni – Ceri – Paraboschi - Torlone.
Ontologie per la costruzione di un portale sull'Adobe.
TW Analisi dei documenti n Classificazione dei componenti n Selezione dei componenti, costruzione della gerarchia, dei blocchi informativi e degli elementi.
©Carlo Tasso 1999 Object Oriented Programming Slide 1 OO Analysis Vs. OO Design OOA – Object Oriented Analysis. –Specifica COSA, IN QUALE CONTESTO il sistema.
Intelligenza Artificiale 2 Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
Metodologie per la gestione di conoscenza ontologica Prof. M.T. PAZIENZA a.a
Maria Teresa PAZIENZA a.a
Intelligenza Artificiale 1 Gestione della conoscenza lezione 8
Sistemi basati su conoscenza Basi di conoscenza: rappresentazione e ragionamento (2 - Reti semantiche, Frames) Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Basi di conoscenza: rappresentazione e ragionamento (2 - Reti semantiche, Frames) Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Introduzione al linguaggio Java
Progettazione dei sistemi interattivi (A.A. 2004/05) - Lezione 3 1 La relazione di ereditarietà Punto di vista insiemistico: la relazione di ereditarietà
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
Capitolo 1: Introduzione ai computer e a Java
Progettazione di una base di dati
Java base IV: Java e la programmazione O.O.
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
CLASSI ED EREDITARIETÀ Come si è visto, è cruciale che la gerarchia rispecchi la realtà del mondo ma a volte ciò contraddice principi di efficienza Esempio:
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice.
Introduzione alla modellazione di sistemi interattivi
AlgoLab - Ereditarieta' Ereditarietà e polimorfismo in Java Laboratorio di Algoritmi 02/03 Prof. Ugo de Liguoro.
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
Università degli Studi di Napoli Parthenope programmazione III.
ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio.
Lezione 1 Panoramica sui paradigmi di programmazione
I DBMS BASI DI DATI (DATABASE) Insieme organizzato di dati utilizzati
Survey sugli ADLs odierni Antonio Labella Matr Corso di Laurea Specialistica in Informatica Corso di Analisi e testing di sistemi basati su compomenti.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
OBJECT ORIENTED DATABASE introduzione. OGGETTO Ha due componenti:  stato: valore di alcune variabili (variabili di istanza)  comportamento: insieme.
5/6/20151 Metodi formali dello sviluppo software a.a.2013/2014 Prof. Anna Labella.
estensione (con piccole varianti) di quella in
Ese 1 (del 31 Marzo 2004). Il compilatore Non esegue il programma, non guarda i valori che possono assumere di volta in volta le variabili, non fa assunzioni.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini,
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini,
Cose nuove di Java (prima a chiacchiera, poi formalmente)
AOT Lab Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Rappresentazione della Conoscenza e Ragionamento.
1 Semantica Operazionale di un frammento di Java: lo stato estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini, Elementi di Semantica.
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 4 - Progettazione del software Ernesto Damiani Università degli Studi.
1 Metodologie di Programmazione §tecniche per la programmazione orientata ad oggetti §esemplificate utilizzando il linguaggio Java §testo di riferimento.
Per un nuovo orientamento nella progettazione dei linguaggi di programmazione Tesi di Laurea di: RICCARDO SOLMI Università degli Studi di Bologna Facoltà.
1 Semantica Operazionale di un frammento di Java: intro estensione (con piccole varianti) di quella di FP | v |
1 Semantica Operazionale di un frammento di Java: intro estensione (con piccole varianti) di quella di FP | v |
ArchJava e AcmeStudio Studio delle tecnologie e case study Studente: Marco Di Sabatino Di Diodoro Esame: Analisi e Testing di sistemi a componenti Professore:
Eprogram informatica V anno.
La programmazione ad oggetti
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

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

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

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

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)

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à

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

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

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

Semantica  e (ereditarietà -  ausiliarie)

Semantica  e (ereditarietà - regole)

Semantica  d (delega -  ausiliarie)

Semantica  d (delega - regole)

Semantica  c (concatenazione -  ausil.)

Semantica  c (concatenazione - regole)

Tipi  e

Tipi  d

Tipi  c

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

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.

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.

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.

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.

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

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)