Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

22
Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002

Transcript of Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Page 1: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Packages in Java

Vortrag:

Melanie Reichel und Anja Weiß

10.1.2002

Page 2: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Was sind packages? Wozu sind packages notwendig? Verwendung von packages Vordefinierte packages in Java Klassen- und Paketnamen Einbinden zusätzlicher Pakete Das public- Attribut Erstellen eigener Pakete Beispiel

Page 3: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Was sind packages? packages sind eine Möglichkeit, verwandte Klassen und

Schnittstellen zu gruppieren. Sie ermöglichen es, dass Gruppen von Klassen nur bei Bedarf

verfügbar sind. Sie beseitigen mögliche Namenskonflikte zwischen Klassen in

unterschiedlichen Gruppen von Klassen. Ein Paket enthält eine beliebige Anzahl von Klassen, die nach Sinn,

Verwendung oder auf der Grundlage der Vererbung zusammengefasst sind.

packages können auch andere Pakete enthalten und bilden damit eine Hierarchieform, die ähnlich der Vererbungshierarchie ist.

Jede Ebene stellt eine kleinere und spezifischere Gruppe von Klassen dar

Oberste Ebene heißt java.

Page 4: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Nächste Ebene kann z.B. io, net, util oder awt heißen. Letzte Ebene kann dann z.B. das package image enthalten. Um sich auf eine Klasse in einem Paket zu beziehen, muß man

alle Pakete angeben, in denen sich die Klasse befindet. z.B.: Die Klasse Color befindet sich in dem package awt. Dieses befindet sich im package java. Um Color zu verwenden, muß man folgende Notation verwenden: java.awt.Color. Die Klassenbibliotheken von JAVA befinden sich in dem Paket

java. Die Klassen in diesem Paket stehen in jeder Implementierung

von JAVA zur Verfügung. Dieses Paket enthält kleinere packages, die spezielle Teile

der Funktionalität von JAVA beinhalten, z.B. Dateiein- und Ausgaben.

Page 5: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Wozu sind packages notwendig? Zur Organisation und Verwaltung von Klassen in Einheiten , um nur

die Elemente zu verwenden, die für ein Programm benötigt werden. Sie reduzieren Namenskonflikte. Pakete dienen dazu, Klassen, Variablen und Methoden in

größerem Umfang zu schützen, als dies auf der Basis von Klassen möglich ist.

Sie lassen sich auch zu Identifikation verwenden.

Page 6: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Verwendung von packages Damit eine Klasse verwendet werden kann, muß angegeben werden,

in welchem package sie liegt. Dazu gibt es zwei unterschiedliche Möglichkeiten 1. - Die Klasse wird über ihren vollen Namen angesprochen. - Die Klasse oder Pakete müssen nicht importiert werden, um sie auf diese Art zu verwenden. - In den Programmtext wird z.B. folgende Zeile eingefügt: java.awt.Font f = new java.awt.Font()

- Diese Variante sollte nur dann verwendet werden, wenn eine Klasse in einem Programm nur ein- oder zweimal auftritt. 2. - Eine Klasse wird über den Befehl import importiert. - Man kann dabei genau eine Klasse oder ein komplettes Klassenpaket importieren.

Page 7: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

a) mit der folgenden Syntax wird genau eine Klasse importiert. import java.util.Vector ; b) Wenn man ein komplettes Klassenpaket importiert,

werden alle Klassen, die als public erklärt wurden importiert. Es wird also folgender Befehl verwendet:

import java.awt.* ; Das package java.lang wird bei jedem Compileraufruf automatisch importiert. Ein expliziter import davon ist niemals nötig. Eigene Klassen in Programmen, die nicht zu irgendeinem Paket gehören, werden in einem Standardpaket- das Default-Paket -platziert. die Quelldateien werden im aktuellen Verzeichnis abgelegt, dort kompiliert und automatisch eingebunden (ohne import Anweisung)

Page 8: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Compiler braucht nur ein Default- Paket zur Verfügung zu stellen, aber typischerweise hat jedes Verzeichnis die Rolle eines Default- Paketes

Es können also beliebig viele Default- Pakete angelegt werden, indem man einfach neues Unterverzeichnis anlegt und Quelldatei dort ablegt

Page 9: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Vordefinierte Pakete in JDK Der Umfang der Laufzeitbibliothek hat sich mit jeder neuen Version

erhöht JDK 1.0 8 Standardpakete JDK 1.1 22 Standardpakete JDK 1.2 über 50 Standardpakete JDK 1.3 über 70 Standardpakete

Page 10: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Paket Bedeutung

java.applet - Applet kann als Teil des Browsers arbeiten

- kann Eingaben des Benutzers entgegennehmen etc

java.awt - Grafikverarbeitung und Aufbau grafischer Schnittstellen

java.awt.color - unterschiedliche Systeme zur Beschreibung von Farben

java.awt.datatransfer - dient zur Kommunikation mit der Zwischenablage

java.awt.dnd - Drag&Drop Aktionen

java.awt.event - enthält Ereignismodell

java.awt.font - Schriften und einzelne Fonts

Page 11: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

java.awt.geom - unterstützt 2D- Geometrie

java.awt.im - zur Eingabe von Tasten- Sequenzen, die sich aus mehreren Tastenschlägen zusammensetzen

java.awt.image - Verwaltung von Bitmap- Bildern

java.awt.print - dient zum Drucken

java.beans - ermöglicht JavaBeans- Technologie

java.io - Ein- und Ausgabeklassen für Streams und Dateien

java.lang - Standard- Features von Java- Sonderklassen, die je einem primitiven Datentyp entsprechen

Page 12: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

java.math - Klassen für Zahlen extremer Größe

java.net - zur Durchführung von Netzoperationen z.B. URL‘s

java.rmi - dient zur Erstellung verteilter Java-zu-Java –Applikationen

java.security - ermöglicht Implementierung von Zertifikaten und digitalen Unterschriften in Java-Komponenten

java.sql - Verbindung von Java- Applikationen mit Datenbanken

java.text - Formatierung von Objekten wie z.B.: Zahlen↔ String

java.util - unterstützt z.B. mit Zufallszahlen, Systemeigenschaften

Page 13: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Neben den Standardpaketen gibt es eine Reihe von Standarderweiterungen, deren Paketname mit javax beginnt.

Sie sind nicht unbedingt Bestandteil eines jeden Java- Entwicklungssystems.

Sie stellen häufig gebrauchte Erweiterungen zur Verfügung, deren Umfang die reinen Kernbibliotheken um ein Vielfaches übertrifft.

Page 14: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

javax.accessibility - erweitert die Funktionalität der Benutzerschnittstellen eines Programms, dass diese von Technologien u. a. Spracherkennung verwendet werden kann

javax.swing -Grafische Benutzerschnittstellen - Swing- Komponenten könne automatisch Look and Feel einer Plattform annehmen

javax.swing.event - Ereignisse von Swing- Komponenten ausgelöst

javax.swing.undo - Unterstützung von Rückgängig- Kommandos

Page 15: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Klassen -und Paketnamen

Paketnamen bestehen aus mehreren Komponenten, die jeweils durch einen Punkt voneinander getrennt sind.

Jeder Teil des mehrstufigen Paketnamens bezeichnet ein Unterverzeichnis.

Nachdem man eine Klasse oder ein Paket importiert hat, kann man sich auf eine Klasse einfach dadurch beziehen, indem man den Namen ohne Paketidentifikation angibt.

AUSSER: Wenn mehrere Klassen desselben Namens in unterschiedlichen packages vorhanden sind.

In diesem Fall muss man einen Bezug zur betreffenden Klasse anhand des vollständigen Paketnamens einfügen.

Page 16: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Bsp.: importiert werden folgende beiden Pakete von unterschiedlichen Autoren

import joeclasses.*; import eleanorsclasses.*; Innerhalb beider Pakete gibt es die Klasse Name mit einer

jeweilig anderen Bedeutung. Wenn man folgendes eingibt, ist unklar, auf welche Klasse

Name sich bezogen werden soll: Name myName = new Name(„Susan“); Deshalb wird der vollständige Paketname eingefügt:

joeclasses.Name myName = new joeclasses.Name („Susan“);

um Dopelungen bei Paketnamen zu vermeiden, ist das Domain- Namen- System zu empfehlen, da Domain-Namen weltweit eindeutig sind

beim Paketnamen wird Domainname in umgekehrter Reihenfolge benutzt z.B. de.tfh-berlin

Unterhalb des Basispaketes können Unterpakete beliebig geschachtelt werden z.B. de.tfh-berlin.math3.dvg3

Page 17: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Einbinden zusätzlicher packages in der Praxis Verwendung von Paketen von Drittanbietern um die Klassenpfade so kurz wie möglich zu halten, ist es günstig

Pakete in ein gemeinsames Unterverzeichnis zu legen Vorgehensweise 1. anlegen eines Verzeichnisses z.B. H:\classes oder Verzeichnis de, ein Verzeichnis tfh-berlin in de etc. 2. abspeichern aller Pakete dies funktioniert nur wenn Anbieter ihre Klassendateien in Pakete ablegen wenn dies nicht geschehen ist, empfiehlt es sich die Klassen durch package- Anweisung Paketen zuzuordnen

Page 18: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

3. Classpath setzen

set CLASSPATH ==H:\classes

man muss diesen setzen damit Java

Klassen findet, denn ansonsten gibt

der Compiler eine Fehlermeldung aus

( die meisten Fehlermeldungen für nicht

ladbare Klassendateien werden durch

nicht vorhandene classpath- Variablen

erzeugt)

Page 19: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Das public- Attribut Klassen verfügen über Paketschutz, d.h eine Klasse steht auch

allen anderen Klassen im Paket zur Verfügung, aber außerhalb nicht zu sehen oder verfügbar

wenn Klassen auch außerhalb des betreffenden Paketes zur Verfügung stehen sollen, muss man sie mit öffentlichen Schutz versehen--- das Attribut public

wenn Klassen aus externen Paketen nicht public, bricht der Compiler die Übersetzung mit einer Fehlermeldung ab

bei import- Anweisung mit * werden lediglich öffentliche Klassen importiert

Warum soll Klasse verborgen bleiben?

damit Hilfsklassen und Verhalten zur Verfügung stehen, die ausschließlich für die Implementierung notwendig sind

Page 20: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

Erstellen eigener Pakete Um eine Klasse einem ganz bestimmten Paket zuzuordnen, muss

am Anfang des Quelltextes die package- Anweisung stehen. package paketname; Da der Compiler eingebundene Quelldateien, die noch nicht

übersetzt sind, während der Übersetzung einer anderen Klasse automatisch mitübersetzt, ist die Erstellung sehr einfach.

Bei Editplus folgt nach dem …javac.exe zunächst das Zielverzeichnis, dann der classpath und zum Schluß der sourcepath

z.B. …javac.exe –d H:/classes –classpath H:/classes –sourcepath H:/emma301

und hinter java.exe folgt nur der classpath

Page 21: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

zur Dokumentation der Pakete mit javadoc fügt man Ende hinzu

javadoc - . . . -classpath .\classes Namen der Pakete

javadoc -d docs -link "file://c:/jdk1.3.1/docs/api" -sourcepath .\src // Quellenpfad -classpath .\classes //Klassenpfad src\ApplicationEMMA301Paint.java // ausführende Datei (Quelle) emma301 emma301.comp //Pakete mit Klassen emma301.rect emma301.point emma301.mpoint emma301.utils

Page 22: Packages in Java Vortrag: Melanie Reichel und Anja Weiß 10.1.2002.

emma301

utils

rect

comp

mpoint

point

emma301 - AbstractGraphicalObject

- BasicStrokeChooser

- FontChooser

- GraphicalObject

- PaintChooser- PointChooser- EMMA301Paint- EMMA301PaintFRame

rect - Line - Oval - Rectangle- RectangularGraphicalObject

comp - Layer - Picture- CompsedGraphicalObject

mpoint - Polygon - Polyline - PunktWolke- MultiPointGraphicalObject

point - EMMA301Dot- EMMA301Point- EMMA301PointCircle- EMMA301PointCross- EMMÁ301PointGeneral- EMMA301PointSquare

- OnePoint

utils - EMMA301Utils