Set - Aufgaben
Aufgabe 1
Schreibe ein Programm, welches die Personen von vier Vereine auswertet.
- Pro Verein existiert ein
Set
mit allen Vereinsmitliedern (siehe Input). - Das Programm analysiert die Vereinsmitglieder und schreibt die folgenden Aussagen in die Konsole (siehe Beispiel-Ausgabe unten):
- Wie viele Personen machen min. in einem Verein mit: Anzahl: Namen
- Alle Personen, welche im Fussball und Tanz Verein sind: Anzahl: Namen
- Alle Personen, welche im Fussball sind und nicht im Tanz oder Schwimm Verein: Anzahl: Namen
- Die Namen der Personen müssen in alphabetischer Reihenfolge angezeigt werden.
- Ein eigenes Testing (wie in J4 Testing gelernt) soll umgesetzt werden.
Input
4 Sets
|
|
Ausgabe
Die Ausgabe soll vom Format her so aussehen
|
|
Achte auf Details wie, dass die Namen ohne Lücken aufgeführt werden ansonsten stimmt der Hash nicht. Die Ausgabe könnte beispielsweise so aussehen:
|
|
Ausgabe überprüfen
Wie könnt ihr die Ausgabe überprüfen?
Wir benützen dazu eine kleine Hilfsklasse OutputValidation
.
Die Klasse erlaubt es eure System.out.println()
Anweisungen mit OutputValidation.logAndPrint()
zu ersetzten.
Am Schluss des Programmes kann man mit OutputValidation.printControlHash()
den Hash-Wert der eigenen Ausgabe anzeigen, oder mit OutputValidation.verifyControlHash()
einen Hash-Wert zur Überprüfung mit eurer Ausgabe überreichen.
Ein Anwendungsbeispiel seht ihr unter OutputValidationUsage.
Der Hash für diese Aufgabe ist: -1421274666
Aufgabe 2
Wir programmieren eine eigene Set-Klasse MySet
, welche noch kein Hash-Code verwendet.
- Es dürfen keine Klassen aus dem Collection-Framework verwendet werden.
- Die Klasse muss das Interface
MySetInterfaceSimple
implementieren. - Die Klasse weiss nicht, wie viele Elemente man speichern muss. Sie muss die Grösse des Arrays dynamische anpassen.
- Die
toString()
derjava.lang.Object
Klasse soll von derMySet
so überschrieben werden, dass die Elemente kommasepariert ausgegeben werden. - Überprüfe deine Implemenation mit dem JUnitTest MySetTest
Input
Inferface MySetInterfaceSimple
|
|
Aufgabe 3 (Optional)
Wir Kopieren unsere MySet
Klasse zu der Klasse MyHashSet
und erweitern diese, damit sie Hash Funktionalität verwendet:
- Beim Hinzufügen von neuen Elementen wird deren Hash-Code berechnet und ebenfalls abgespeichert.
- Die Suche nach bestehenden Elementen wird anschliessend über den gespeicherten Hash-Code durchgeführt statt über die Elemente selbst.
- Du kannst deine Implemenation mit dem gleichen JUnitTest MySetTest überprüfen, da sich die neue Klasse gleich verhalten soll. Erstelle vom Test eine Kopie
MyHashSetTest
und ändereMySet
überall zuMyHahsSet
.