Pakete - Institut für Geodäsie und Geoinformation der Universität Bonn

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