JavaBeans 1.0.1. Josef Templ. 14. Oktober 2002



Ähnliche Dokumente
Das Model View Controller (MVC) Konzept

Java Beans.

Java Beans. von Raoul Schneider

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Programmieren in Java

JavaBeans Property-Editoren und Customizer

Objektorientierte Programmierung. Kapitel 12: Interfaces

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Vererbung & Schnittstellen in C#

Software Engineering Klassendiagramme Assoziationen

Der lokale und verteilte Fall

Einführung in die Programmierung

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Java RMI Remote Method Invocation

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Objektorientierte Programmierung

Programmierkurs Java

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Java: Vererbung. Teil 3: super()

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

JavaBeans. Marc Monecke

SEP 114. Design by Contract

Java Kurs für Anfänger Einheit 5 Methoden

Technische Dokumentation SilentStatistikTool

Software Engineering Interaktionsdiagramme

Assoziation und Aggregation

Objektorientierte Programmierung

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

FORUM HANDREICHUNG (STAND: AUGUST 2013)

WPF Steuerelemente Listbox, ComboBox, ListView,

Abschnitt 12: Strukturierung von Java-Programmen: Packages

WhiteStarUML Tutorial

Javakurs zu Informatik I. Henning Heitkötter

Standard-Kontaktformular

WPF Bindung. Dr. Beatrice Amrhein

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

SS Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof.

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Konfigurationsanleitung Fax over IP (T.38) und CAPI Fax Server (T.30) Graphical User Interface (GUI) Seite - 1 -

Prinzipien Objektorientierter Programmierung

Java Einführung Collections

MSDE 2000 mit Service Pack 3a

Programmieren I. Kapitel 15. Ein und Ausgabe

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

TECHNISCHE INFORMATION LESSOR LOHN/GEHALT BEITRAGSNACHWEIS-AUSGLEICH BUCH.-BLATT MICROSOFT DYNAMICS NAV

Metadateneditoren für ArcGIS

Java Einführung Abstrakte Klassen und Interfaces

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Dokumentation: Content App Framework

tentoinfinity Apps 1.0 EINFÜHRUNG

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Archiv - Berechtigungen

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Hilfedatei der Oden$-Börse Stand Juni 2014

Kurzanleitung. Toolbox. T_xls_Import

Typumwandlungen bei Referenztypen

Delegatesund Ereignisse

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Programmieren 2 07 JavaFX-Properties und Data-Binding

SEMINAR Modifikation für die Nutzung des Community Builders

Factory Method (Virtual Constructor)

Kommunikations-Parameter

Grundlagen von Python

Tel.: Fax: Ein Text oder Programm in einem Editor schreiben und zu ClassPad übertragen.

Architektur des agimatec-validation Frameworks

Erstellen eines Office-COM-Add-In mit Visual Basic 2005 Express Edition

Anwenderdokumentation PersoSim

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

Java Einführung Packages

Einführung in die Java- Programmierung

Tevalo Handbuch v 1.1 vom

How to do? Projekte - Zeiterfassung

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY

SANDBOXIE konfigurieren

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Kurzanweisung für Google Analytics

Anleitung zur Bearbeitung von Prüferkommentaren in der Nachreichung

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

ISA Einrichtung einer DFUE VErbindung - von Marc Grote

Administrator Handbuch

Ihr CMS für die eigene Facebook Page - 1

MARCANT - File Delivery System

Dokumentation IBIS Monitor

3 Objektorientierte Konzepte in Java

Fehlermonitor. Software zur seriellen Verbindung PC-Airdos Visualdatensignale und Fehlermeldungen-Ausagabe per SMS / Drucker

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

IDA ICE - Konvertieren und Importieren von mit TRY_Effekte_aufpraegen.exe erzeugten Datensätzen

5. Abstrakte Klassen

Java Beans. Seminar Komponentenprogrammierung Freie Universität Berlin, WS 2004/2005 Ivo Köhler, 08. November 2004

Übersichtlichkeit im Dokumentenmanagement

License Management SDK

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Patch Management mit

Transkript:

JavaBeans 1.0.1 Josef Templ 14. Oktober 2002

Übersicht Standard zum Konfigurieren und Verbinden von Objekten Events, Unbound/Bound/Constraint-Properties Packaging und Manifest BeanInfo PropertyEditor, Customizer Serialisierung BeanContext, JAF 1

JavaBean Referenzen http://java.sun.com/products/javabeans/ JavaBean Home Page http://java.sun.com/docs/books/tutorial/javabeans/ JavaBean Tutorial http://java.sun.com/products/javabeans/training.html Ein weiteres JavaBean Tutorial 2

Definition und Abgrenzung Definition: A JavaBean is a reusable software component that can be manipulated visually in a builder tool. JavaBeans können sichtbar sein (AWT-Komponenten) oder unsichtbar. In jedem Fall können sie visuell bearbeitet werden. Abgrenzung: JavaBeans ist kein Dokumentenstandard wie etwa OLE oder OpenDoc, vergleichbar eher mit ActiveX. JavaBeans sind entweder durch Klassen oder durch serialisierte Prototypen repräsentiert. Paket ist java.beans und Unterpaket(e). 3

Anforderungen an eine JavaBean-Klasse Parameterloser öffentlicher Konstruktor: damit Builder-Tool eine Instanz erzeugen kann. Serialisierbar (java.io.serializable, java.io.externalizable): damit serialisierte Prototypen erstellt werden können. Keine spezielle Basisklasse oder Interface für Beans. Schnittstelle für Builder-Tool: Implizit durch Berücksichtigung von Namenskonventionen Explizit durch BeanInfo-Klasse 4

Serialisierung/Deserialisierung Verwendet ObjectOutputStream und ObjectInputStream. Problem bei der Deserialisierung: Zum dynamischen Laden von Klassen wird ein ClassLoader verwendet, welcher? Kann bei ObjectInputStream nicht angegeben werden. Abhilfe: java.beans.beans.instantiate(classloader cl, String beanname) Wobei beanname in Punktnotation ohne Extension.class oder.ser ist, z.b. my.package2.mybean2. Erweiterungen für Speicherung im XML-Format. 5

JavaBean Bestandteile Events Properties Methoden 6

Events Events sind Ereignisse, die von einem Bean an registrierte Objekte (Listeners) geschickt werden. Beispiel: WindowEvent, MouseEvent, PropertyChangedEvent, etc. Verwaltung der Listeners durch Bean-Klasse. Normalerweise Multicast ohne definierte Reihenfolge. Unicast möglich. Registrierung und Entfernung von Listeners durch Standard-Pattern. Vergleich mit.net: Konzeptuell gleich aber syntaktische Unterstützung für Listener-Verwaltung und Aufruf durch Modifier event und Typ delegate. 7

Pattern für Ereignis Xxx class XxxEvent extends java.util.eventobject {...} interface XxxListener extends java.util.eventlistener {...} class MyBean {... public void addxxxlistener(xxxlistener l) {...} public void removexxxlistener(xxxlistener l) {...} } class MyClass implements XxxListener {...} MyBean mb... mb.addxxxlistener(new XxxListener() { //anonymous inner class... } 8

XxxListener Enthält Methode(n) zur Event-Behandlung. Mindestens eine Methode erforderlich, aber mehrere möglich, da sonst zu viele Listeners. Beispiel WindowEvent mit windowclosed, windowopend, windowactivated,... Empfehlung: Jede Methode hat genau einen Parameter vom Typ XxxEvent. Achtung: nicht jedes Builder-Tool unterstützt allgemeine Parameterlisten. Bei Listeners mit mehreren Methoden häufig Hilfsklasse (XxxAdapter) mit leerer Implementierung für selektives Überschreiben einzelner Methoden. 9

Unicast und Multicast Im Normalfall Multicast mit beliebiger Anzahl von Listeners. In Ausnahmefällen Unicast. Unicast-Listener gekennzeichnet in addxxxlistener durch throws java.util.toomanylistenersexception Unicast ist Spezialfall von Multicast, daher Upgrade möglich ohne Code zu invalidieren. 10

Properties JavaBeans können eine beliebige Anzahl sogenannter Properties besitzen. Ein Property kann über das Builder-Tool gelesen und (optional) geschrieben werden. Für das Lesen und Schreiben von Properties werden Methoden (getter und setter) verwendet. Der Propertytyp drückt sich in der Methodensignatur aus (z.b. String). Die Menge der Properties und deren Zugriffsmethoden wird für eine Klasse X über eine Hilfsklasse mit dem Namen XBeanInfo definiert. 11

Property Pattern Wenn die BeanInfo-Klasse fehlt, wird Introspection verwendet. Allgemeines Pattern für Property X vom Typ T: public void setx(t val); public T getx(); Pattern für Property X vom Typ boolean: public void setx(boolean val); public boolean isx(); 12

Pattern für Property X vom Typ T[]. Indexed Properties Enthält zusätzliche Methoden für elementweisen Zugriff. public void setx(t[] val); public void setx(ind index, T val); public T[] getx(); public T getx(int index); 13

Bound/Constrained Properties Sind an java.beans.propertychangeevent gebunden. Rufen registrierte java.beans.propertychangelistener auf, wenn geändert. Bound Properties erfordern keine eigenen Events und Listeners. Unterstützt durch Klasse java.beans.propertychangesupport. Constrained Properties erlauben im Listener das Werfen einer java.beans.propertyvetoexception. Dadurch wird das Setzen des neuen Wertes unterbunden. Constrained Properties nur in Ausnahmefällen verwenden! 14

BeanInfo Erlaubt Internationalisierung von JavaBeans. Erlaubt Abweichung von und Mischung mit den Standardpatterns. Erlaubt beliebige Einschränkung der publizierten Schnittstelle eines Beans. Stellt Descriptor-Objekte zur Verfügung für: gesamtes Bean, Property, etc. Jeder Descriptor ist von java.beans.featuredescriptor abgeleitet. Ein FeatureDescriptor enthält immer Namen, Beschreibung,... Klasse SimpleBeanInfo kann als Basisklasse verwendet werden. 15

SimpleBeanInfo class XxxBeanInfo extends SimpleBeanInfo { // noops, defaults to introspection } Selektives Überschreiben einzelner Methoden möglich, z.b.: public Image geticon(int iconkind) return loadimage("mybean16.gif"); } public BeanDescriptor getbeandescriptor() return new BeanDescriptor(MyBean.class, MyBeanCustomizer.class); } 16

FeatureDescriptor Basisklasse für BeanDescriptor, EventSetDescriptor, MethodDescriptor, ParameterDescriptor, PropertyDescriptor. Jeder FeatureDescriptor enthält: Internen und angezeigten Namen des Features Expert, Preferred, Visibility Kurzbeschreibung Lesen und Setzen des Wertes 17

BeanDescriptor von BeanInfo geliefert. Beschreibt globale Bean-Eigenschaften. public class BeanDescriptor extends FeatureDescriptor { public BeanDescriptor(Class beanclass){...}; public BeanDescriptor(Class beanclass, Class customizerclass){...}; public Class getbeanclass(){...}; public Class getcustomizerclass(){...}; } 18

Customizer Die Customizer-Klasse stellt ein GUI zum Bearbeiten eines Beans bereit. Erweitert java.awt.component. Wird von Builder-Tool zum Bearbeiten eines Beans instanziert und dargestellt. Muss parameterlosen Konstruktor besitzen. Meist wird kein eigener Customizer verwendet. Default meist in Tabellenform mit zwei Spalten (Name, Wert) und für jedes Property und Event eine Zeile. Property-Editor kann ebenfalls angegeben werden. 19

BeanInfo.getPropertyDescriptors Builder-Tool benötigt PropertyDescriptor für jedes editierbare Property. Default sind alle Getters und Setters, die den Namenskonventionen folgen. Für Internationalisierung, Einschränkung, Umbenennung, etc. muss get- PropertyDescriptors entsprechend implementiert werden. public PropertyDescriptor[] getpropertydescriptors() { return new PropertyDescriptor[] { new PropertyDescriptor("Breite", MyBean.class, "getwidth", "setwidth"); new PropertyDescriptor("Hoehe", MyBean.class, "getheight", "setheight"); } } 20

PropertyEditor Definiert durch PropertyDescriptor.getPropertyEditorClass. Implementiert PropertyEditor oder erweitert PropertyEditorSupport. Muss einen parameterlosen Konstruktor aufweisen. Methode setvalue(t x) immer unterstützt. Drei verschiedene Möglichkeiten: Text based Methoden setastext und getastext implementiert. Liste Aufzählung aller möglichen Werte. Custom Editor paintvalue und/oder getcustomeditor implementiert. 21

Packaging und Manifest Ein oder mehrere Beans werden zu einem jar-file verpackt. Enthält alle Klassen und Ressourcen für Bean(s). Jar-Manifest (META-INF/MANIFEST.MF) enthält Information über Inhalt. Folge von Sektionen (durch Leerzeilen gtrennt). Sektion enthält Information zu einem File. Information ist zum Beispiel, ob es sich um ein JavaBean handelt. Bean kann als Klasse (.class) oder serialisiert (.ser) vorliegen. 22

Manifest-Version: 1.0 Beispiel Manifest Name: my/package1/mybean1.class Java-Bean: True Name: my/package1/mybean1beaninfo.class Design-Time-Only: True Name: my/package2/mybean2.ser Java-Bean: True Depends-On: my/package1/mybean1.class 23

Tags Folgende Tags werden zur Kennzeichnung von Beans und deren Eigenschaften verwendet: Java-Bean Wert True signalisiert, dass es sich bei dem File in der Sektion um ein JavaBean handelt. Depends-On Listet ALLE Abhängigkeiten auf (flat). Kann mehrfach pro Sektion vorkommen. Wenn es fehlt sind die Abhängigkeiten UNBE- KANNT. Design-Time-Only Wert True signalisiert, dass diese Datei nur zur Entwicklungszeit benötigt wird. 24

Dokumentation Pro Bean kann im Jar-File ein HTML-File mit Namen <beanname>.html vorkommen. Für Lokalisierung wird pro Locale ein Unterverzeichnis verwendet, also <locale>/<beanname>.html. Empfohlenes Format ist HTML 2.0. Interne und externe Referenzen (Hyperlinks) sind erlaubt. Das verwendete BeanBuilder-Tool ist für die Anzeige zuständig. NetBeans zeigt die Doku nicht an. 25

BeanContext Paket java.beans.beancontext definiert Interfaces zur hierarchischen Strukturierung von Beans. BeanContext ist Container BeanContextChild ist Element eines Contexts. AWT-Komponente kann BeanContext nicht implementieren wegen Namenskollision zwischen Collection und Component. Abhilfe mittels BeanContextProxy Interface. Erlaubt Delegation zu Hilfsobjekt. Ein Objekt kann Services für Children bereitstellen durch Implementieren der Schnittstelle BeanContextServices. 26

JavaBeans Activation Framework (JAF) Java Platform standard extension javax.activation. Ähnlich zu Windows Filtetype-Associations. Klasse DataHandler stellt Implementierung zur Verfügung und wird von Anwendung verwendet. Interface DataSource abstrahiert von Dateizugriff (z.b FileDataSource, URLDataSource). Interface CommandMap abstrahiert von Zuordnungsmechanismus für Kommandos pro MIME-Typ (z.b. View, Edit für.txt aus mailcap). Klasse CommandInfo stellt Info pro Kommando bereit (Name, Klasse). Einsetzbar z.b. für File-Manager (Windows Explorer). 27

JAF Beispiel File file = new File(fileName); DataSource ds = new FileDataSource(file); DataHandler dh = new DataHandler(ds); CommandInfo cmdinfo[] = dh.getpreferredcommands(); int i =... //selected command index Object cmd = cmdinfo[i].getcommandobject(); if (cmd instanceof java.awt.component) {... // display component } 28