Java Beans

Werbung
Java Beans
Übersicht, Eigenschaftstypen,
Heutiger Stand.
1
Definition
z
Eine Bean ist eine wieder verwendbare
Softwarekomponente basierend auf der
JavaBeans-Spezifikation von Sun, die sich
visuell mit einem Programmierwerkzeug
manipulieren lässt.
2
Java Beans
3
Entwicklung
Designzeitpunkt
Ausführungszeitpunkt
4
Designzeitpunkt
5
Eigenschaften von Beans
z
z
z
z
z
Eine Bean wird im Programm durch ein Objekt (also
eine instanzierte Klasse) repräsentiert.
Sie besitzt konfigurierbare Eigenschaften, die ihr
Verhalten festlegen.
Eine Bean ist serialisierbar und deserialisierbar.
Eine Bean sendet Events.
Einer Bean kann optional ein Informations-Objekt
zugeordnet werden.
6
Bean-Klasse
z
Es gibt keine Bean-Klasse, die man zum
Erstellen von Beans erweitern könnte!
z
Sichtbare Beans erweitern direkt oder
indirekt die Klasse Component.
Nicht sichtbare Beans müssen keine
bestimmte Superklasse erweitern.
z
7
Namensmuster für Eigenschaften
z
Eigenschaften sind ein wesentliches
Designmerkmal von Beans.
Beim Namensmuster für Eigenschaften
entspricht ein Methodenpaar
public X getEigenschaftsName()
public void setEigenschaftsName(X x)
einer Lese-/Schreibeigenschaft vom Typ X
8
Eine sehr einfache Bean
package p;
public class Quadrat implements java.io.Serializable {
private int zahl;
public int getZahl() {
return zahl;
}
public void setZahl(int zahl) {
this.zahl = zahl;
}
public int getQuadrat() {
return this.zahl * this.zahl;
}
}
9
Jar-Archive für Komponenten
Listing: Quadrat.mf
Manifest-Version: 1.0
Name: p/Qudrat.class
Java-Bean: True
Im nächsten Schritt packen wir mit jar die Klassen, sowie
die Manifest-Datei zu einem Archiv zusammen.
$ jar cfm Quadrat.jar Quadrat.mf p/Quadrat.class
10
DEMO
Quadrat in NetBeans
Switch
11
Namensmuster für Ereignisse
Ereignisse von Typ ClickEvent
Empfängerschnittstelle: ClickListener
Die Methoden zum Hinzufügen und Entfernen eines
Empfängers:
public void addClickListener(ClickListener e)
public void removeClickListener(ClickListener e)
12
Eigenschaftstypen von Beans
Eine komplexe Bean hat verschiedene Arten von
Eigenschaften, die man in einem Programmierwerkzeug
freilegen sollte, damit sie ein Benutzer zur Entwurfzeit setzen
oder zur Laufzeit abrufen kann.
z
Einfache Eigenschaften
z
z
z
z
Boolesche Eigenschaften
Indizierte Eigenschaften
Gebundene Eigenschaften
Eingeschränkte Eigenschaften
13
Eigenschaftstypen von Beans
Einfache Eigenschaften
public int getZahl() { … }
public void setZahl(int zahl) { … }
Boolesche Eigenschaften
public boolean isVisible() { … }
public void setVisible(boolean v) { … }
14
Indizierte Eigenschaften
Methodennamen:
public X getName(int index) { … }
public void setName(int index, X newValue) { … }
Es werden keine Arrays übergeben, sondern die
Methoden erwarten jeweils den Index der
gewünschten Eigenschaft als zusätzliches
Argument. Für das Einhalten der Arraygrenzen ist
der Aufrufer selbst verantwortlich!
15
Gebundene Eigenschaften
z
z
z
z
z
andere Komponenten werden über eine
Zustandsänderung informiert
Die interessierten Beans empfangen vom Auslöser
ein PropertyChange-Ereignis, das sie auswerten
können.
Bei einer Veränderung werden alle registrierten
Zuhörer durch ein PropertyChangeEvent informiert
Über dieses Ereignis-Objekt erfahren wir den alten
und neuen Wert
Die Zuhörer werden erst nach der Änderung des
internen Zustands informiert.
16
Gebundene Eigenschaften
Properties:
Properties:
val
val
1. Objekt/Komponente
25
0
1
BeanClass.val = ???
r
tene
s
i
L
ge 25;
=
han
C
u
y
l
t
r Va e
e
p
w
o
e
Pr
add =1; n
JavaBeanClass {
int val = 25;
0;
1;
…
}
2. Objekt/Komponente
BeanClass.val
25
BeanClass.val ==???
alue
oldV
3. Objekt/Komponente
addPropertyChangeListener
oldValue=1;
newValue=25;
BeanClass.val
25
BeanClass.val ==???
17
import java.beans.*;
import java.awt.*;
public class PropertyChangeStringBean extends Canvas {
private String string = "";
private PropertyChangeSupport changes=new PropertyChangeSupport(this);
public void setString( String newString ) {
String oldString = string;
string = newString;
Beispiel:
changes.firePropertyChange( "string", oldString, newString );
Diese Komponente ändert den internen String
}
über setString(). Nach der Änderung werden
public String getString()
{ Listener informiert. Sie bewirkt sonst nichts
alle
return string;
Großartiges.
}
@Override
public void addPropertyChangeListener( PropertyChangeListener l ) {
changes.addPropertyChangeListener( l );
}
@Override
public void removePropertyChangeListener( PropertyChangeListener l ) {
changes.removePropertyChangeListener( l );
}
}
18
Eingeschränkte Eigenschaften
z
Eine Eigenschaft wird durch die Tatsache
eingeschränkt, das ein beliebiger Empfänger
gegen vorgeschlagene Änderungen
„Einspruch erheben“ kann und damit bewirkt,
dass die Eigenschaft zur alten Einstellung
zurückkehrt.
19
Bean-Eigenschaften anpassen
20
BeanInfo-Klasse
z
z
z
explizites Auflisten der freigegebenen
Leistungen, die nach außen sichtbar sein
sollen
Zuordnung eines mit der Bean verwendeten
Icons;
Anmeldung einer Customizer-Klasse.
21
Literaturhinweise
z
z
z
Java ist auch eine Insel
von Christian Ullenboom, Galileo Computing
Handbuch der Java-Programmierung
von Guido Krüger, Addison-Wesley
Core Java 2 Bd.2 Expertenwissen
C.S.Horstmann, G.Cornell, Addison-Wesley
22
JavaBeans
Sergej Sasypkin
Fragen?
23
Herunterladen