Packages Vortrag : Cornelia Hardt 23. November 1999 Einleitung Packages sind nützlich, um die Komplexität großer Programme in den Griff zu bekommen. Ein Package enthält eine Anzahl von Klassen, die irgendwie miteinander zusammenhängen. Beispielsweise enthält das Bibliothekspackages java.awt Methoden zum Bereiteitstellen von Schaltflächen und zum Zeichnen grafischer Bilder. So wie eine Klasse verwandte Daten und Methoden zusammenfaßt, faßt ein Package eine Gruppe von verwandter Klassen zusammen. Vereinbarungen Der Name eines Packages wird nach den selben Regeln wie Variablen-, Klassen- und Methodennamen vergeben. Vereinbarungsgemäß beginnt der Name eines Packages mit einem Kleinbuchstaben. Klassen, die ein Package bilden, stehen in einem eigenen Verzeichnis. Der Verzeichnisname sollte der selbe wie der Packagename sein. Der Packagename wird am Anfang aller Klassen in einer package-Anweisung festgelegt. Beispiel: Stream Sämtliche Klassen - writematrix, writeobject, readmatrix, readobject, readurl,testlinereader, copy, copyb, type, typeb - werden in ein package zusammengefaßt. Alle Klassen werden in dem Verzeichnis dvg2/ioprogramme gespeichert. Dann wird am Kopf jeder Klasse die Zeile : - package ioprogramme; ´eingefügt. Beispiel package ioprogramme; import java.io.*; public class ReadObject { public static void main (String [] args) throws IOException, ClassNotFoundException { File inFile = new File("Object.dat"); ... Programm zur Überprüfung ob es auch funktioniert: import ioprogramme.*; import java.io.*; public class test { public static void main (String [] args) throws IOException { //ioprogramme.type.main(args); type.main(args); } } Dieses Programm greift auf die main-Methode des Programmes type zu. Dazu benötigt es im Kopf die Anweisung import. packagename ; Es wird folgender Maßen aufgerufen werden: ...\dvg2>java test test.java Das Programm type hat die Funktion des lesens einer Datei. Beim obigen Aufruf wird der Programmtext des Programms test ausgegeben. Package und import Wenn eine andere Klasse eine Klasse aus einem Package verwenden möchte, benötigt sie in ihrem Kopf die importAnweisung. - import pName.Klassenname; Wenn eine Klasse alle Klassen innerhalb des Packages verwenden muß, kann eine Kurzdeklaration gemacht werden. -import pName.* ; Zusammenfassung Verwandte Klassen werden in einem Package zusammengefaßt. Ein Package-Name fängt mit einem Kleinbuchstaben an. Eine package-Anweisung im Kopf einer Klasse enthält den Namen des Packages, dem die Klasse angehört. Alle Klassen eines Packages stehen im selben Verzeichnis, aber in unterschiedlichen Dateien. Der Verzeichnisname sollte dem Package-Namen entsprechen. (--> Dateiname entspricht Klassenname) Einige Package des JDK java.applet java.awt java.awt.event java.awt.image java.io java.lang Enthält die Klasse Applet und drei Schnittstellen. Diese dienen als Schnittstellen zwischen einem Applet und dem Browser oder Appletviewer. Enthält die GUI-Klassen sowie Klassen zum Laden von Grafiken, Drucken und Ausgeben von grafischen Elementen. Behandlung von Ereignissen von AWT-Komponenten nach dem neuen Event-Modell. Klassen-und Schnittstellensammlung zur Bildbearbeitung Lesen und Schreiben von Daten. Die klassen dieses Packages werden implizit in jede JavaApplikation und in jedes Applet eingebunden. Enthalten sind die Klasse Object, die Wurzel aller Klassen ist, und Klassen zum Erstellen und Verwalten von Threads sowie die erweiterten Datentypen. java.math Zwei Klassen mit erweiterten Möglichkeiten zur Berechnung von Zahlen. Normalerweise berechnet man Zahlen mit Methoden aus java.lang.Math. java.text Bestimmung und Formatieren von Zahlen, Zahlen,Währungs- und Datumsformaten sowie Ermittlung von Textbegrenzungen. Enthält Tools zum Umwandeln von Zahlen-,Währungs- und Datumsformaten, zum Erstellen von Datenstrukturen und die Basisklassen zum Event-Handling. java.util Zugriffsrechte zu Attributen Attribut Wer hat Zugriff? public Alle Objekte private Nur das Objekt der Klasse in der das Attribute definiert ist protected Nur Objekte abgeleiteter Klassen und von Klassen des selben Packages Alle Objekte von Klassen die zum selben Package gehören Package Anderes Package Klasse none Abgeleitete Klasse protected private public Abgeleitete Nicht- Klasse abgeleitete Klasse Nicht-abgeleiteteKlasse Packages importieren set CLASSPATH=PATH1;PATH2;...PATHN; Im Programm: import dir1.dir2...dirn.classname; Es wird das erste Class-File PATH1\dir1\dir2\...\dirn\classname.class PATH2\dir1\dir2\...\dirn\classname.class ... PATHN\dir1\dir2\...\dirn\classname.class importiert das gefunden wird Packages compilieren Im Programm enthalten package dir1.dir2...dirn; ... class classname { Übersetzungskommando: javac –d PATHI classname.java Es wird das Classfile PATHI\dir1\dir2\...\dirn\classname.class erzeugt