Java-Logo

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

    1. Die Klasse Time kann nur ordnungsgemäß ablaufen, wenn eine Klasse Wecker existiert. Dieser Tatbestand läßt sich aus folgenden Implementierungen ableiten:
      1. Die Klasse Time besitzt genau einen Konstruktor. Dieser erwartet als ersten Argument eine Referenz auf ein Objekt der Klasse Wecker.
      2. 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!

    2. 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.
    3. 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.
    4. 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.
    5. 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


    Kapitel I

    Allgemeines über Java

    Kapitel II

    Java-Applets und ihre Funktionsweise



    Kapitel III

    Interessante Links

    Kapitel IV

    Einfürung in Java anhand konkreter Bespiele


    Copyright © Quoc-Thanh Lam & Marco Lauer