Beans Erklärung

  • Themenstarter DerEinzigartige
  • Beginndatum
D

DerEinzigartige

Gast
Hi,

überall wird von diesen "Beans" gesprochen. Natürlich hab ich mal danach gegoogled, aber die Erklärungen finde ich doch zu theoretisch.

Also laut der ganzen Seiten sind Beans Klassen, die nach einer bestimmten Konvention entwickelt wurden und deren Objekte sich somit komplett in einer GUI änderbar sind und sich in ihrem Zustand abspeichern lassen.

Fragen: Wäre jetzt diese (schnell aus dem Ärmel geschüttelt), bis auf die Serialisierbarkeit, somit ein Bean? Wenn nein, was fehlt/was ist falsch?

Java:
public class Customer {
	private String id;
	private String lastName;
	private String firstName;
	private String street;
	private String postalCode;
	private String town:
	private double balance;

	public void writeIntoDatabase() {
		// ... Methode zum Speichern der Eigenschaften des Objektes in eine Datenbank
	}

	public String getID() {
		return id;
	}

	public void setID(String id) {
		this.id = id;
	}

	// getter/setter für den rest
	// ..
	
}
 

nrg

Top Contributor
also ich würde jetzt meine Hand nicht dafür ins Feuer legen, dass das zwingend erforderlich ist aber ich würde:

Java:
public String getId() {
...

und

Java:
public void setId(String id) {
...

schreiben.

SOA& Webservices in der Praxis - Google Bücher

hier hab ich eine Kleinigkeit dazu gefunden was zumindest eine XML Serialisierung als Beankonform versteht
 
D

DerEinzigartige

Gast
Also mein Lehrer damals hat gemeint, Abkürzungen groß zu schreiben. z.b. wird die Abkürzung XML auch immer komplett groß geschrieben (XMLEncoder z.B.).
Oder ist die Bean-Konvention != allgemein gelehrte Programmier-Konvention?
 
D

DerEinzigartige

Gast
Java:
public class Customer {

    // properties

    private String id;
    private String lastName;
    private String firstName;
    private String street;
    private String postalCode;
    private String town;
    private double balance;

    // methods

    public void write(File outputFile) throws java.io.FileNotFoundException, java.io.IOException {
        FileOutputStream os = new FileOutputStream(outputFile);
        XMLEncoder encoder = new XMLEncoder(os);
        encoder.writeObject(this);
        encoder.close();
        os.close();
    }

    public void read(File inputFile) throws java.io.FileNotFoundException {
        FileInputStream is = new FileInputStream(inputFile);
        XMLDecoder decoder = new XMLDecoder(is);
        Customer customer = (Customer) decoder.readObject();
        this.equalize(customer);
    }

    public void equalize(Customer customer) {
        setID(customer.getID());
        setLastName(customer.getLastName());
        setFirstName(customer.getFirstName());
        setStreet(customer.getStreet());
        setPostalCode(customer.getPostalCode());
        setTown(customer.getTown());
        setBalance(customer.getBalance());
    }

    public String getID() {
    	return id;
    }

    public void setID(String id) {
        this.id = id;
    }

// Restliche Getter/Setter.....

Wäre die Klasse nun ein Bean?
 

nrg

Top Contributor
probiers doch mit XML Serialisierung aus. Wenn das Objekt wieder gelesen wird, ist die Klasse wohl beankonform. Ich würde sagen ja...
aber, wie gesagt, bin mir nicht sicher, ob die methoden case sensitive sind und nur der erste Buchstabe der Variablenbezeichnung groß geschrieben wird (und es somit getId() heissen müsste).
 
G

Gastredner

Gast
Ich kann mich irren, aber ich meine, eine Bean kann durch vier Dinge identifiziert werden:
  1. Sie implementiert das Interface Serializable.
  2. Sie bietet PropertyChangeSupport, also die Möglichkeit, einen Listener bei der Änderung eines Wertes über diese Änderung zu informieren.
  3. Sie bietet Getter und Setter für alle (serialisierbaren) Attribute an.
  4. Sie besitzt einen parameterlosen Standardkonstruktor.
Ob da jetzt eine GUI-Komponente oder sonstwas mit dranhängt - das sollte egal sein.
 

nrg

Top Contributor
besitzt nicht jede Klasse einen parameterlosen Standardkonstruktor, weil bei der instanziierung der super konstruktor von Object aufgerufen wird?
 

EdelStoff

Mitglied
besitzt nicht jede Klasse einen parameterlosen Standardkonstruktor, weil bei der instanziierung der super konstruktor von Object aufgerufen wird?

nur solange bis die Klasse keinen parametrisierter Konstruktor besitzt.

Java:
public class A {
	int i;
	public A(int i) {
		this.i = i;
	}
}

public class B {
	public B() {
		A a = new A(); // geht nicht
	}
}
 

LoR

Bekanntes Mitglied
Das ist bspw. eine Java-Bean (vgl. Beitrag von "Gastredner"):

Java:
import java.beans.*;
import java.io.Serializable;

public class Customer implements Serializable {

    public static final String PROP_LASTNAME = "lastName";

    private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
    
    private String id;
    private String lastName;

    /**
     * Get the value of id
     *
     * @return the value of id
     */
    public String getId() {
        return id;
    }

    /**
     * Set the value of id
     *
     * @param id new value of id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * Get the value of lastName
     *
     * @return the value of lastName
     */
    public String getLastName() {
        return lastName;
    }

    /**
     * Set the value of lastName
     *
     * @param lastName new value of lastName
     */
    public void setLastName(String lastName) {
        String oldLastName = this.lastName;
        this.lastName = lastName;
        propertyChangeSupport.firePropertyChange(PROP_LASTNAME, oldLastName, lastName);
    }

    /**
     * Add PropertyChangeListener.
     *
     * @param listener
     */
    public void addPropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener(listener);
    }

    /**
     * Remove PropertyChangeListener.
     *
     * @param listener
     */
    public void removePropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.removePropertyChangeListener(listener);
    }
}

Entscheidend an einer Javabean ist vor allem, dass die Getter/Setter einer bestimmten Namenskonvention folgen. PropertyChangeSupport und Serializeable muss eine Bean nicht unbedingt haben/sein wird aber meistens vorausgesetzt.
 
G

Gelöschtes Mitglied 5909

Gast
Gastredner und Lor haben schon das wesentlich geschrieben.

Siehe auch:

JavaBeans ? Wikipedia

etwas wichtiges haben sie aber noch vergessen:

Beans sind Datenkontainer und sollten deshalb keine Logik enthalten.

also hat writeIntoDatabase() etc. darin nix zu suchen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I No Jakarta Enterprise Beans found with interface ignorieren? Java Basics - Anfänger-Themen 2
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
frager2345 Java Beans -> PropertyChangeListener Java Basics - Anfänger-Themen 3
S Was sind Java Beans? Java Basics - Anfänger-Themen 7
N Java Beans Java Basics - Anfänger-Themen 2
B BeanBuilder, Java Beans Java Basics - Anfänger-Themen 5
alderwaran closed source jar, kein javadoc. was macht methode x eigentlich? ( oracle forms pjc beans ) Java Basics - Anfänger-Themen 2
Binary.Coder Java Beans - Entity erstellen Java Basics - Anfänger-Themen 6
T Java Beans JDateChooser Java Basics - Anfänger-Themen 2
M beans Java Basics - Anfänger-Themen 33
A von Java-Beans Klassen aufrufen Java Basics - Anfänger-Themen 3
N Unterschied zwischen Beans finden Java Basics - Anfänger-Themen 2
G Java Beans Java Basics - Anfänger-Themen 2
G Unterschied Observer&Observable<->java.beans.Prope Java Basics - Anfänger-Themen 4
B Java Beans Java Basics - Anfänger-Themen 5
M in Beans gibt es keinen konstruktor? Java Basics - Anfänger-Themen 4
T Bei Struts Beans updaten ohne ein Request zu verarbeiten Java Basics - Anfänger-Themen 4
G Message Driven Beans Java Basics - Anfänger-Themen 4
M API? Java Beans? Was ist das? Java Basics - Anfänger-Themen 13
G Webapplikation mit JSP und Beans - Eingaben sichern, wie? Java Basics - Anfänger-Themen 11
S Java Beans - Bound Properties Java Basics - Anfänger-Themen 6
H Wie arbeitet man mit Beans? Java Basics - Anfänger-Themen 8
M Beans - Bohnen ??? Java Basics - Anfänger-Themen 5
JaZuDemNo Code Erklärung Java Basics - Anfänger-Themen 3
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Erklärung BufferedReader und InputStreamReader Java Basics - Anfänger-Themen 4
S Erklärung zur Methode und array Java Basics - Anfänger-Themen 12
I Array in umgekehrter Reihenfolge - Erklärung - Java Basics - Anfänger-Themen 3
KogoroMori21 Erklärung zum Ternären Operator Java Basics - Anfänger-Themen 4
I Erklärung zum Java Code Java Basics - Anfänger-Themen 2
D Erklärung Java Basics - Anfänger-Themen 3
A Erklärung Programm zur Kreisberechnung Java Basics - Anfänger-Themen 43
S Bitweise Operatoren" >>>",">>","<<" erklärung Java Basics - Anfänger-Themen 5
D Erklärung eines Satzes Java Basics - Anfänger-Themen 0
M Erklärung: Int IndexOf (String s) Java Basics - Anfänger-Themen 3
C Methoden erklärung Java Basics - Anfänger-Themen 8
W FileReader - Bitte um Erklärung Java Basics - Anfänger-Themen 7
E Erste Schritte Gute Erklärung zu Objekten / Klassen / Methoden / Sichtbarkeiten auf Deutsch Java Basics - Anfänger-Themen 3
D Erklärung static boolean Java Basics - Anfänger-Themen 6
J Bitte um Erklärung Java Basics - Anfänger-Themen 4
C Polymorphie - Erklärung bitte Java Basics - Anfänger-Themen 5
O Über Map laufen Erklärung Java Basics - Anfänger-Themen 4
H Primzahltest : Erklärung zum Code Java Basics - Anfänger-Themen 2
M Erklärung Code Mergesort Bitte Java Basics - Anfänger-Themen 3
N While Schleife Erklärung Bitte Java Basics - Anfänger-Themen 3
B Benötige Erklärung für Lösungsansatz Java Basics - Anfänger-Themen 0
M web.xml Abschnitt Erklärung Java Basics - Anfänger-Themen 2
Z Fibonacci rekursiv meine Erklärung stimmt so? Java Basics - Anfänger-Themen 2
A erklärung von code Java Basics - Anfänger-Themen 4
A DezimalZuBinär - Erklärung der Vorgehensweise des Programms Java Basics - Anfänger-Themen 4
Z Fibonacci Array Erklärung Java Basics - Anfänger-Themen 5
K Erste Schritte Datenbank SQL erklärung Java Basics - Anfänger-Themen 15
H Methoden Bitte um Erklärung der askString-Methode Java Basics - Anfänger-Themen 15
G Erklärung .next Java Basics - Anfänger-Themen 4
D Erklärung Kalenderwoche Java Basics - Anfänger-Themen 14
T Erklärung zur Methode, Modulator Java Basics - Anfänger-Themen 3
V Objekte/Klassen erstellen - Erklärung anhand Beispiel Java Basics - Anfänger-Themen 4
P Methoden Erklärung wie ich eine spezielle Methode richtig anwende Java Basics - Anfänger-Themen 9
S Threads Erklärung ReentrantLock Java Basics - Anfänger-Themen 6
B Kleine Erklärung zu einer Codezeile benötigt Java Basics - Anfänger-Themen 5
G Bitte um Erklärung dieser einer Zeile Java Basics - Anfänger-Themen 5
R Interpretation/Erklärung main Java Basics - Anfänger-Themen 4
Helgon Polymorphie Generischer Methodenkopf - Erklärung Java Basics - Anfänger-Themen 3
W OOP Konstruktoren Erklärung Java Basics - Anfänger-Themen 14
E Quellcode Erklärung Java Basics - Anfänger-Themen 8
R Vererbung Bitte um Erklärung - Instanzvariablen Java Basics - Anfänger-Themen 8
A Java Erklärung? Java Basics - Anfänger-Themen 4
Q Klausur aufgabe Erklärung Java Basics - Anfänger-Themen 12
G Bitte um Erklärung Java Basics - Anfänger-Themen 9
O Erklärung für Pattern Java Basics - Anfänger-Themen 5
K gute erklärung Java Basics - Anfänger-Themen 5
Screen Erklärung von der Umwandlung von .class in .jar o. .exe ! Java Basics - Anfänger-Themen 5
Spin Taschenrechner - Erklärung Java Basics - Anfänger-Themen 9
S Code-Erklärung Java Basics - Anfänger-Themen 4
J Bitte um Erklärung für einen Java-Ausdruck Java Basics - Anfänger-Themen 8
M enhanced for - erklärung Java Basics - Anfänger-Themen 3
K Erklärung der Syntax Java Basics - Anfänger-Themen 6
R Erklärung bitte Java Basics - Anfänger-Themen 3
G Erklärung for-Schleife bei Strings Java Basics - Anfänger-Themen 4
tobiasbeil Fehler array initialisierung. Nur erklärung bitte. Java Basics - Anfänger-Themen 2
W Programm erklärung Java Basics - Anfänger-Themen 7
F Threads - Erklärung und Beispielprogramm Java Basics - Anfänger-Themen 4
D Erklärung für eine Abfrage. Java Basics - Anfänger-Themen 9
D Eine Erklärung für eine 3D-Schleife bitte. :) Java Basics - Anfänger-Themen 4
B [suche erklärung] - sicherheit beim login Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben