Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

14 - JavaBeans. 2 NOEA2009Java-kursus – JavaBeans Content What is a Java Bean? BDK What makes Bean possible? Support for Java Bean References.

Lignende præsentationer


Præsentationer af emnet: "14 - JavaBeans. 2 NOEA2009Java-kursus – JavaBeans Content What is a Java Bean? BDK What makes Bean possible? Support for Java Bean References."— Præsentationens transcript:

1 14 - JavaBeans

2 2 NOEA2009Java-kursus – JavaBeans Content What is a Java Bean? BDK What makes Bean possible? Support for Java Bean References

3 3 NOEA2009Java-kursus – JavaBeans Hvad er Java Beans? Software komponent –Specificerede interfaces. –Uafhængig deployment Definition: “ A Java bean is a reusable software component that can be visually manipulated in builder tools. ” Java Bean Tutorials

4 4 NOEA2009Java-kursus – JavaBeans What is JavaBeans? JavaBeans er en portable, platform-uafhængig komponent model, som er skrevet i Java. Den giver udviklere mulighed for at skrive genbrugelige komponenter “once and run them anywhere”. Målet for JavaBeans er oprette et system hvor udviklere kan tage et sæt beans fra et bibliotek og strikke dem sammen til en applikation

5 5 NOEA2009Java-kursus – JavaBeans Software Komponenter “A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties.” Szyperski ECOOP96

6 6 NOEA2009Java-kursus – JavaBeans Composition not Inheritance In OO languages, new objects are created from old using the inheritance mechanism. Pluggable components are connected together by composition rather than inheritance. Most of the flexibility of inheritance can be gained from various compositional tactics.

7 7 NOEA2009Java-kursus – JavaBeans Features i JavaBeans –Understøtter introspection så udviklingsværktøjer kan undersøge hvordan en bean virker –Understøtter customization så brugeren vha. udv.værktøj kan tilpasse udseende og opførsel af en bean –Understøtter events som en simpel måde til at forbinde bean’en resten af applikationen –Understøtter properties dels til tilpasning og dels til programmerings formål –Understøtter persistence så en bean kan tilpasses i et IDE og have sin tilstand gemt, så den kan hentes frem senere

8 8 NOEA2009Java-kursus – JavaBeans Persistent lager Formål: –at bruge eksisterende data formater og f.eks bruge OLE eller OpenDoc documents –at være triviel for i den normale situation med en lille bean (ved at gemme dens interne tilstand) Solutions –Externalization: giver en Bean med fuld kontrol over det resulterende data layout. –Serialization: giver mulighed for automatisk at gemme og læse den interne tilstand af samling af Java objekter Alle beans skal understøtte Serialization eller Externalization

9 9 NOEA2009Java-kursus – JavaBeans Software komponenter Buttons Text Fields List Boxes Scroll Bars Dialogs VBX, OLE

10 10 NOEA2009Java-kursus – JavaBeans Properties Attributes. Kan være read/write, read-only eller write-only. Flere typer af properties: –Simple –Indexed –Bound –Constrained

11 11 NOEA2009Java-kursus – JavaBeans Design Pattern rules Constructors En bean har kun default konstruktør Simple Properties public T getN() public void setN ( T value) Boolean Properties public boolean isN() public boolean getN() public void setN(boolean value) Indexed Properties public T getN(int index) public T[] getN() public void setN(int index, T value) public void setN(T[] values)

12 12 NOEA2009Java-kursus – JavaBeans Properties eksempel public class alden2 extends Canvas { String ourString = “Hello”; public alden2() { setBackground (Color.red); setForeground (Color.blue); } public void setString (String newString) { ourString = newString; } public String getString() { return ourString; } public Dimension getMinimunSize() { return new Dimension (50, 50); }

13 13 NOEA2009Java-kursus – JavaBeans Bound Properties Genererer notification når en property ændres. public class propertDemo extends Canvas { String ourString = “ Hello ” ; private PropertyChangeSupport changes = new PropertyChangeSupport(this);... public void setString (String newString) { String oldString = ourString; ourString = newString; changes.firePropertyChange( “ string ”, oldString, newString); }...

14 14 NOEA2009Java-kursus – JavaBeans Bound Properties...... public void addPropertyChangeListener (PropertyChangeListener l) { changes.addPropertyChangeListener (l); } public void removePropertyChangeListener (PropertyChangeListener l) { changes.removePropertyChangeListener(l); }

15 15 NOEA2009Java-kursus – JavaBeans Constrained Property Konceptet er en vagt, der kan nedlægge veto –abonner på ‘ VetoableChange ’ kan nedlægge veto til en property ændring ved at kaste en PropertyVetoException. public class JellyBean extends Canvas { private PropertyChangeSupport changes = new PropertyChangeSupport (this); private VetoableChangeSupport vetos = new VetoableChangeSupport (this);... public void setColor (int newColor) throws PropertyVetoException { int oldColor = currentColor; vetos.fireVetoableChange( “ setColor ”, newInteger(oldColor), newInteger(newColor)); currentColor = newColor;

16 16 NOEA2009Java-kursus – JavaBeans Constrained Property... changes.firePropertyChange( “ setColor ”, new Integer(oldColor),new Integer(newColor)); } public void addVetoableChangeListener (VetoableChangeListener l) { vetos.addVetoableChangeListener(l); } public void removeVetoableChangeListener(VetoableChangeListener l) { vetos.removeVetoableChangeListener(l); }

17 17 NOEA2009Java-kursus – JavaBeans Bean Events Definer en ny Event klasse som arver fra EventObject. XEvent Definer et nyt interface som arver fra EventListener og som listeners skal implementere. XEventListener Det skal være muligt at registrere og afregistrere listeners f.eks addXListener(), removeXListener(). Observable skal have kode til at genere event’et og sende det til alle registrerede listeners. fireXEvent() Listeneren skal implementere interfacet for at modtage event.changeX() Listeneren skal registrere sig for at kunne modtage eventet.

18 18 NOEA2009Java-kursus – JavaBeans Events public class eventSource extends GenericEventGenerator {... private Vector myListeners = new Vector();... public synchronized void addMyEventListeners ( MyEventListener l) { myListeners.addElement(l); } public synchronized void removeMyEventListeners ( MyEventListener l) { myListeners.removeElement(l); }...

19 19 NOEA2009Java-kursus – JavaBeans Events... private void notifyEvents() { Vector l; synchronized (this) { l = (Vector) myListener.clone(); } for (int i = 0; i < l.size(); i++) { MyEventListener mel = (MyEventListener) l.elementAt(i); mel.handleThisEvent (this); }

20 20 NOEA2009Java-kursus – JavaBeans Persistens Giver IDE’et mulighed for at genskabe en beans tilstand public class Button implements java.io.Serializable {... } Attributter kan bypass’e serialisation ved bruge keywords transient eller static.

21 21 NOEA2009Java-kursus – JavaBeans Persistens... writeObject og readObject private void writeObject (java.io.ObjectOutputStream s) throws java.io.IOException{} private void readObject (java.io.ObjectInputStream s) throws java.io.IOException, java.lang.ClassNotFoundException {} Giver mulighed for tilpasning af objekter. Udseende og opførsel kan gemmes og genskabes Gem ikke referencer til andre beans

22 22 NOEA2009Java-kursus – JavaBeans Introspection En mekanisme der giver IDE’et mulighed for at analysere en bean To måder til analysere en bean: –low-level reflection APIs. F.eks Class.getSuperclass() –eksplicit information fra udbyder Eksplicit information gives via BeanInfo klassen BeanInfo.

23 23 NOEA2009Java-kursus – JavaBeans BDK Example package acme.beans; import java.awt.*; import java.io.Serializable; public class Acme04Bean extends Canvas implements Serializable { public Acme04Bean() { resize(60,40); this.label="Bean"; setFont(new Font("Dialog", Font.PLAIN, 12)); }

24 24 NOEA2009Java-kursus – JavaBeans Tilpasning af bean Lav din egen BeanInfo klasse som arver fra SimpleBeanInfo. Lav evt. din egen Editor klasse som arver fra PropertyEditorSupport for lave en tilpasset property editor.

25 25 NOEA2009Java-kursus – JavaBeans Customization... BeanInfo package sun.beanbox.beans; import java.beans.*; public class NervousText07BeanInfo extends SimpleBeanInfo { private final static Class beanClass = NervousText07.class; public BeanDescriptor getBeanDescriptor() { BeanDescriptor bd = new BeanDescriptor(beanClass); bd.setDisplayName("Uneasy Text 07"); return bd; }

26 26 NOEA2009Java-kursus – JavaBeans Customization... public PropertyDescriptor[] getPropertyDescriptors() { try { PropertyDescriptor textPD = new PropertyDescriptor("text", beanClass); PropertyDescriptor rv[] = {textPD}; textPD.setPropertyEditorClass(NervousText07TextPropertyEditor.c lass); return rv; } catch (IntrospectionException e) { throw new Error(e.toString()); }

27 27 NOEA2009Java-kursus – JavaBeans Customization... Editor package sun.beanbox.beans; import java.beans.*; public class NervousText07TextPropertyEditor extends PropertyEditorSupport { public String[] getTags() { String values[] = { "Nervous Text", "Anxious Text", "Funny Text", "Wobbly Text"}; return values; }

28 28 NOEA2009Java-kursus – JavaBeans BDK Output


Download ppt "14 - JavaBeans. 2 NOEA2009Java-kursus – JavaBeans Content What is a Java Bean? BDK What makes Bean possible? Support for Java Bean References."

Lignende præsentationer


Annoncer fra Google