Woche 14: Packages & Collections Framework
Denken Sie daran, sich über das Studierendenportal für die Klausur anzumelden, wenn Sie sie mitschreiben wollen. Melden Sie sich bei uns per E-Mail, falls Sie sich nicht über das Portal anmelden können.
Nach dieser Woche können Sie …
- Klassen in Packages anlegen
- Klassen aus anderen Packages benutzen
- erklären, wo Java nach Klassen sucht
- angeben, wie Klassen typischerweise an andere Personen weitergegeben werden
- Informationen über im JDK enthaltene Klassen finden
- begründen, warum im JDK enthaltene Datenstrukturen i. d. R. vorzuziehen sind
Sobald Sie ein etwas größeres Softwareprojekt angehen (z. B. eine Android-App), haben Sie schnell sehr viele Klassen, sodass es unübersichtlich werden kann. Man speichert dann typischerweise eng zusammenhängende Klassen in eigenen Ordner und ggf. Unterordnen. Um diese Klassen dann an anderen Stellen verwenden zu können, müssen Sie importiert werden. Außerdem ist es dadurch möglich, dass verschiedene Klassen den gleichen Namen haben, wenn Sie in verschiedenen Ordnern/Packages gespeichert sind. Wir haben das schon unbewusst benutzt, da es im Package java.util
(das im JDK enthalten ist) schon die Klassen List und LinkedList gibt.
Die bereits im JDK enthaltenen Klassen bieten für viele Standard-Aufgaben wie Listen und Hashsets schon fertige Klassen an, die sie nutzen sollten, um sich Zeit und Fehler zu ersparen. Da wir uns mit den dahinterliegenden Prinzipien in der Vorlesung beschäftigt haben, können Sie jetzt aber hoffentlich einfacher nachvollziehen, wann z. B. ein Hashset sinnvoller ist als eine verkettete List. Die Java-Dokumentation hilft Ihnen weiter, wenn Sie wissen wollen, welche eingebauten Packages und Klassen es gibt und wie sie funktionieren. Auch für Klassen-Sammlungen dritter, die Sie häufig als jar-Datei herunterladen können, gibt es meistens eine Dokumentation.
Falls Sie die Themen dieser Woche nochmal in der Literatur nachlesen wollen, können Sie sich die folgenden Abschnitte in Java ist auch eine Insel ansehen (grob – es reicht, wenn Sie mit den Selbsttests keine Probleme haben):
- Packages: 3.6.1–3.6.8, 6.2.7, 14.1.5
- Collections Framework: 17.1.1, 17.2.1, 17.2.3–4
- Dateien: 19.2
Vorlesung
Packages, Classpath & Java-Archive
- Nehmen Sie sich Ihren Code der Widget-Übungsaufgabe. Verschieben Sie die Widget-Klassen (inkl. StdDraw) in das Package
de.hhu.propra.widgets
, die List-Klasse in das Packagede.hhu.propra.datastructures
und dieApplication
-Klasse in das Packagede.hhu.propra.fancyapp
. Testen Sie, ob Ihr Code kompiliert. - zum Knobeln: Aufbauend auf der vorherigen Aufgabe: Können Sie die Sichtbarkeit der Klasse
StdDraw
weiter einschränken?
Standard Collections Framework & IO
- Schreiben Sie die
Layout
-Klasse der Widget-Sammlung so um, dass eine Listen-Klasse aus dem JDK benutzt wird. Löschen Sie die von uns vorgegebeneList
-Klasse. - Schreiben Sie den
Classifier
aus der Vorlesung so um, sodass nicht der komplette Code in der main-Methode steht, sondern in Methoden aufgeteilt ist. - zum Knobeln: Schreiben Sie den Code der Vokabeln-Übungsaufgabe so um, dass die Vokabeln nicht von der Standardeingabe eingelesen werden, sondern dem Programm als Argument ein Dateipfad (oder auch mehrere) übergeben wird und die Vokabeln zur Laufzeit des Programms aus diesen Dateien eingelesen werden.
Probeklausur
Statt eines Übungsblatts erhalten Sie diese Woche eine Probeklausur. Wir korrigieren Ihre Lösungen nicht, die Probeklausur wird aber nächste Woche im Tutorium besprochen. Außerdem wird esein Lösungsvideo geben, in dem wir auch darauf eingehen, welche Antworten wir in der Klausur (nicht) erwartet hätten; das Video finden Sie dann als Lösungsvorschlag im Downloadbereich für Übungsblätter.
Selbsttests
Die Inhalte der letzten Woche sind klausurrelevant. Damit Sie prüfen können, ob Sie die Inhalte hinreichend gut verstanden haben, gibt es auf den nächsten Seiten Selbsttests.
Da es zu diesem Stoff keine praktischen Übungsaufgaben mehr gibt, wird es in der Klausur auch keine Aufgaben geben, in denen Sie Methoden zu diesen Themen implementieren müssen. Es könnte aber Text- oder Codelückentext-Aufgaben zu diesen Themen geben. Wenn Sie die Selbsttestfragen beantworten können und wissen, warum welche Antwort richtig bzw. falsch ist, sind Sie gut auf die Fragen in der Klausur vorbereitet.
Joseph Weizenbaum war Informatiker und Gesellschaftskritiker. Er hat 1966 den Chatbot ELIZA entwickelt, der einer der ersten Chatbots war und ein Gespräch mit einem Psychologen simuliert. Dabei reagiert der Bot nur auf bestimmte Schlüsselwörter mit vordefinierten Antworten. Weizenbaum war erschrocken, wie viele Personen glaubten, mit einem echten Psychologen zu schreiben bzw. dass sie vom Computer verstanden werden. Daraufhin hat er angefangen, einen kritischen Blick darauf zu werfen, wie Computer unsere Gesellschaft verändern.