Set - Aufgaben
Aufgabe 1
Schreibe ein Programm, welches die Personen von vier Vereine auswertet.
- Pro Verein existiert ein
Setmit 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
MySetInterfaceSimpleimplementieren. - Die Klasse weiss nicht, wie viele Elemente man speichern muss. Sie muss die Grösse des Arrays dynamische anpassen.
- Die
toString()derjava.lang.ObjectKlasse soll von derMySetso ü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
MyHashSetTestund ändereMySetüberall zuMyHahsSet.