Dienstag, 17. Mai 2011
Aufgaben zu Collections in Java (POS1: 2A, 2C)
Vorarbeiten
Beispielprojekt zu Java-Collections, Import von Projekten in Eclipse
Die Datei java-collections_1_1.zip enthält ein Eclipse-Projekt mit einem Beispiel zur Verwendung der Java-Collection-API.
Im Package
Das Package
Im folgenden der Ausschnitt mit dem
Im Paket
Im
Die Datei java-collections_1_1.zip kann nach dem Download direkt in Eclipse importiert werden:
Erweiterung
Erweitern Sie das Projekt so, dass die Worthäufigkeiten in Dateien ermittelt werden können.
Aufruf:
Es sollen also keine, eine (
Wird mehr als eine Datei angegeben, so sollen für jede Datei die häufigsten 10 Worte ausgegeben werden (Ausgabe Dateiname, dann die 10 häufigsten Worte) und zum Schluss die Gesamthäufigkeiten aller Worte in allen Dateien.
Nennen Sie das Projekt
- Arbeiten Sie die Beispiele im Buch Kapitel 12 durch. Sie finden den Sourcecode dazu unter
/home/teachers/hp/public/pos1-2/kap12
(unter der Linux-Umgebung!). - Machen Sie die Übung 12.8.
Beispielprojekt zu Java-Collections, Import von Projekten in Eclipse
Die Datei java-collections_1_1.zip enthält ein Eclipse-Projekt mit einem Beispiel zur Verwendung der Java-Collection-API.
Im Package
simple
finden Sie ein Beispiel zur Ermittlung der Worthäufigkeiten wobei im main
nur ein Aufruf mit fixen Testdaten (Array) vorhanden ist.Das Package
step
1 zeigt die Vorarbeiten zu dem Programm hauf mit einer eigenen Datenstruktur Data
, in der ein Wort und die Häufigkeit gespeichert wird. Zusätzlich implementiert Data
das Interface Comparable
um eine natürliche Sortierung nach dem Wort zu ermöglichen. Das Interface Comparator
wird implementiert, um nach Häufigkeiten zu sortieren. Um auch nach Häufigkeiten absteigend zu sortieren, enthält die Datei Data.java
noch eine Klasse DataHaufUmgekehrt
, welche ebenfalls Comparator
implementiert.Im folgenden der Ausschnitt mit dem
main
, welches zeigt, wie man sortiert:public static void main(String[] args) { Data[] worte = new Data[] { new Data("das", 12), new Data("Haus", 3), new Data("Text", 23), new Data("Punkt", 2), new Data("Testdaten", 12) }; System.out.println("unsortiert"); for (Data d : worte) { System.out.println(" " + d); } Arrays.sort(worte); System.out.println("sortiert nach Wort"); for (Data d : worte) { System.out.println(" " + d); } Arrays.sort(worte, new Data()); System.out.println("sortiert nach Anzahl"); for (Data d : worte) { System.out.println(" " + d); } Arrays.sort(worte, new DataHaufUmgekehrt()); System.out.println("sortiert nach Anzahl absteigend"); for (Data d : worte) { System.out.println(" " + d); } }
Im Paket
step2
wird dann das Beispiel ausgebaut, sodass in der Klasse Hauf
zwei Varianten von Maps zum Speichern der Worthäufigkeiten verwendet werden. Eine HashMap
und eine TreeMap
. Für die HashMap
muss die Klasse Data
zusätzlich noch die Methoden equals()
und hashCode()
implementieren (überschreiben).Im
main
von Hauf
werden dann Worte aus der Standardeingabe gelesen und in den zwei Maps gespeichert.Die Datei java-collections_1_1.zip kann nach dem Download direkt in Eclipse importiert werden:
Man wählt dann die Datei aus:
Man erhält dann folgendes Projekt:
Erweiterung
Erweitern Sie das Projekt so, dass die Worthäufigkeiten in Dateien ermittelt werden können.
Aufruf:
java Hauf [-h] [-o ausgabe] files...
Es sollen also keine, eine (
stdin
) oder mehrere Dateien verarbeitet werden können. Optional erfolgt die Ausgabe in eine Datei (Option -o
). -h
soll eine kurze Hilfe ausgeben.Wird mehr als eine Datei angegeben, so sollen für jede Datei die häufigsten 10 Worte ausgegeben werden (Ausgabe Dateiname, dann die 10 häufigsten Worte) und zum Schluss die Gesamthäufigkeiten aller Worte in allen Dateien.
Nennen Sie das Projekt
collectionhauf
(klasse-name-collectionhauf
).Mittwoch, 4. Mai 2011
Aufgabe: Interfaces (POS1: 2A, 2C)
Aufgabe 1:
Implementieren Sie folgendes Interface, sodass Sie Speicher-Objekte für beliebig viele
Ändern Sie das Interface so, dass beliebige Objekte verwendet werden können. Nennen Sie das Interface
Implementieren Sie folgendes Interface, sodass Sie Speicher-Objekte für beliebig viele
int
-Werte haben können. Schreiben Sie ein passendes Testprogramm./** * Container für int-Werte. * * @author Harald R. Haberstroh (hp) * */ public interface IntContainerI { /** * Aufnehmen eines neuen Elements. * * @param element * neues Element, das aufgenommen werden muss (hinten) */ public void add(int element); /** * Liefern eines Elements. * * @param index * gesuchtes Element * @return Element an dieser Stelle */ public int get(int index); /** * Ganzen Container als Array. * * @return liefert alle gespeicherten Elemente als Array */ public int[] getArray(); /** * Ändern eines Elements. * * @param index * Indes des Elements, das geändert werden soll * @param value * neuer Wert */ public void set(int index, int value); /** * Anzahl der gespeicherten Elemente liefern (Größe) * * @return Größe des Containers (Anzahl der Elemente). */ public int size(); }Aufgabe 2:
Ändern Sie das Interface so, dass beliebige Objekte verwendet werden können. Nennen Sie das Interface
ContainerI
. Schreiben Sie eine Klasse, die das Interface implementiert und programmieren Sie passende Tests, um die neue Klasse zu testen.Abonnieren Posts [Atom]