Institut für Kartographie und Geoinformation
Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe
Einführung in die
Programmierung mit Java
14. Vorlesung WS 2001/2002
Übersicht
• Pakete: Organisation von Projekten / Klassenbibliotheken
– Definition und Verwendung von Paketen
– Zugriffsrechte und –beschränkungen
• Das Schlüsselwort final
• Listen und Mengen (Collections)
– Iteratoren
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
2
Pakete (engl. Packages)
• Ein Paket stellt eine Klassenbibliothek mit einem Namen
dar.
• Pakete dienen zur Strukturierung von Programmen
oberhalb von Klassen.
• Jedes Paket bildet einen eigenen Namensraum
– Innerhalb eines Namensraumes dürfen keine gleichnamigen
Klassen existieren
– ergo: in unterschiedlichen Paketen dürfen identische Namen für
Klassen vergeben werden.
• Pakete bilden eigene Bereiche für den Zugriffsschutz
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
3
Struktur von Paketen
• Paket entspricht Verzeichnis (analog: Klasse Datei)
• Gleicher Name für Paket und Verzeichnis
• Unterverzeichnisse werden durch Punkt "." verbunden
– Beispiel: Paket java.io entspricht Verzeichnis java\io
• Ein Paket wird definiert, indem alle Dateien des Pakets
am Dateianfang mit der Deklaration des Paketnamens
versehen werden
– Syntax: package <Paketname>;
– Beispiel: package mein_eigenes_Paket;
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
4
Beispiel für Pakete: java.util
• im Java Developer Kit (JDK) vordefiniertes Paket;
beinhaltet u.a. Klassen für
– Container-Klassen wie Vector, List, Mengen etc.
– Arrays
– Datums- und Zeitberechnungen
• Paketname: java.util
Der vorangestellte
Verzeichnispfad wird über
die Umgebungsvariable
CLASSPATH festgelegt.
• befindet sich im Verzeichnis ...\java\util
• Erster Befehl in allen Quelltextdateien des Pakets:
package java.util;
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
5
Verwendung von Paketen
• Zugriff auf Klassen im selben Paket: problemlos ohne
besondere Kennzeichnung
• Zugriff auf Klassen in anderem Paket:
• Paketname vor Klassenname: java.util.LinkedList
oder
• import java.util.LinkedList bzw.
import java.util.*
und Zugriff über Klassennamen LinkedList
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
6
Das Default-Paket
• Alle Klassen in Verzeichnissen, die im Forté Explorer
unmittelbar verbunden sind, gehören zum sog.
Default-Paket
• hier sind weder package- noch import-Anweisungen
nötig
– In einer Klasse des Default-Pakets kann ohne besondere
Kennzeichnung auf alle anderen Klassen des Default-Pakets
zugegriffen werden (z.B. bei der Erzeugen von Objekten
mittels new)
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
7
Vordefinierte Pakete
• Alle zum Java Developer Kit (JDK) gehörenden Klassen
sind in Paketen untergebracht.
• In Java sind sehr viele nützliche Pakete im Sinne von
Standardbibliotheken vordefiniert z.B. für Listen,
Suchstrukturen, Benutzeroberflächen, Graphik, Ein- und
Ausgabe etc.
• Übersicht: Öffnen der Startdatei der JDK-Dokumentation
c:/Programme/jdk1.3.1/docs/api/index.html
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
8
Das Standard-Paket
• Import des sogenannten Standard-Pakets java.lang
nicht erforderlich
• dieses Paket enthält z.B. die Klassen
• String
• Math
• System
• Object
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
9
Zugriffsspezifikationen I
• Zugriffsspezifikation regeln welche Klassen, Attribute und
Methoden wo verwendet werden können.
• Schlüsselwörter public, protected, private
• wird keine Zugriffsspezifikation angegeben, gilt der
default-Modus friendly
• Differenziert für Klassen, Methoden, und Attribute
• Wichtiges Konzept der Objektorientierung:
Geheimnisprinzip: Verbergen von Details der
Implementierung, Zugriff nur über klar definierte
Schnittstellen
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
10
Zugriffsspezifikationen II
• public: Zugriff von allen Klassen
• friendly: Zugriff von Klassen im selben
Paket, Zugriff nicht von Unterklassen in
anderen Paketen
geheimer
• protected: Zugriff von Klassen im selben
Paket, auch Zugriff von Unterklassen in
anderen Paketen
• private: Zugriff nur innerhalb derselben
Klasse
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
11
Das Schlüsselwort final
• Variablen mit vorangestelltem final sind Konstanten,
d.h. sie dürfen nicht verändert werden
Beispiel: final double PI = 3.141529;
• Methoden mit vorangestelltem final dürfen nicht
überlagert werden (kein Polymorphismus, effizienter)
• Klassen mit vorangestelltem final dürfen keine
Unterklassen haben (kein Polymorphismus, effizienter)
Beispiel: public final class String .....
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
12
Listen und Mengen: vordefinierte Containerklassen
Einfache Container-Datenstrukturen
Assoziative Datenstrukturen
AbstractCollection
AbstractMap
keine Duplikate
Set
LinkedList
ArrayList
TreeSet
sortiert
Map
HashSet
TreeMap
HashMap
sortiert
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
13
Laufzeiten / Komplexität
Klasse
Einfügen/
Löschen
Suchen
Suchen mit Key
LinkedList/
ArrayList
const.
O(n)
TreeSet
O(log n)
O(log n)
HashSet
const.
const. (mittel)
TreeMap
O(log n)
O(log n)
HashMap
const.
const.(mittel)
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
14
Listen/Mengen: gemeinsame Methoden
• Hinzufügen: boolean add(Object o)
• Suchen: boolean contains(Object o)
• Holen: Object get(int index)
• Größe: int size()
• Löschen: boolean remove (Object o)
• Löschen der ganzen Liste/Menge: boolean clear()
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
15
Listen/Mengen: Iteratoren
• dienen zum sequentiellen Durchlaufen
• Aufruf der Methode iterator() liefert ein Iterator-Objekt
• Methoden von Iterator:
• boolean hasNext()
• Object next()
•
Beispiel:
LinkedList ll = new LinkedList();
// ... Liste mit Werten füllen
Iterator it = ll.iterator();
while(it.hasNext()) {
Object o = it.next();
System.out.println(o);
}
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
16
Ende der Vorlesung
• Vorlesung ist zu Ende, aber Java nicht abschließend
besprochen. Unbehandelte Konzepte:
– Schnittstellen (engl. Interfaces) u.a. für Mehrfachvererbung
– Geschachtelte Klassen, anonyme Klassen
– Nebenläufigkeit (quasi-Parallelverarbeitung) mittels Threads
– Grafikfähigkeiten von Java, Realisierung grafischer
Benutzeroberflächen
– Java innerhalb von WWW-Seiten: Applets
• Vorschlag: Betrachtung bestimmter Bereiche im
Rahmen einer Java-AG im Sommersemester 2002
– Termin wird am Schwarzen Brett ausgehängt
T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/02
17