7. Pakete Grundlagen der Programmierung 1 (Java)

Werbung
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
Herunterladen