diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Master/Reference Architectures and Patterns/hjp5/html/k100280.html | |
| download | Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2 | |
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100280.html')
| -rw-r--r-- | Master/Reference Architectures and Patterns/hjp5/html/k100280.html | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100280.html b/Master/Reference Architectures and Patterns/hjp5/html/k100280.html new file mode 100644 index 0000000..dd52ee5 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100280.html @@ -0,0 +1,193 @@ +<html>
+<head>
+<title>
+Handbuch der Java-Programmierung, 5. Auflage
+</title>
+</head>
+<body>
+<a name="startofbody"></a>
+<script language="JavaScript" src="hjp4lib.js">
+</script>
+<script language="JavaScript">
+installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100279.html;106,k100279.html;107,k100281.html;108,k100287.html");
+</script>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100279.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100279.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100281.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100287.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">Kapitel 44 - Beans
+</table>
+<hr>
+
+
+<!-- Section -->
+<a name="sectionbeans"></a>
+<h2>44.1 Grundlagen und Begriffe </h2>
+<hr>
+<ul>
+<li><a href="k100280.html#sectionbeans">44.1 Grundlagen und Begriffe</a>
+</ul>
+<hr>
+
+<p>
+Als <a name="ixa103261"><i>Beans</i></a> werden in Java eigenständige,
+wiederverwendbare Softwarekomponenten zum Aufbau von Applets und Applikationen
+bezeichnet. Obwohl sie nicht zwangsläufig eine für den Anwender
+sichtbare Oberfläche haben müssen, werden Beans doch typischerweise
+als grafische Komponenten zur Verfügung gestellt und können
+mit Hilfe eines GUI-Editors (GUI = <a name="ixa103262"><i>Graphical User Interface</i></a>)
+interaktiv zu komplexen Anwendungen zusammengesetzt werden.
+
+<p>
+Derartige GUI-Komponenten gibt es seit geraumer Zeit. Sie wurden auf
+dem PC mit Entwicklungsumgebungen wie Visual Basic oder Delphi populär
+und haben - beinahe noch stärker als rein sprachengetragene Konzepte
+- dazu beigetragen, die komponentenbasierte Softwareentwicklung einer
+breiten Masse von Entwicklern nahe zu bringen.
+
+<p>
+Beans gibt es seit der Version 1.1 des Java Development Kit. Während
+auch vorher schon wiederverwertbare Komponenten entwickelt werden
+konnten (wir haben das in <a href="k100219.html#kapitelcanvasundpanel">Kapitel 33</a>
+am Beispiel einer selbstentwickelten 7-Segment-Anzeige demonstriert),
+wurde mit Einführung der Beans-Architektur eine Standardisierung
+vieler wichtiger Konzepte vorgenommen und so die Grundlage für
+die einheitliche Entwicklung von GUI-Komponenten gelegt.
+
+<p>
+Im Gegensatz zu den betriebssystem- und teilweise herstellerspezifischen
+Komponentenmodellen vieler Entwicklungssysteme steht mit den Beans
+eine plattformübergreifende Komponentenarchitektur zur Verfügung.
+Eine Bean von Hersteller A, die auf Betriebssystem B entwickelt wurde,
+sollte (wenn sie nicht aus anderen Gründen plattformabhängig
+ist) ohne Probleme in einer Entwicklungsumgebung des Herstellers C
+auf Betriebssystem D laufen und Bestandteil eines Java-Programms werden
+können, das schließlich auf Plattform E läuft.
+
+<p>
+Bevor wir uns den wichtigsten Eigenschaften einer Bean zuwenden, wollen
+wir uns kurz mit einigen grundlegenden Begriffen vertraut machen.
+
+<p>
+Bei der Entwicklung einer Anwendung mit grafischen Komponenten wird
+zweckmäßigerweise zwischen <a name="ixa103263"><i>Designzeitpunkt</i></a>
+und <a name="ixa103264"><i>Ausführungszeitpunkt</i></a> unterschieden.
+Beide bezeichnen eigentlich Zeiträume und stehen für die
+beiden unterschiedlichen Phasen der Entwicklung einer Anwendung und
+ihrer späteren Ausführung. Zum Designzeitpunkt werden die
+Komponenten in einem grafischen Editor des Entwicklungswerkzeugs ausgewählt,
+in einem Formular platziert und an die Erfordernisse der Anwendung
+angepasst. Diesen Editor wollen wir fortan als <a name="ixa103265"><i>GUI-Designer</i></a>
+bezeichnen, synonym werden aber auch Begriffe wie <i>Grafik-Editor</i>,
+<i>GUI-Painter</i> usw. verwendet.
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Ein großer Teil der bei den Beans realisierten Konzepte spielt
+nur für den Designzeitraum eine Rolle. Spielt dieser keine Rolle
+(beispielsweise weil die Komponenten nicht in einem GUI-Designer,
+sondern - wie in diesem Buch bisher stets gezeigt - per Source-Code-Anweisungen
+eingebunden und konfiguriert werden), verlieren Beans einiges von
+ihrer Nützlichkeit, und herkömmliche Techniken der Wiederverwendung
+in objektorientierten Programmen können an ihre Stelle treten.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
+<tr>
+<td><font color="#FFFFFF"> Hinweis </font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+<p>
+Wir wollen uns die wichtigsten Eigenschaften von Beans zunächst
+überblicksartig ansehen:
+<ol type=1>
+<li>Eine Bean wird im Programm durch ein Objekt (also eine instanzierte
+Klasse) repräsentiert. Das gilt sowohl für den Designzeitpunkt,
+bei dem es vom GUI-Designer instanziert wird, als auch für den
+Ausführungszeitpunkt, bei dem die Anwendung dafür verantwortlich
+ist, das Objekt zu konstruieren. Eine Bean benötigt dazu notwendigerweise
+einen parameterlosen Konstruktor.
+<li>Sie besitzt <i>konfigurierbare Eigenschaften</i>, die ihr Verhalten
+festlegen. Diese Eigenschaften werden ausschließlich über
+Methodenaufrufe modifiziert, deren Namen und Parameterstrukturen genau
+definierten Designkonventionen folgen. Damit können sie vom GUI-Designer
+automatisch erkannt und dem Entwickler in einem Editor zur Auswahl
+angeboten werden.
+<li>Eine Bean ist serialisierbar und deserialisierbar. So können
+die zum Designzeitpunkt vom Entwickler vorgenommenen Einstellungen
+gespeichert und zum Ausführungszeitpunkt rekonstruiert werden.
+(Serialisierung wurde in <a href="k100260.html#kapitelserialisierung">Kapitel 41</a>
+behandelt).
+<li>Eine Bean sendet Events, um registrierte Listener über Änderungen
+ihres internen Zustands oder über sonstige wichtige Ereignisse
+zu unterrichten.
+<li>Einer Bean kann optional ein Informations-Objekt zugeordnet werden,
+mit dessen Hilfe dem GUI-Designer weitere Informationen zur Konfiguration
+übergeben und zusätzliche Hilfsmittel, wie spezialisierte
+Eigenschafteneditoren oder Konfigurationsassistenten, zur Verfügung
+gestellt werden können.
+</ol>
+
+<p>
+Werden diese Konventionen eingehalten, kann der GUI-Designer die Bean
+zum Designzeitpunkt automatisch untersuchen (dieser Vorgang wird als
+<a name="ixa103266"><i>Introspection</i></a> bezeichnet) und dem Entwickler
+alle öffentlichen Eigenschaften, Methoden und Ereignisse menügesteuert
+anbieten. Die Eigenschaften werden dabei üblicherweise in einem
+<i>Property Sheet</i> (oder Eigenschaftenfenster) angeboten und erlauben
+es dem Entwickler, den Zustand der Bean interaktiv zu verändern.
+Da eine Bean serialisierbar ist, kann der GUI-Designer alle Design-Anpassungen
+speichern und dem Programm zum Ausführungszeitpunkt zur Verfügung
+stellen.
+
+<p>
+Bei manchen GUI-Designern können Beans darüber hinaus grafisch
+miteinander verbunden werden, um zu symbolisieren, dass bei Auftreten
+eines vorgegebenen Ereignisses in Bean A eine bestimmte Methode in
+Bean B aufgerufen wird. Der GUI-Designer erzeugt dann eine geeignete
+Adapterklasse und generiert den Code zum Aufruf der Methode. Manche
+GUI-Designer erlauben es zusätzlich, den generierten Code zu
+modifizieren und so bereits wesentliche Teile der Programmlogik im
+Designer zu erstellen.
+<hr>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
+Wesley, Version 5.0.1
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100279.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100279.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100281.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100287.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">© 1998, 2007 Guido Krüger & Thomas
+Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
+</table>
+<a name="endofbody"></a>
+</body>
+</html>
|
