La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

XmlBlackBox La presentazione Alexander Crea 11 Aprile 2010 La presentazione Alexander Crea 11 Aprile 2010.
Programmazione ad oggetti
Generazione dinamica di codice.NET 2.0 Ricci Gian Maria MarCamp : 24 febbraio 2007.
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A1 Introduzione a Java.
Costruttori e Distruttori
Recupero debito quarto anno Primo incontro
Informatica Recupero debito quarto anno Terzo incontro.
PHP.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Semantica Operazionale di un frammento di Java: lo stato
Generalità Linguaggio e Macchina Astratta
1 Strutture dati nel supporto a run time. 2 Entità presenti quando un programma va in esecuzione §programmi dutente (compilati) §routines del supporto.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
XmlBlackBox La presentazione Alexander Crea 7 Giugno 2010 La presentazione Alexander Crea 7 Giugno 2010.
BASI DI DATI BIOLOGICHE - 1. Sommario Introduzione. La analisi biologiche e i dati che producono. Organizzazione dei dati. Esempi.
Gestione dei dati e della conoscenza (agenti intelligenti) M.T. PAZIENZA a.a
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Terza parte: Programmazione ad oggetti in Java. Cosè Java Linguaggio di programmazione definito dalla Sun Obiettivo: sviluppo di applicazioni sicure,
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Struttura dei sistemi operativi (panoramica)
memoria gestita staticamente:
Primi Elementi di Programmazione in C++
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Sistemi Operativi GESTIONE DEI PROCESSI.
AN FI Concetti. Linguaggi di alto livello u Hanno capacita' espressive superiori a quelle del linguaggio macchina u Suggeriscono concetti e modi.
Introduzione a C#.
Elementi di Informatica di base
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Introduzione alla programmazione Object Oriented
Implementazione di un linguaggio ad alto livello (con riferimento a Java)
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
INTRODUZIONE A JAVASCRIPT
Sistemi basati su conoscenza Gestione della conoscenza Prof. M.T. PAZIENZA a.a
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Lezione 1 Panoramica sui paradigmi di programmazione
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
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.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
OBJECT ORIENTED DATABASE introduzione. OGGETTO Ha due componenti:  stato: valore di alcune variabili (variabili di istanza)  comportamento: insieme.
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in FONDAMENTI DI PROGRAMMAZIONE.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
Cose nuove di Java (prima a chiacchiera, poi formalmente)
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Il software Claudia Raibulet
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
I linguaggi di programmazione -GALBIATI ALBERTO -ESPOSITO MATTIA.
XVRC2 Emanuele Ruffaldi Giugno Tre esperimenti con S3D ► Estensioni del Linguaggio ► Pre-Compilatore ► Esecuzione dentro il Java L C J.
Programmazione orientata agli Oggetti Introduzione a Java.
Implementazioni di un analizzatore di protocollo Esistono quattro fondamentali tradeoff per la realizzazione di un analizzatore di protocollo:  Analisi.
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.
Greenfoot Come creare un gioco in pochi semplici passi.
Transcript della presentazione:

La Riflessione computazione Elisa Ferrando

Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale

Sistema Riflessivo E un sistema computazionale dove: E causalmente connesso le modifiche di comportamento si riflettono

Sistema Riflessivo Cosa significa causalmente connesso Esempio Sistema real-time in cui esiste: Del software di controllo di processi esterni Software riflessivo

Sistema Riflessivo Contiene strutture che permettono di effettuare azioni su se stesso In ogni istante deve conoscere: La propria rappresentazione interna Lo stato e la computazione del sistema

Architettura riflessiva Dotare un linguaggio di architettura riflessiva significa: Il compilatore e linterprete forniscono strumenti per gestire la riflessione Il compilatore garantisce il mantenimento della proprietà di connessione causale

Sistema Riflessivo E strutturato in 2 o più livelli Un primo livello D n Un secondo livello D n+1 Ogni livello è base per il successivo e meta-livello per quello inferiore

Sistema Riflessivo D n è formato da entità scritte in linguaggio L n e da un Interprete scritto in linguaggio L n+1 interpretato da un Interprete I n+1 e così via.. L n = L n+1 = Torre Riflessiva

Sistema Riflessivo Connessione tra entità base e meta: Le meta entità supervisionano il lavoro delle entità base tramite intercettazione Ogni azione è catturata dalla meta entità che esegue delle operazioni

Sistema Riflessivo Caratteristiche: Transparency Separation of concerns

Riflessione 2 Tipi: Strutturale Computazionale vera e propria

La Riflessione Applicata principalmente ai linguaggi object-oriented Inizialmente applicata ai linguaggi funzionali

Primi esempi META-PROLOG Linguaggio logico basato sulle meta- teorie Dotato di interprete meta-circolare

SOAR Linguaggio basato sul protocollo a meta-regole Interprete meta-circolare

Riflessione: modelli Per i linguaggi object-oriented abbiamo diversi modelli i principali sono: Meta- classe Meta-oggetto

Meta-classe Ogni entità base è legata ad una meta entità Ogni meta entità è una meta-classe Implementabile solo nei linguaggi che gestiscono le classi come oggetti

Smalltalk Meta-classe = informazione oggetto e riflessiva

Meta-oggetto Ogni entità base è legata ad una o più meta entità I meta oggetti sono istanze di una classe speciale Il meta oggetto può eseguire delle elaborazioni prima delloperazione chiamata sulloggetto e dopo dare il controllo alloggetto

Java Le librerie java.lang e java.lang.reflect offrono la capacita di ispezionare classi e oggetti

Java Tramite le librerie possiamo: Scoprire metodi presenti in una classe Istanziare una classe Invocare metodi, ispezionare e cambiare il contenuto di campi che scopriamo a run-time

Java La classe di partenza e Java.lang.Class Le istanze di Class rappresentano classi e interfacce di una applicazione Java Permette di avere tutte le informazioni riflessive riguardo una classe: Superclasse, interfacce implementate e anche costruttori, campi e metodi definiti dalla classe

Java Alcuni metodi di Class: getConstructors() restituisce un array con i costruttori pubblici della classe rappresentata dall'oggetto su cui si invoca. Il valore restituito è una istanza di java.lang.reflect.Constructor getFields() in modo simile alla lista di costruttori, restituisce la lista dei campi pubblici dell'istanza di Class. Il valore di ritorno è una istanza di java.lang.reflect.Field

Java getMethods() restituisce tutti i metodi pubblici di una classe. Il valore di ritorno è di tipo java.lang.reflect.Method getSuperclass() restituisce la Class che rappresenta la superclasse della Class su cui è invocata. newInstance() restituisce una nuova istanza della classe di cui viene fornito il nome come parametro stringa. Permette di istanziare una classe non conosciuta al momento della compilazione.

Java Vantaggi: Fornisce un modo per collegare ad un programma nuove classi, non conosciute a compile time. Permette di manipolare oggetti di una qualsiasi classe senza inserire nel codice la classe, quindi rinviando il binding fino a runtime.

Java Svantaggi: Invocare metodi o accedere a campi con i meccanismi riflessivi è molto più lento che col codice diretto. Ma se l'uso della riflessione all'interno di un programma è limitato, l'overhead è sostenibile. Capire cosa sta facendo un programma leggendo il codice diventa molto più difficile, poiché il codice è più complesso.

Applicazioni della riflessione Calcolare statistiche sul numero e tipo di operazioni eseguite da un programma Debugging Sistemi di apprendimento Sistemi operativi