7. Pakete Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 29. November 2005 Einordnung im Kontext der Vorlesung 1. Einführung 10. Software-Qualität 2. Einfache Programme 11. Algorithmen und Datenstrukturen II 3. Kontrollstrukturen 12. Objektorientierung II 4. Objekt-Orientierung I 13. Komponenten 5. Algorithmen und Datenstrukturen I 14. Design 6. Interfaces 15. Die Java Klassenbibliothek I 7. Pakete 16. Die Java Klassenbibliothek II 8. Rekursion 17. Software-Kategorien 9. Fehler und Ausnahmen Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006 29.11.2005, Seite 2 Agenda Agenda Pakete Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006 29.11.2005, Seite 3 Pakete Paket = Sammlung zusammengehöriger Klassen (Bibliothek) Zweck • mehr Ordnung in Programme bringen • bessere Kontrolle der Zugriffsrechte (wer darf auf was zugreifen) • Vermeidung von Namenskonflikten Beispiele Paket enthaltene Klassen java.lang java.io java.awt java.util ... System, String, Integer, Character, Object, Math, ... File, InputStream, OutputStream, Reader, Writer, ... Button, CheckBox, Frame, Color, Cursor, Event, ... ArrayList, Hashtable, BitSet, Stack, Vector, Random, ... ... siehe: http://java.sun.com/j2se/1.4.2/docs/api/index.html Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006 29.11.2005, Seite 4 Pakete Anlegen von Paketen Datei Circle.java Datei Rectangle.java package graphics; package graphics; class Circle { ... } class Rectangle { ... } 1. Zeile der Datei Paket graphics enthält die Klassen Circle und Rectangle Circle Felder Methoden Rectangle Felder Methoden Paket graphics Wenn package-Zeile fehlt, gehören die Klassen zu einem namenlosem Standardpaket Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006 29.11.2005, Seite 5 Pakete Pakete als Sichtbarkeitsgrenzen Was in einem Paket deklariert ist, ist in anderen Paketen unsichtbar package one; package two; class C {...} class D { C obj; } class D {...} Compiler meldet einen Fehler! C ist hier unsichtbar gleicher Name stört nicht Zweck • In verschiedenen Paketen können gleiche Namen verwendet werden • Schutz vor (unabsichtlicher) Zerstörung Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006 29.11.2005, Seite 6 Pakete Export von Namen Namen können mit dem Zusatz public exportiert werden (sie sind dann in anderen Paketen sichtbar) package one; auch in anderen Paketen sichtbar public class C { int x; public int y; void p() {...} public void q() {...} C () {...} public C (int x, int y) {...} } nur in diesem Paket sichtbar class D {...} public-Felder und -Methoden werden nur dann exportiert, wenn die Klasse selbst public ist. Lokale Variablen und Parameter können nicht exportiert werden. Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006 29.11.2005, Seite 7 Pakete Import von Klassennamen Exportierte Klassennamen können in anderen Paketen importiert werden Durch gezielten Import der Klasse Durch Qualifikation mit dem Paketnamen package myPack; package myPack; import graphics.Circle; import one.C; class MyClass { graphics.Circle c1; java.awt.Circle c2; ... } class MyClass { Circle c; ... } Durch Import aller public-Klassen eines Pakets package myPack; import graphics.*; class MyClass { Circle c; Rectangle r; ... } Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006 29.11.2005, Seite 8 Pakete Pakete und Verzeichnisse Pakete werden auf Verzeichnisse abgebildet, Klassen auf Dateien Klasse C ⇒ Datei C.java Paket P ⇒ Verzeichnis P Samples P package P; class A {...} package P; class B {...} package P; class C {...} A.java B.java Paket P C.java Übersetzung und Ausführung mit dem JDK cd C:\Samples javac P/A.java java P/A java P.A beides möglich Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006 29.11.2005, Seite 9 Pakete Geschachtelte Pakete Pakete können zu größeren Paketen zusammengefasst werden samples package samples.graphics; public class Circle package samples.io; public class Input graphics Circle.java package samples.graphics; public class Rectangle graphics package samples.io; public class Output io samples Rectangle.java io Input.java Output.java Benutzung import samples.graphics.Circle; importiert die Klasse Circle import samples.graphics.* importiert alle public-Klassen aus samples.graphics import samples.*; importiert alle public-Klassen aus samples (nicht aus samples.graphics) samples.io.Output out; Qualifikation einer Klasse aus einem geschachtelten Paket Bernhard Humm: „Grundlagen der Programmierung I (Java)“. FH Darmstadt, WS 2005/2006 29.11.2005, Seite 10