Logo Logo
InfoHome Themen Projekte Links Software
Themen
JavaHamster
BlueJ
Klassen und Objekte
Klassendefinition
Objektinteraktion
Klassendokumentation
Objektsammlungen
Aufgaben
Projekte
Java
HTML
XHTML
CSS
XML
Datenbanken
MySQL
Theoretische Informatik
PHP
Kara
Lego-Roboter
Algorithmen

Objektsammlungen flexibler Größe

Projekt: Notizbuch

Am Beispiel eines persönlichen Notizbuches soll im Folgenden eine Möglichkeit demonstriert werden, die Java für die Gruppierung einer beliebigen Anzahl von Objekten in einem einzelnen Behälter-Objekt (Container) bereithält.

Das Notizbuch soll folgende Funktionen bereithalten:

  • Notizen können gespeichert werden
  • Die Anzahl der Notizen ist nicht begrenzt
  • Einzelne Notizen können angezeigt werden
  • Die Anzahl der Notizen kann abgefragt werden

Diese Funktionen lassen sich unter Benutzung der Bibliotheksklasse ArrayList leicht realisieren. Bibliotheksklassen sind Klassen, die bereits fix und fertig in Java implementiert worden sind. In Java gibt es hunderte solcher vordefinierter Klassen. Die Java-Dokumentation bietet einen Überblick über die jeweiligen Insatnzvariablen und Methoden dieser Klassen. Falls Sie die Dokumentation nicht heruntergeladen haben, können Sie zur Klasse ArrayList hier online nachschlagen.

Das folgende Objektdiagramm zeigt die Struktur des Projektes Notizbuch.

Wichtig ist die aufsteigende, mit Null beginnende Nummerierung (Indizierung) der einzelnen Objekte einer Sammlung. Über seinen Index innerhalb der ArrayList lässt sich jedes Notizobjekt gezielt ansprechen.

Zum Arbeiten mit dem Notizbuch werden zunächst nur die Methoden add, get und size benötigt. add(Object notiz) fügt eine Notiz (am Ende der ArrayList) ein, get(int index) liefert eine Notiz und size() liefert die Anzahl der gepeicherten Notizen

Um die Klasse ArrayList benutzen zu können, muss sie zunächst mittels import Anweisung in unser Programm eingebunden werden. Die Klasse ArrayList befindet sich im Paket (Zusammenfassung von Klassen ähnlicher Funktionalität) java.util und wird mit der Zeile import java.util.ArrayList; angefordert.

Als Konstruktor für unser ArrayList-Objekt verwenden wir zunächst den Standard-Konstruktor ArrayList(). Dieser legt eine leere ArrayList für zunächst 10 Elemente an. Offensichtlich wird die Kapazität der ArrayList vor Einfügen des 11. Elementes automatisch erweitert (Wie?). In blueJ lässt sich das durch inspizieren eines neu erzeugten ArrayList-Objektes bestätigen.

Es stellt sich beim Arbeiten mit Sammlungen häufig die Aufgabe, mit allen Objekten der Sammlung etwas zu tun (z.B. alle gespeicherten Notizen ausgeben). Dies lässt sich in der Praxis mit Hilfe einer while-Schleife der Form

int index=0;
while(index<notizen.size()){
// tue was, mit notiz Nr. index, z.b. System.out.println(notizen.get(index));
}

erledigen. Beachten Sie dabei, dass size() die Anzahl der gespeicherten Objekte liefert, die gerade um Eins größer ist, als der größte Index.

Iteratoren

Es gibt eine weitere Möglichkeit, eine Sammlung zu durchlaufen, nämlich die Verwendung eines Iteratorobjektes. Ein Iterator-Objekt heftet sich an eine Sammlung und kennt unter anderem die beiden Methoden hasNext und next. boolean hasNext() liefert false, wenn man am Ende der Sammlung angekommen ist, sonst true. Object next() liefert das nächste Objekt der ArrayList.

Iterator it = notizen.iterator();
while(it.hasNext()){
// tue was, mit it.next(), z.b. System.out.println(it.next());
}

Offensichtlich ist Iterator keine gewöhnliche Klasse, da die Syntax bei Aufruf der Konstruktormethode nicht wie gewohnt abläuft (warum nicht?). Auch für die Benutzung von Iteratoren ist eine Importanweisung nötig: import java.util.Iterator. Oder man importiert einfach alle Klassen im Paket java.util mit der Anweisung import java.util.*.

» drucken: pdf | html

© 2004-2024 M. Blanke · Ursulaschule · Kleine Domsfreiheit 11-18 · 49074 Osnabrück