© APSIS GmbH extern.gif (1249 Byte), Polling, 2008


Übungsaufgaben

zum Kapitel 2.

Kapitel 2.1

Übung 2.1: Geben Sie der leeren Klasse einen anderen Namen, und tippen Sie sie mit Hilfe des Editors in Ihren Rechner ein. Speichern Sie sie in einer Datei, geben Sie dabei auch der Datei einen geeigneten Namen (denselben wie Ihrer Klasse, mit der Dateinamenergänzung .java). Übersetzen Sie sie mit Ihrem Compiler. Falls er – infolge von Tippfehlern – Fehler meldet, korrigieren Sie sie mit dem Editor, bis Sie eine Datei mit dem Bytecode bekommen. Versuchen Sie diese mit den Interpretern java und av auszuführen. Die Ausführung wird allerdings – ähnlich wie bei der Klasse LeereKlasse im Programm (2.1) auf Seite 18 – von beiden Interpretern mit einer Fehlermeldung abgelehnt.

Kapitel 2.2.1

Übung 2.2: Erweitern Sie Ihre leere Klasse aus der Übung 2.1 auf Seite 20. Übersetzen Sie sie und versuchen Sie sie mit zwei verschiedenen Interpretern auszuführen. Beobachten Sie das Ergebnis.

Kapitel 2.2.2

Übung 2.3: Lesen Sie die Programmtextdatei, die Sie in der Übung 2.2 erstellt haben, in Ihren Editor ein. Geben Sie der Klasse einen anderen (selbst erfundenen) Namen, und erweitern Sie damit die Klasse Programm aus dem Paket lehrbuch. Speichern Sie Ihr Programm unter einem geeigneten Dateinamen.

Beim Übersetzen des Programms werden Sie möglicherweise feststellen, dass der Compiler das Paket lehrbuch nicht kennt. Sie müssen es dem Compiler bekannt geben. Das tun Sie, indem Sie es auf Ihre Festplatte kopieren und den Ort – entsprechend der Bedienungsanleitung Ihres Compilers – hinzufügen. Bei javac besteht dies aus dem Setzen der Umgebungsvariable CLASSPATH.

Kapitel 2.2.4

Übung 2.4: Erweitern Sie die Klasse JavaIstSpitze aus dem Paket lehrbuch durch Ihre eigene Klasse (diese können Sie z.B. Spitze nennen) und überprüfen ihre Wirkung, indem Sie sie mit av interpretieren.

Kapitel 2.2.6

Übung 2.5: programm ist nicht die einzige Methode der Klasse lehrbuch.HalloWelt, die überschrieben werden kann. Überschreiben Sie die Methode init mit der leeren Methode und vergleichen Sie die Wirkung mit der Version, wo programm überschrieben wurde.

Kapitel 2.2.7

Übung 2.6: Bei der Klasse lehrbuch.HalloWelt besteht die Möglichkeit, statt javaIstSpitze die Methode halloWelt aufzurufen. Probieren Sie beide Möglichkeiten aus, indem Sie zwei (ähnliche) Programme schreiben: Die erste Version soll wie das obige Programm JavaIstSpitze sein. In der Zweiten rufen Sie nicht die Methode super.javaIstSpitze, sondern die Methode super.halloWelt auf. Das Ergebnis wird wie im Programm  (2.5) sein.

Kapitel 2.2.9

Übung 2.7: Überarbeiten Sie eine der Klassen (Ihrer Wahl) aus der vorherigen Übung 2.6, indem Sie in der Methode programm eine interne Methode aufrufen. Hierin müssen Sie dann eine geerbte Methode aufrufen.

Kapitel 2.2.10

Übung 2.8: Benutzen Sie die Methode animation aus der Klasse lehrbuch.HalloWelt, um Ihren Lieblingsspruch zu animieren.

Übung 2.9: Die Methode abspielen aus der Klasse lehrbuch.HalloWelt ist geeignet, den Inhalt einer Audiodatei hörbar zu machen. Hierzu muss ihr Name als Zeichenkettenparameter der Methode übergeben werden.

Erweitern Sie nun lehrbuch.HalloWelt und hören Sie sich die Datei Hallo.au – oder eine beliebige andere Audiodatei, die Sie vielleicht erstellt (z.B. über eine Audiokarte mit dem Mikrofon aufgenommen), aus dem Internet geholt oder irgendwo gefunden haben. Sie muss im aktuellen Verzeichnis (von wo das Java-Programm gestartet wird) gespeichert werden.

Übung 2.10: Schreiben Sie eine Klasse, die lehrbuch.HalloWelt erweitert. Fügen Sie drei eigene öffentliche parameterlose Methoden hinzu: In der ersten rufen Sie die Methode animation mit Ihrem Lieblingsspruch auf; in der zweiten rufen Sie abspielen mit Ihrer Liebling-Audiodatei auf; in der dritten geben Sie eine meldung aus.

Dies ist eine Klasse, die nicht zum Zwecke des Ausführens erstellt wurde; ihr Zweck ist, dass sie erweitert wird und ihre Methoden aufgerufen werden. Aus diesem Grund sollten Sie in ihr die programm-Methode nicht überschreiben.

Schreiben Sie für alle drei eigenen Methoden je eine Testklasse, d.h. eine Programmklasse, die Ihre Klasse erweitert und die Methode programm mit dem Aufruf einer Ihrer Methoden überschreibt.

Kapitel 2.2.11

Übung 2.11: Die Methode abspielen aus der Übung 2.9 kann auch mit zwei Parametern aufgerufen werden: Die Erste ist – nach wie vor – der Name einer Audiodatei; die Zweite ist eine Zeichenkette, die parallel zum Abspielen als Animation auf dem Bildschirm angezeigt wird. Ein Beispiel für den Aufruf ist etwa

abspielen("Hallo.au", "Hallo Welt!");

Rufen Sie nun diese Methode mit Parametern Ihrer Wahl auf.

Kapitel 2.2.14

Übung 2.12: In der Übung 2.10 haben Sie eine Unterklasse von lehrbuch.HalloWelt mit drei eigenen parameterlosen Methoden angefertigt.

Erzeugen Sie nun mit Hilfe von javadoc (aus dem sdk) eine Dokumentation in HTML-Format für denjenigen, der Ihre Klasse benutzen (d.h. erweitern) möchte. Setzen Sie zu diesem Zweck Dokumentationskommentare vor die drei neuen Methoden, die ihre Funktionalität beschreiben. Setzen Sie auch einen Dokumentationskommentar vor die Klassendefinition, der ihre Funktionalität allgemein beschreibt. Erwähnen Sie in diesen Kommentaren nicht, wie Ihre Methoden funktionieren; dies interessiert den Benutzer der Klasse nicht. Beschreiben Sie nur, was sie tun. Finden Sie Ihre Kommentare in der von javadoc erzeugten HTML-Datei wieder.

Kapitel 2.3.2

Übung 2.13: Testen Sie das Programm (2.17), indem Sie es eintippen, übersetzen und ausführen. Sie werden einen Datenbehälter im Fenster betrachten können: Das Programm selbst führt allerdings nichts aus, es hat – nach wie vor – einen leeren Anweisungsteil und implementiert ein konstantes Programm.

Kapitel 2.3.4

Übung 2.14: Verlängern sie den obigen Algorithmus EimerSequenz, indem Sie den Eimer dreimal nacheinander füllen und entleeren.

Kapitel 2.4.2

Übung 2.15: Untersuchen Sie die Klasse ToleranterEimer anhand ihrer Dokumentation und schreiben Sie ein Programm, das zeigt, dass sie wirklich fehlertolerant ist.

Kapitel 2.4.4

Übung 2.16: Modifizieren Sie Ihre Lösung der Übung 2.14, indem Sie darin eine Ausnahme auslösen. Beobachten Sie und markieren Sie mit einem Kommentar, welche Aufrufe ausgeführt werden und welche nicht mehr. Fangen Sie in einem zweiten Programm die Ausnahmen VollError und LeerError auf. Rufen Sie im Ausnahmebehandlungsteil die Methode meldung aus der Klasse lehrbuch.Programm auf. Sie verlangt einen Zeichenkettenparameter: Melden Sie jeweils "Eimer voll!" oder "Eimer leer!".

Kapitel 2.4.7

Übung 2.17: Untersuchen Sie die Dokumentation der Klasse lehrbuch.VierKreise und schreiben Sie ein Programm, das die Methoden der durch sie implementierten statischen Datenbehälter testet.

Kapitel 2.5.3

Übung 2.18: Legen Sie zwei Objekte der Klasse lehrbuch.Kreis an. Rufen Sie ihre Mutatoren für sie wiederholt auf und experimentieren Sie mit ihnen.

Kapitel 2.5.6

Übung 2.19: Untersuchen und testen Sie die folgende Klasse LokaleReferenz. Wie viele Eimer erscheinen bei der Ausführung im Fenster? Erklären Sie, warum. Sie sollen auch alle Kommentare in der Klasse verstehen und nachvollziehen können. Warum werden in privateMethode die Ausnahmen nicht aufgefangen?

Verändern Sie das Programm so, dass Sie privateMethode zweimal aufrufen.

import lehrbuch.Eimer;
import lehrbuch.VollException; import lehrbuch.LeerException;
public class LokaleReferenz extends lehrbuch.Programm {
   private void privateMethode() throws VollException, LeerException {
      Eimer eimer; // lokale Referenz
      eimer = new Eimer(); // ein Objekt
      eimer.anzeigen(); // Methodenaufruf für das erzeugte Objekt
      eimer.fuellen();
      eimer.entleeren();
      // e.fuellen(); // lokale Referenz e von hier nicht erreichbar
   }
   public void programm() {
      try {
          privateMethode(); // Aufruf der privaten Methode
          // eimer.fuellen(); // lokale Referenz eimer von hier nicht erreichbar
           Eimer e; // eine andere lokale Referenz
          e = new Eimer(); // ein anderes Objekt
          e.anzeigen();
          e.fuellen();
          e.entleeren();
      } catch (VollException ausnahme) { super.meldung("Eimer schon voll");
      } catch (LeerException ausnahme) { super.meldung("Eimer noch leer");
      }
   }
}

Übungsaufgaben zum Kapitel 3


© APSIS GmbH extern.gif (1249 Byte), Polling, 2008