Zum Hauptinhalt springen

Woche 14: Packages & Collections Framework

Klausuranmeldung

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.

Literatur

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

Freiwillige Zusatzaufgaben
  • 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 Package de.hhu.propra.datastructures und die Application-Klasse in das Package de.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

Freiwillige Zusatzaufgaben
  • 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 vorgegebene List-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.

Berühmte Persönlichkeiten der Informatik

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.

Video über Weizenbaum

Eliza: Is something troubling you?; You: Men are all alike.; Eliza: What is the connection, do you suppose?; You: They’re always bugging us about something or other.; Eliza: Can you think of a specific example?; You: Well, my boyfriend made me come here.; Eliza: Is it import to you that your boyfriend made you come here?; You: He says I’m depressed much of the time.; Eliza: I am sorry to hear that you are depressed.; You: It’s true. I am unhappy.; Eliza: Can you explain what made you unhappy?

Foto von Weizenbaum

Foto: Ulrich Hansen, Germany (Journalist), Joseph Weizenbaum, CC BY-SA 3.0