erstellt 22.03.04; überarbeitet 28.06.04, 22.02.05, 28.07.06; © Copyright 2004 - 2006 Heinrich Gailer

Kapitel 54 Programmieraufgaben

Aufgabe 1 — Besseres Telefonbuch-Beispiel

Die folgenden Aufgaben bauen auf dem Telefonbuch-Beispiel in diesem Kapitel auf.

Verändern Sie die equals() Methode, so dass der Anwender die gesuchten Namen auch in Klein- oder in Großbuchstaben eingeben kann.

Testen Sie das Programm in einer Klasse TelefonbuchTester.

Zurück zur Übersicht.


Aufgabe 2 — Neue Telefonbuch-Klasse

Leiten Sie eine Klasse Telefonbuch von der Klasse Vector ab.

Erstellen Sie die folgenden Konstruktoren:

Erstellen Sie in der Klasse Telefonbuch eine Methode menu(), die die zur Verfügung stehenden Auswahlmöglichkeiten ausgibt:

---Telefonbuch-Applikation---
Treffen Sie Ihre Auswahl
<1>  Alle Eintraege anzeigen
<2>  Eintrag suchen
<3>  Eintrag bearbeiten
<4>  Eintrag hinzufügen
<5>  Eintrag loeschen
<6>  Anzahl Eintraege
<-1> Ende

Implementieren Sie in der Klasse Telefonbuch für "Alle Eintraege anzeigen" die Methode alleAnzeigen(). Verwenden Sie für diese Methode ein Enumeration-Objekt.

Testen Sie das Programm in einer Klasse TelefonbuchTester2. Die Ausgabe sieht dann ungefähr wie diese aus:

---Telefonbuch-Applikation---
Treffen Sie Ihre Auswahl
<1>  Alle Eintraege anzeigen
<2>  Eintrag suchen
<3>  Eintrag bearbeiten
<4>  Eintrag hinzufügen
<5>  Eintrag loeschen
<6>  Anzahl Eintraege
<-1> Ende
1

Name: Amy Nummer: 123-4567
Name: Bob Nummer: 123-6780
Name: Hal Nummer: 789-1234
Name: Deb Nummer: 789-4457
Name: Zoe Nummer: 446-0210


---Telefonbuch-Applikation---
Treffen Sie Ihre Auswahl
<1>  Alle Eintraege anzeigen
<2>  Eintrag suchen
<3>  Eintrag bearbeiten
<4>  Eintrag hinzufügen
<5>  Eintrag loeschen
<6>  Anzahl Eintraege
<-1> Ende

Implementieren Sie in der Klasse Telefonbuch für "Eintrag suchen" die Methode eintragSuchen(). Verwenden Sie dazu die indexOf() Methode der Klasse Vector, um die eingebaute Suchmethode von Vector nutzen zu können.

Testen Sie das Programm. Die Ausgabe sieht dann ungefähr wie diese aus:

---Telefonbuch-Applikation---
Treffen Sie Ihre Auswahl
<1>  Alle Eintraege anzeigen
<2>  Eintrag suchen
<3>  Eintrag bearbeiten
<4>  Eintrag hinzufuegen
<5>  Eintrag loeschen
<6>  Anzahl Eintraege
<-1> Ende
2

+++Namen suchen+++
Zurueck zum Menue mit <M>
Namen eingeben -->
bob
Name: Bob Nummer: 123-6780

+++Namen suchen+++
Zurueck zum Menue mit <M>
Namen eingeben -->

Implementieren Sie in der Klasse Telefonbuch für "Eintrag bearbeiten" die Methode eintragBearbeiten(). Erzeugen Sie dazu ein neues Eintrag-Objekt mit dem eingegebenen Namen und übergeben Sie es der indexOf() Methode der Klasse Vector, um den Index des zu bearbeitenden Eintrags zu ermitteln. Verwenden Sie dann die setElementAt() Methode, um dem Telefonbuch-Objekt ein neues Eintrag-Objekt hinzufügen.

Testen Sie das Programm. Die Ausgabe sieht dann ungefähr wie diese aus:

---Telefonbuch-Applikation---
Treffen Sie Ihre Auswahl
<1>  Alle Eintraege anzeigen
<2>  Eintrag suchen
<3>  Eintrag bearbeiten
<4>  Eintrag hinzufuegen
<5>  Eintrag loeschen
<6>  Anzahl Eintraege
<-1> Ende
3

+++Eintrag bearbeiten+++
Zurueck zum Menue mit <M>
Namen eingeben -->
bob
Name: Bob Nummer: 123-6780
Neuer Name fuer --> Bob
Sam
Neue Telefonnummer -->
222-4444

Name: Amy Nummer: 123-4567
Name: Sam Nummer: 222-4444
Name: Hal Nummer: 789-1234
Name: Deb Nummer: 789-4457
Name: Zoe Nummer: 446-0210

+++Eintrag bearbeiten+++
Zurueck zum Menue mit <M>
Namen eingeben -->

Implementieren Sie in der Klasse Telefonbuch die verbleibenden Methoden. Verwenden Sie dazu die Methoden addElement(), removeElementAt() und size() der Klasse Vector.

Zurück zur Übersicht.


Aufgabe 3 — Einträge sortieren

Fügen Sie im parameterlosen Konstruktor der Telefonbuch-Klasse am Ende den folgenden Eintrag hinzu (dient nur für die anschließende Sortierung):

addElement( new Eintrag( "Abe", "123-4567") ) ;

Die Klasse Collections stellt eine statische Methode sort() zur Verfügung mit der ein Vector-Objekt sortiert werden kann.

public static void sort(List list, Comparator c)

Da Vector eine Subklasse von List ist, kann die Methode für Vector-Objekte eingesetzt werden. Als zweiten Parameter erwartet die Methode ein Objekt einer Klasse, die die Schnittstelle Comparator implementiert hat. Die Methode, die implementiert werden muss ist:

int compare(Object o1, Object o2)

Erstellen Sie eine Klasse MeinComparator und implementieren Sie die Methode compare(). Vergleichen Sie in der Methode den Namen zweier Eintrag-Objekte. Verwenden Sie dafür die Instanzmethode compareTo() der Klasse String. Der Aufruf der Methode in der Testklasse sieht dann folgendermaßen aus:

Collections.sort( meinVector, new MeinComparator() ) ;

Es ist sinnvoller die Sortierung über eine Methode zu realisieren. Implementieren Sie daher die Methode alleAnzeigenAsc(), die zuerst die statische Methode sort() der Klasse Collections und danach die Methode alleAnzeigen() aufruft. Ändern Sie den ersten Menüpunkt:

---Telefonbuch-Applikation---
Treffen Sie Ihre Auswahl
<1>  Alle Eintraege anzeigen (aufsteigend)

Testen Sie das Programm.

Zurück zur Übersicht.

Aufgabe 4 — Einträge absteigend sortieren

Erweitern Sie das Menü der Telefonbuch-Klasse um den Menüpunkt "Absteigend sortieren". Erstellen Sie eine weitere Klasse MeinComparatorDesc und implementieren Sie die compareTo()-Methode, so dass sie die Einträge absteigend sortiert ausgibt. Der Aufruf der Methode sort() der Klasse Collections erfolgt dann über eine Methode alleAnzeigenDesc()

Testen Sie das Programm. Die Ausgabe sieht dann ungefähr wie folgt aus:

---Telefonbuch2-Applikation---
Treffen Sie Ihre Auswahl
<1>  Alle Eintraege anzeigen (aufsteigend)
<2>  Eintrag suchen
<3>  Eintrag bearbeiten
<4>  Eintrag hinzufuegen
<5>  Eintrag loeschen
<6>  Anzahl Eintraege
<7>  Alle Eintraege anzeigen (absteigend)
<-1> Ende
1

+++Aufsteigend sortiert+++
Name: Abe Nummer: 123-4567
Name: Amy Nummer: 123-4567
Name: Bob Nummer: 123-6780
Name: Deb Nummer: 789-4457
Name: Hal Nummer: 789-1234
Name: Zoe Nummer: 446-0210


---Telefonbuch2-Applikation---
Treffen Sie Ihre Auswahl
<1>  Alle Eintraege anzeigen (aufsteigend)
<2>  Eintrag suchen
<3>  Eintrag bearbeiten
<4>  Eintrag hinzufuegen
<5>  Eintrag loeschen
<6>  Anzahl Eintraege
<7>  Alle Eintraege anzeigen (absteigend)
<-1> Ende
7

+++Absteigend sortiert+++
Name: Zoe Nummer: 446-0210
Name: Hal Nummer: 789-1234
Name: Deb Nummer: 789-4457
Name: Bob Nummer: 123-6780
Name: Amy Nummer: 123-4567
Name: Abe Nummer: 123-4567


---Telefonbuch2-Applikation---
Treffen Sie Ihre Auswahl
<1>  Alle Eintraege anzeigen
<2>  Eintrag suchen
<3>  Eintrag bearbeiten
<4>  Eintrag hinzufuegen
<5>  Eintrag loeschen
<6>  Anzahl Eintraege
<7>  Absteigend sortieren
<-1> Ende

Zurück zum Inhaltsverzeichnis.


Ende der Aufgaben