PROGRAMMIERAUFGABE 10.1 class Dict { // Maximale Größe eines Dict final static int MAXSIZE = 1000; // Variable Entry[] entries; // Array, in dem die Einträge gespeichert werden int count; // Anzahl der Einträge = Index des ersten freien Elements // Konstruktor Dict () { entries = new Entry[MAXSIZE]; count = 0; } int size () { // size() liefert die momentane Größe des aktuellen Dict. return count; } void addEntry (Entry e) { // addEntry(e) fügt den Eintrag e hinzu (sofern MAXSIZE noch nicht // erreicht wurde). Es wird nicht überprüft, ob der Eintrag e bereits // vorhanden ist; duplizierte Einträge sind möglich. if (count < MAXSIZE) { entries[count] = e; count++; } } int locateKey (String s) { // Falls mindestens ein Eintrag existiert, dessen key-Variable gleich // s ist, dann liefert locateKey(s) den Index eines dieser Einträge; // anderenfalls liefert locateKey -1. int i; for (i = 0; i < count; i++) { if (entries[i].key.equals(s)) { return i; } } return -1; } Entry findKey (String s) { // Falls mindestens ein Eintrag existiert, dessen key-Variable gleich // s ist, dann liefert findKey(s) einen dieser Einträge; anderenfalls // liefert findKey null. int i = locateKey(s); if (i >= 0) { return entries[i]; } else { return null; } } void deleteKeyOnce (String s) { // Falls mindestens ein Eintrag existiert, dessen key-Variable gleich // s ist, dann löscht deleteKeyOnce einen dieser Einträge (und zwar // genau denjenigen, der auch von findKey(s) geliefert würde); // anderenfalls passiert nichts. int i = locateKey(s); if (i >= 0) { if (i < count - 1) { entries[i] = entries[count - 1]; } count--; } return; } boolean containsKey (String s) { // Falls mindestens ein Eintrag existiert, dessen key-Variable gleich // s ist, dann liefert containsKey(s) true, anderenfalls false. return (locateKey(s) >= 0); } Dict selectKey (String s) { // selectKey(s) liefert ein neues Dict, das genau diejenigen Einträge // des aktuellen Dict enthält, deren key-Variable gleich s ist. int i; Dict d = new Dict(); for (i = 0; i < count; i++) { if (entries[i].key.equals(s)) { d.addEntry(entries[i]); } } return d; } } AUFGABE 10.2 Ausgabe: x = 3, y = 2 // x ist static (existiert nur einmal pro Klasse) x = 5, y = 6 // b und c sind Referenzen auf das gleiche Objekt x = 5, y = 6