Programmieren I Java Packages Institut für Angewandte Informatik KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Java Packages – Programme strukturieren Mittels Paketen (engl: packages) können und die Klassen von unterschiedlichen Aufgaben strukturiert werden. In einem Paket kann eine Gruppe von thematisch zusammengehörigen Klassen zusammengefasst werden. Diese Klassen befinden sich dann (normalerweise) in einem gemeinsamen Verzeichnis. Der Name des Verzeichnisses ist gleich dem Paketnamen. Bildquelle: http://publicdomainvectors.org 2 W. Geiger, W. Süß, T. Schlachter, C. Schmitt Institut für Angewandte Informatik Pakete deklarieren Beispiel: package goodies; public class Chocolate { } Die Klasse, die in dieser Datei implementiert wird, gehört zum Paket goodies. Diese Zugehörigkeit wird durch die package–Anweisung (mit Schlüsselwort package) ausgedrückt. Verzeichnisstruktur: 3 W. Geiger, W. Süß, T. Schlachter, C. Schmitt Institut für Angewandte Informatik Pakete importieren (1) Wenn in einem anderen Paket nun eine Klasse dieses Pakets genutzt werden soll, kann vor dem Klassennamen der Name des Pakets angegeben werden, z.B. goodies.Chocolate. Alternativ kann der Compiler mit einer import-Anweisung auf das Paket der Klasse hingewiesen werden. Die Klasse kann dann einfach mit dem Klassennamen (d.h. ohne Angabe das Paketnamens) in der Datei referenziert werden: package treat; package goodies; public class Chocolate { import goodies.Chocolate; } class ChocolateBunny { Chocolate choc; // sonst goodies.Chocolate } 4 W. Geiger, W. Süß, T. Schlachter, C. Schmitt Institut für Angewandte Informatik Pakete importieren (2) Damit nicht alle genutzten Klassen eines Pakets einzeln aufgeführt werden müssen, lässt sich mit dem Stern (“*”) als einer Art Wildcard auf alle public-Klassen des Pakets hinweisen. Davon machen z.B. Programme mit grafischer Benutzeroberfläche häufig Gebrauch. Dort steht dann oft: import javax.swing.*; 5 W. Geiger, W. Süß, T. Schlachter, C. Schmitt Institut für Angewandte Informatik Paket-Hierarchien Pakete lassen sich in Hierarchien anordnen. (hauptpaket.unterpaket etc.). Die Pakethierarchie spiegelt sich dann auch in der Verzeichnisstruktur des Dateisystems wider. In einem Paket können mehrere Unterpakete liegen. Man beachte bei der import-Anweisung: Mit der Anweisung import hauptpaketname.*; werden nicht automatisch auch die Klassen der Unterpakete mit eingebunden. Die import-Anweisung bezieht sich nur auf ein (Hauptbzw. Unter-)Paket und schließt dessen Unterpakete nicht mit ein. 6 W. Geiger, W. Süß, T. Schlachter, C. Schmitt Institut für Angewandte Informatik Konvention für Paketnamen Paketnamen werden per Konvention komplett klein geschrieben, um eine gute Unterscheidbarkeit zu Klassennamen zu erreichen. Beispiele für Pakete in der API: java.io java.lang // wird automatisch importiert java.util java.util.concurrent … de.dhbwka.programmieren 7 W. Geiger, W. Süß, T. Schlachter, C. Schmitt Institut für Angewandte Informatik Vorschlag: Projekt-/Paket-Struktur für Übungsaufgaben Ein Projekt in der IDE für sämtliche Übungsaufgaben Pro Aufgabe ein Package Vorschlag: de.dhbwka.java.exercise.jeweilige_aufgabe steht so auch auf den Übungsblättern 8 W. Geiger, W. Süß, T. Schlachter, C. Schmitt Institut für Angewandte Informatik