Cos è un JavaBean. Java. Componenti software



Documenti analoghi
Programmazione a Oggetti Modulo B

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Il database management system Access

Corso di Sistemi di Elaborazione delle informazioni

Modulo 4: Ereditarietà, interfacce e clonazione

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Corso Eclipse. Prerequisiti. 3 Window Builder

7. Layer e proprietà degli oggetti

Cosa è un foglio elettronico

Oggetti Lezione 3. aspetti generali e definizione di classi I

Gestione Risorse Umane Web

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Corso su LINQ Lezione 16. Introduzione

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia

Editing e gestione delle views per il modulo Landing Page Espositore

Programmazione a Oggetti Lezione 10. Ereditarieta

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Registratori di Cassa

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

- Il sito dedicato alle associazioni no-profit di Milano e provincia

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Progettazione di Basi di Dati

Progettazione : Design Pattern Creazionali

Object Oriented Programming

Mac Application Manager 1.3 (SOLO PER TIGER)

EDICOLA MANAGER EM Importer

Il software ideale per la gestione delle prenotazioni GUIDA UTENTE

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Test di unità con JUnit4

Guida all uso di Java Diagrammi ER

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at] .

Mon Ami 3000 Produzione base Produzione articoli con distinta base e calcolo dei fabbisogni

FPf per Windows 3.1. Guida all uso

Visual basic base Lezione 01. L'ambiente di sviluppo

Tale attività non è descritta in questa dispensa

Esercizio data base "Biblioteca"

ZFIDELITY - ZSE Software & Engineering Pag.1 / 11

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A

Office 2007 Lezione 08

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

Matematica in laboratorio

Introduzione. Macro macro istruzione. Sequenza di comandi memorizzati programma

Gestione delle formazione

L architettura MVC (Model- View-Controller) Introduzione

Microsoft Office XP. dott. ing. Angelo Carpenzano. La suite Microsoft Office XP

Cominciamo dalla barra multifunzione, ossia la struttura a schede che ha sostituito la barra dei menu e la barra delle icone (Figura 1).

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Istruzioni per l installazione

UN PROGRAMMA APPLICATIVO: ACCESS Access è un programma del pacchetto Office che permette di realizzare database

Figura 1 Le Icone dei file di Excel con e senza macro.

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

Configurazione della ricerca desktop di Nepomuk. Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith

Relazioni tra tabelle

SOMMARIO... 3 INTRODUZIONE...

Database 1 biblioteca universitaria. Testo del quesito

Il CMS Moka. Giovanni Ciardi Regione Emilia Romagna

Il calendario di Windows Vista

Access. P a r t e p r i m a

Corso sul linguaggio SQL

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Gestione Filtri. InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

ShellPictionary. Sistema operativo Microsoft Windows 98 o superiore Libreria SAPI e voce sintetica Casse audio

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014

APRIRE UN PROGRAMMA DI FOGLIO ELETTRONICO

Sicurezza dei file Le protezioni nei programmi

Università degli Studi di Napoli Parthenope Facoltà di Scienze e Tecnologie Corso di Laurea in Informatica Generale

Università degli Studi di Verona. Laboratorio di Basi di Dati

Funzioni in C. Violetta Lonati

Manuale servizio Webmail. Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8

Generazione Automatica di Asserzioni da Modelli di Specifica

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

La progettazione dell interfaccia HCI. Fabio Vitali

Volume GESTFLORA. Gestione aziende agricole e floricole. Guidaall uso del software

Per effettuare la stampa di una cartella di lavoro si accede al comando. Stampa dal menu File o si utilizza il pulsante omonimo sulla barra

Soluzione dell esercizio del 2 Febbraio 2004

Organizzazione delle informazioni: Database

Corso sul linguaggio Java

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Pagina 1 di 10

5-1 FILE: CREAZIONE NUOVO DOCUMENTO

IRSplit. Istruzioni d uso 07/10-01 PC

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Corso di Informatica

Transcript:

Java java beans e programmazione visuale G. Prencipe prencipe@di.unipi.it Cos è un JavaBean Un JavaBean (o semplicemente Bean) è un componente software riusabile Analogia con i componenti elettronici I Bean possono essere manipolati visualmente all interno di appositi strumenti di programmazione avanzati Si possono realizzare semplici applicazioni senza scrivere nemmeno una riga di codice! Componenti software Il concetto di componente è molto diffuso in altre industrie: Elettronica: valvole, condensatori, resistenze,... Automobilistica: ricambi non originali Vantaggi dei componenti Facilità di assemblaggio Interfaccia uniforme Versioni alternative (con la stessa interfaccia) fra cui scegliere Componenti software Componenti base di interfaccia utente Classici: pulsanti, campi di testo, menu, ecc. Tradizionalmente disponibili come librerie o toolkit di sistema Usati come Bean, possono essere più facilmente integrati 1

Componenti software Componenti software Componenti avanzati di interfaccia utente Servono per fornire funzioni di manipolazione fuori standard Esempio: un calendario per selezionare una data Possono essere usati tali e quali in tante applicazioni: vantaggio! Intere micro-applicazioni Serve un foglio elettronico? un programma di videoscrittura? Usiamo un Bean più ciccioso degli altri... L interfaccia di base è comunque la stessa L offerta è vasta: programmi di grafica display di mappe per i GIS Componenti software Componenti non-visuali Non hanno un interfaccia grafica visibile all utente Però forniscono servizi ad altri Bean: Bean che fanno calcoli Bean che si connettono in rete Bean che accedono a basi di dati Bean che memorizzano e gestiscono uno stato L interfaccia per il programmatore è la stessa di quella dei Bean visuali Componenti software Chiunque può costruire nuovi Bean! Partendo da zero Creando sottoclassi di Bean esistenti Trasformando vecchie classi in Bean I nuovi Bean possono essere usati come tutti gli altri Gli strumenti di programmazione non sono limitati a un insieme di Bean predefinito 2

Assemblaggio Struttura di un Bean I Bean vengono assemblati con degli strumenti adeguati Il risultato è un applicazione basata sui Bean Si realizzano applicazioni tirando i fili anziché scrivendo codice Un Bean è una classe Java...... i cui metodi hanno dei nomi particolari La denominazione standard consente agli strumenti di assemblaggio di scoprire le caratteristiche di Bean sconosciuti Un Bean può essere usato in due contesti: A tempo di progettazione (design time) A tempo d esecuzione (run time) Caratteristiche di un Bean Caratteristiche di un Bean Proprietà: analoghe agli attributi di una classe Per una certa proprietà xxx si creano (tipicamente) due metodi setxxx() e getxxx() Per una proprietà booleana è possibile alternativamente utilizzare un metodo chiamato isxxx() per testare se la proprietà è vera o no L accesso avviene esclusivamente tramite metodi get...() e set...() Eventi: un Bean può generare eventi, che poi vengono propagati e causano delle reazioni Non hanno un corrispondente nativo nel linguaggio Simili al modello dei listener delle Swing addbouncelistener(bouncelistener) e removebouncelistener(bouncelistener) per gestire l evento BounceEvent Metodi: solita roba, corrispondono ai metodi della classe Sono gli altri metodi nel bean (che non seguono le convenzioni dette sopra) e sono semplicemente public 3

Esempio Proprietà public class Frog { private int jumps; private boolean jmpr; private.; public int getjumps() {return jumps; public void setjumps(int newjumps) {jumps=newjumps; public boolean isjumper(){return jmpr; public void setjumper(boolean j){impr=j; public void addactionlistener(actionlistener l){. // Metodo ordinario public void gracchia(){system.out.println( Gracchia!! ; Definiscono lo stato corrente di un Bean Per i Bean visuali, le proprietà influenzano spesso la rappresentazione grafica Poiché la modifica di una proprietà avviene attraverso metodi, è possibile far reagire il Bean a modifiche alle sue proprietà In particolare, modifiche alle proprietà possono generare eventi (vedremo fra breve) Esempio: Proprietà JButton Esempio: Proprietà JButton Grafica Stato... Proprietà x, y, width, height border, borderpainted font icon, disabledicon enabled selected showing droptarget parent Descrizione posizione e dimensione del pulsante quale bordo disegnare intorno al pulsante fonte da usare per l etichetta icona da usare per il pulsante attivo o disabilitato il pulsante è abilitato? il pulsante è premuto? il pulsante è visibile? chi avvisare se viene fatto il drag&drop su questo pulsante il contenitore che contiene il pulsante Grafica Stato... Proprietà Descrizione x, y, width, void height setfont(font posizione f) e dimensione del pulsante Font getfont() border, borderpainted quale bordo disegnare intorno al pulsante font fonte da usare per l etichetta icona da usare per il pulsante attivo o icon, disabledicon void setselected(boolean b) boolean isselected() disabilitato enabled il pulsante è abilitato? selected showing droptarget parent il pulsante è premuto? il pulsante è visibile? chi avvisare se viene fatto il drag&drop su questo pulsante il contenitore che contiene il pulsante 4

Property Editor Eventi A design time, gli strumenti di sviluppo (nell esempio, VisualAge della IBM) forniscono un interfaccia grafica per impostare le proprietà dei Bean A run time, il programma può modificare dinamicamente le proprietà chiamando i metodi set...() e ispezionarle chiamando get...() o is...() Un Bean può generare eventi in risposta a stimoli esterni Azioni dell utente Cambiamenti di valore delle proprietà Timer, eventi di rete,...... e qualunque altra cosa Altri Bean che sono interessati a sapere quando si verificano questi eventi possono registrarsi presso il Bean che li genera Quando si verificherà l evento, verrà chiamato un particolare metodo dell ascoltatore (eventualmente passando dei parametri) Esempio: Eventi JButton Azioni utente Proprietà... actionevents mouseevents focusevents keyevents enabled selected showing text Evento vetoablechangeevents Descrizione qualunque azione dell utente qualunque operazione col mouse qualunque cambiamento di focus qualunque pressione di tasti lo stato di abilitazione è cambiato lo stato di selezione è cambiato lo stato di visibilità è cambiatio l etichetta del pulsante è cambiata qualcuno ha posto il veto su un cambiamento di valore di una proprietà Esempio: mouseclicked actionperformed mousedragged mouseentered mouseexited Evento mousemoved Descrizione actionevents mousepressed qualunque azione dell utente mouseevents mousereleased focusgained qualunque operazione col mouse focuslost focusevents qualunque focuspainted cambiamento di focus Eventi JButton Azioni utente Proprietà... keyevents enabled selected showing text vetoablechangeevents keypressed qualunque pressione di tasti keyreleased keytypedlo stato di abilitazione è cambiato lo stato di selezione è cambiato propertychange lo stato di visibilità è cambiatio l etichetta del pulsante è cambiata qualcuno ha posto il veto su un cambiamento di valore di una proprietà 5

Proprietà ed Eventi Le proprietà possono essere... semplici: hanno un valore che può essere Solo letto (read only) es. showing di JButton Solo scritto (write only) estremamente raro Letto e scritto caso più comune bounded: se il loro valore cambia, viene generato un evento a cui altri possono reagire constrained: un ascoltatore può opporsi (porre il veto) a un cambiamento di valore Proprietà ed Eventi Gli eventi sono rappresentati da classi, che formano gerarchie di ereditarietà (come per le eccezioni) Identificati da un nome, che descrive il tipo di evento Accompagnati da parametri (attributi delle classi che li rappresentano) che ne specificano i dettagli per esempio: gli eventi MouseEvent hanno come attributi la posizione (x,y) e il numero di click consecutivi (per identificare il doppio click) Ok, ma cosa c è dietro? Codice per le proprietà Nell infrastruttura dei JavaBeans non c è niente di magico, tutto è fatto con mezzi comuni I Bean sono normalissime classi, e possono essere scritti o usati anche con TextPad In particolare, il legame fra proprietà ed eventi è esplicitamente visibile nel codice sorgente Esempio: una proprietà BaseDate di tipo Date Leggibile, scrivibile, e bounded (genera eventi) private Date fieldbasedate = new Date(); public Date getbasedate() { return fieldbasedate; public void setbasedate(date basedate) { Date oldvalue = fieldbasedate; fieldbasedate = basedate; firepropertychange("basedate", oldvalue, basedate); 6

PropertyChangeEvents Come si ricevono gli eventi Cosa fa firepropertychange("basedate",oldvalue,basedate) Se il vecchio valore è uguale al nuovo (ovvero, se il valore della proprietà non è cambiato), non fa nulla Altrimenti, genera un evento di tipo PropertyChange (del gruppo dei ChangeEvents), passando come parametri il nome della proprietà basedate, il vecchio e il nuovo valore Chi vuole essere informato di un evento si registra presso chi genera l evento Il metodo da chiamare per registrarsi è addtipoeventolistener(tipoeventolistener l) Quando si verifica un evento, chi lo genera chiama il listener di tutti gli ascoltatori registrati Quando non si è più interessati, ci si deregistra chiamando il metodo removetipoeventolistener(tipoeventolistener l) Come si ricevono gli eventi L interfaccia TipoEventoListener definisce i metodi da chiamare Per PropertyChangeListener: public void propertychange(propertychangeevent evt) Per VetoableChangeListener: public void vetoablechange(propertychangeevent evt) throws PropertyVetoException Generazione degli eventi (codice leggermente semplificato) public void firepropertychange(string propertyname, Object oldvalue, Object newvalue) { if (oldvalue!= null && newvalue!= null && oldvalue.equals(newvalue)) return; PropertyChangeEvent evt = new PropertyChangeEvent(source, propertyname, oldvalue, newvalue); if (listeners!= null) { for (int i = 0; i < listeners.size(); i++) { PropertyChangeListener listener = (PropertyChangeListener)listeners.elementAt(i); listener.propertychange(evt); 7

Ricezione degli eventi (codice leggermente semplificato) Programmazione visuale public void propertychange(propertychangeevent evt) { if (evt.getsource() == CalendarPage.this && (evt.getpropertyname().equals("basedate"))) /* è cambiata basedate */ if (evt.getsource() == CalendarPage.this.getDayButton() && (evt.getpropertyname().equals("background"))) /* è cambiata la proprietà background di DayButton */ /*... e così via... */ Ma per fortuna, non è davvero necessario scrivere codice di questo tipo Gli strumenti di programmazione lo fanno per noi! Abbiamo visto come una delle caratteristiche migliori di Java è legata al riutilizzo del codice La parte di codice più riutilizzabile è chiaramente la classe Per queste caratteristiche, sarebbe auspicabile avere un modo per costruire applicazioni in modo automatico Si definiscono le componenti dell applicazioni, le si selezionano e assemblano come se si stessero assemblando chip su una scheda Programmazione visuale Programmazione visuale Un modo rapido per sviluppare applicazioni Si piazzano componenti visuali e non visuali su una superficie di lavoro Si connettono proprietà, eventi e metodi dei vari componenti secondo la logica dell applicazione Si scrive quel po di codice extra che serve, e lo si connette ai componenti I connettori sono essi stessi componenti! Un esempio visto è il Visual Editor di Eclipse La programmazione visuale (Visual Programming) ebbe enorme successo con il Visual Basic Le componenti erano rappresentate graficamente In effetti, uno dei settori in cui questo modo di costruire applicazioni è utilizzato è legato alla costruzione di interfacce grafiche Come abbiamo visto con VE In generale, sistemare le componenti su un piano di lavoro non è sufficiente per completare un programma 8

Programmazione visuale Programmazione visuale Spesso è necessario modificare le caratteristiche delle componenti (colori, testo, database a cui la componente è collegata) Le caratteristiche che possono essere modificate a tempo di design sono le proprietà È possibile così manipolare le proprietà delle componenti all interno del costruttore automatico di applicazioni (application builder tool) Un oggetto (componente) è comunque qualcosa in più di un insieme di proprietà È costituito anche da comportamenti I comportamenti di una componente sono rappresentati dagli eventi Definiscono cosa può accadere alla componente durante l esecuzione Si decide cosa fare in seguito a un evento legando ad esso un pezzo di codice Programmazione visuale e JavaBeans Il costruttore di applicazioni interroga dinamicamente le componenti e ricava le proprietà e gli eventi che la componente può gestire Ad esempio, i beans sono utilizzati dal Visual Editor di Eclipse per costruire le interfacce Java java beans e programmazione visuale fine 9

Programmazione visuale Un metodo di programmazione innovativo Per sua natura, si presta ad essere spiegato in vivo su un esempio Scriviamo da zero un client grafico per il TimeServer che abbiamo sviluppato nella prima lezione! Metteremo insieme: JavaBeans, VisualAge e programmazione di rete con i socket 10