Kapitel IV
Ein Wecker-Applet
Kritik
Ein Wecker-Applet
Das folgende Applet zeigt einen Wecker, bestehen aus einer Uhr und einem
Einstellbereich für die Festlegung der Weckzeit. Das Applet funktioniert
zwar, beinhaltet jedoch typische Fehler aus Sicht der objektorientierten
Programmierung, d.h. der Entwurf entspricht eher einem nicht objektorientierten
Programm. Diese Fehler werden erst im darauffolgenden Beispiel durch eine
entgültige Version beseitigt.
Die Uhr ist stark vereinfach; so steht der Stundenzeiger z.B. bei 9.30
Uhr auf 9 Uhr und nicht zwischen 9 und 10 Uhr. Auch diesen Mangel beheben
wir in der vollstaendigen Version. Wir wollen hier zunaechst zeigen, wie
einfach Applets um GUI- Einheiten erweiterbar sind.
(Quelltext)
Hier das Applet:
Kurzbeschreibung des Applets:
Kritik
- Die Klasse Time kann nur ordnungsgemäß ablaufen,
wenn eine Klasse Wecker existiert. Dieser Tatbestand läßt
sich aus folgenden Implementierungen ableiten:
- Die Klasse Time besitzt genau einen Konstruktor. Dieser erwartet
als ersten Argument eine Referenz auf ein Objekt der Klasse Wecker.
- Desweiteren greift die Methode run auf Elemente (Methoden und
Attribute) der Klasse Wecker zu.
Aufgrund dieser Tatsache stellt sich die Frage, ob die reale Welt korrekt
abgebildet wurde. Diese Frage muß leider verneint werden. Denn eine
Uhr muß unabhängig von einem Wecker lauffähig sein!
- Aufgrund von 1. b) kann festgestellt werden, daß die Anwendung
nicht nach objektorientierten Gesichtspunkten entworfen wurde. Wichtige
Elemente wie Wiederverwendbarkeit und Datenkapselung wurden nicht berücksichtigt.
In Allem heißt das, daß die Applikation nicht weiter ist als
herkömmliche Applikationen mit funktionalen Ansatz, wie sie in den
Programmiersprachen C, Pascal, ... üblich sind.
- Bei der Implementierung der Klaße Time wurde der Punkt
Wiederverwendbarkeit außer Acht gelaßen. Es stellt sich zum
Beispiel die Frage, wie neue Uhren auf der Basis der Klasse Time
entwickelt werden können. Beim näheren Hinsehen wird man merken,
daß die Wiederverwendung der Klasse Time kaum bzw. nicht möglich
ist.
- Ferner kann die Klasse Wecker nicht weiter verwendet werden.
Denn diese ist von Applet abgeleitet, d.h. Wecker ist immer nur
als eigenständiges Applet ablauffähig. Es wäre wünschenswert
Wecker in unterschiedliche Applets einbetten zu können. Aufgrund
der jetzigen Implementierung ist dies nicht möglich.
- In der jetzigen Implementierung kennt die Klasse Time einen
Wecker. Die (public) Schnittstelle von Wecker ist jedoch nicht "eng"
genug. Was passiert beispielsweise, wenn Time die Methode init
der Klasse Wecker erneut aufruft. Ein wiederholtes Aufrufen dieser
Methode hätte nicht vorhersehbare Folgen als Konsequenz. Die Klasse
Wecker darf daher nur Methoden an der public-Schnittsstelle anbieten,
die auch tatsächlich verwendet werden dürfen.
-> Im zweiten
Ansatz wird versucht die oben genannten Nachteile zu eliminieren.
nächstes
Beispiel
|
Allgemeines über Java
|
|
|
Java-Applets und ihre Funktionsweise
|
|
|
|
|
Interessante Links
|
|
|
Einfürung in Java anhand konkreter Bespiele
|
Copyright © Quoc-Thanh
Lam & Marco Lauer