Java & JESS Ettore Colombo 10 Gennaio 2007 Ingegneria della Conoscenza e Sistemi Esperti.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Costruttori e Distruttori
Recupero debito quarto anno Primo incontro
Java: programmazione concorrente con condivisione di memoria
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Intelligenza Artificiale
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Esercitazione Frame. Argomento Realizzazione di un tipo di dato astratto Usare le eccezioni per segnalare situazioni particolari Invariante e funzione.
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Fondamenti di Informatica
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Introduzione al linguaggio Java
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
Scomposizione di stringhe
Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 1 Estensione di classi: il Contratto INTERFACCIA E REALIZZAZIONE Che cosa realizza una.
Approfondimento delle classi
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
1 Le gerarchie di tipi. 2 Supertipi e sottotipi 4 un supertipo –class –interface 4 può avere più sottotipi –un sottotipo extends il supertipo ( class.
Sistemi Operativi GESTIONE DEI PROCESSI.
Intelligenza Artificiale
Java base IV: Java e la programmazione O.O.
Programmazione in Java
Sistemi a Regole Ettore Colombo 13 Dicembre 2006 Ingegneria della Conoscenza e Sistemi Esperti.
JESS: Esercizi Ettore Colombo Dicembre 2006 Ingegneria della Conoscenza e Sistemi Esperti.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
JAVA Franco Bombi 8 ottobre FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java.
Java Contardi Carlo A.S. 2008/09.
Programmazione concorrente
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
1 Applet ed HTML Fondamenti di Informatica Corso D.
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
Jess, The Rule Engine for the Java Platform
Astrazione procedurale ed eccezioni
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
Gestione dei thread in Java
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Primo Compitino Primo esercizio Identificare gli errori segnalati dal compilatore Verifica statica del codice Regole di binding per i nomi (quelle.
1 Progettazione dettagliata di un Tipo di Dato Astratto: l’ambiente di metodi.
Introduzione a JESS Ettore Colombo 13 Dicembre 2006 Ingegneria della Conoscenza e Sistemi Esperti.
1 Progettare un Tipo di Dato Astratto. 2 Scelte di Progetto (astrazione) 4 Caratteristiche degli oggetti –Modificabilità 4 Scelta delle operazioni –Realizzare.
Ese 3 (del 31 Marzo 2004). Testo Dare rappresentazione e realizzazione dei metodi della seguente classe QueueWithPriority. Nella risposta, non riportare.
LIP: 22 Marzo 2005 Eccezioni. Eccezioni-Richiami Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Esercizio 3. Testo Dare rappresentazione e realizzazione dei metodi della seguente classe QueueWithPriority. Nella risposta, non riportare i commenti.
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Primo Compitino Terzo Esercizio Implementare il tipo di dato astratto Table un oggetto di tipo Table ha due colonne e un numero variabile di righe.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
1 Elementi di programmazione concorrente in Java: i threads.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Esercitazione sull’ ordinamento 20 maggio 2003
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Input in Java. Uso Scanner Un oggetto per la lettura dalla tastiera Piuttosto, per rappresentare la tastiera del nostro calcolatore useremo un oggetto.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Java & JESS Ettore Colombo 10 Gennaio 2007 Ingegneria della Conoscenza e Sistemi Esperti

Argomenti Userfunction Utilizzo di JESS in Java Store & Fetch Gestione oggetti Java nel codice JESS Shadow Facts

Userfunction Servono per aggiungere comandi/funzioni a JESS Implementare l’interfaccia Userfunction –creare una nuova classe Java che implementi jess.Userfunction definire un metodo costruttore definire il nome della nuova funzione creata implementando il metodo public String getName() definire la nuova funzione implementando il metodo public Value call(ValueVector vv, Context c) throws JessException –compilare il file creato e accertarsi che sia incluso nel classpath per l’esecuzione da JESS –nel codice JESS: dichiarare che si intende utilizzare la nuova funzione (load-function newFunction)

Esempio: la Random100 (1) import java.io.*; import java.util.*; import jess.*; public class random100 implements Userfunction { Random r=null; Date d=null; public random100() { d = new Date(); r = new Random((long)(d.getTime())); } random100 restituisce un intero positivo scelto “casualmente” nell’intervallo [0,100]

Esempio: la Random100 (2) public String getName() { // The name method returns the name by which the function // will appear in Jess code. return "random100"; } public Value call(ValueVector vv, Context context) throws JessException { int number=r.nextInt(100); if (number<0) number=(-1)*number; //System.out.println(number); return new Value(Integer.toString(number),RU.ATOM); }

Esempio d’uso della Random100 (load-function random100) (defrule inizializzaListaA (initial-fact) => (assert (listaA (random100) (random100) (random100))) ) (defrule inizializzaListaB (initial-fact) => (assert (listaB (random100) (random100) (random100))) ) (reset) (facts) (run) (facts) Dalla Console: f-0 (initial-fact) For a total of 1 facts. f-0 (initial-fact) f-1 (listaA ) f-2 (listaB ) For a total of 3 facts. Jess> Dalla Console: f-0 (initial-fact) For a total of 1 facts. f-0 (initial-fact) f-1 (listaA ) f-2 (listaB ) For a total of 3 facts. Jess>

Argomenti Userfunction Utilizzo di JESS in Java Store & Fetch Gestione oggetti Java nel codice JESS Shadow Facts

Utilizzo di JESS in Java JESS è fornito come file.jar contenente un insieme di classi Java È possibile utilizzare queste classi importandole opportunamente all’interno delle nostre applicazioni Java Esiste un API dettagliata e utile che descrive quali sono le classi utilizzate per costruire la shell JESS: _______________________________________________________________ Rete [fonte: JESS API]  The reasoning engine. Executes the built Rete network, and coordinates many other activities Attraverso i metodi della classe Rete è possibile: -eseguire i comandi come da shell/console [ executeCommand(String) ] -asserire fatti e togliere fatti -lanciare comandi di gestione [ run, clear, reset,...] -caricare un file di testo contenente comandi JESS (programmi JESS) -scambiare dati tra applicazione Java e motore inferenziale [store & fetch, shadow facts]

Esempio import jess.*; class Esempio { public static void main(String a[]) { new Esempio(); } public Esempio() { Rete engine = new Rete(); //Caricamento Regole System.out.println("::: Caricamento Regole :::"); try { engine.executeCommand("(batch./random100.clp)"); } catch (JessException je) {System.out.println("Error during rules uploading: "+je);} //Esecuzione Regole System.out.println("::: Esecuzione Regole :::"); try { engine.run(); } catch (JessException je) {System.out.println("Error during rules execution: "+je);} }

Argomenti Userfunction Utilizzo di JESS in Java Store & Fetch Gestione oggetti Java nel codice JESS Shadow Facts

Store & Fetch Esiste una “memoria” condivisa tra JESS e Java che è possibile utilizzare per condividere dati usando le funzioni:  store (inserimento)  fetch (lettura) NB: nell’esempio che segue, engine è un oggetto di classe Rete JESS (store dato1 15)engine.fetch(“dato1”) Java valore letto 15 valore scritto = 15 e identificato come “dato1” JESS engine.store(“dato1”,15)(fetch dato1) Java valore letto 15 valore scritto = 15 e identificato come “dato1”

Argomenti Userfunction Utilizzo di JESS in Java Store & Fetch Gestione oggetti Java nel codice JESS Shadow Facts

Gestione di oggetti Java in JESS Esempio: gestione delle GUI da JESS ;Creazione oggetto di tipo JButton, il bottone OK della GUI (bind ?button (new javax.swing.JButton "OK")) (call ?button setSize 20 20)  CHIAMATA DI UN METODO “?button” contiene il riferimento all’oggetto presenta nella memoria della Java Virtual Machine (import ) È il corrispondente JESS della “import” in Java Si possono indicare come sia interi package (import java.io.*) che singole classi (import java.awt.Button) Il package java.lang.* è implicitamente considerato

Esempio (defrule inizializzaOggetto (initial-fact) => (bind ?prova (new OggettoProva "Oggetto 1")) (assert (Oggetto ?prova)) ) (defrule stampaNome (Oggetto ?prova) => (printout t (call ?prova getNome) crlf) ) (reset) (facts) (run) (facts) Dalla Console: f-0 (initial-fact) For a total of 1 facts. Oggetto 1 f-0 (initial-fact) f-1 (Oggetto ) For a total of 2 facts. Jess> Dalla Console: f-0 (initial-fact) For a total of 1 facts. Oggetto 1 f-0 (initial-fact) f-1 (Oggetto ) For a total of 2 facts. Jess>

Argomenti Userfunction Utilizzo di JESS in Java Store & Fetch Gestione oggetti Java nel codice JESS Shadow Facts

Costruzione di Shadow Fact (defclass prova OggettoProva)  definisce il template prova basato sulla “struttura” dell’oggetto associato (bind ?bean (new prova))  crea un oggetto prova/OggettoProva (definstance prova ?bean static)  crea lo shadow fact cossispondente al bean ?bean. static indica che lo shadow fact è statico! shadow fact static vs dynamic: dichiarare dynamic uno shadow fact permette di mantenere aggiornati i valori degli slot in base alle modifiche sui valori delle property del JavaBean corrispondente Analogamente... in Java: engine.defclass(“prova”,”OggettoProva”,null); OggettoProva bean = new OggettoProva(); engine.definstance(“prova”, bean, false); false indica che lo shadow fact è statico... true per indicare che è dinamico! Il terzo argomento della defclass è il nome dell’eventuale superclasse della classe “OggettoProva”