13
Java Einführung Packages

Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

Embed Size (px)

Citation preview

Page 1: Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

Java EinführungPackages

Page 2: Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

2Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch

Inhalt dieser Einheit

• Packages (= Klassenbibliotheken)• Packages erstellen• Packages importieren• Packages verwenden• Standard Packages

Page 3: Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

3Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch

Code-Reuse

• Einbinden von bereits (selbst-/fremd) programmiertem Code

• Wiederverwendung von Klassen, mit oder ohne deren Implementierung zu kennen

Techniken:1. Vorhandenen Klassen (aus Packages) verwenden2. Vererbung (vorhandene Klassen erweitern und

spezialisieren)

Page 4: Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

4Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch

Packages• Verschiedene, funktional zusammengehörende Klassen

werden in Packages mit einem klaren Interface (public Klassen und Methoden) integriert.

• API (Application Program Interface): Gesamtheit der von zusammengehörenden Paketen definierte Schnittstellen

• Packages werden mit der • Java-Plattform ausgeliefert (Standard-Packages), • können selbst oder• von Dritten programmiert werden.

Page 5: Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

5Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch

Vorteile von Packages

Die Verwendung von Packages bringt folgende Vorteile:

• Systematische Ordnung bei vielen Klassen ("Name spaces")

• Leichter überschaubaren Programmcode

• Definition eines klaren public-Interfaces der Packages (API) meist mit Automatisch generierter Dokumentation (JavaDoc)

Page 6: Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

6Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch

Name spaces• Ermöglichen die Verwendung der gleichen Namen in

verschiedenen Packages.

• Bsp: Uni.Person und Verein.Person sind verschiedene Klassen

PersonPerson

Student

Spieler

Page 7: Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

7Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch

Packages erstellen

Alle Klassen die zu einem Package gehören, müssen: 1. In ein Verzeichnis (Ordner) mit dem Namen des Pakets

gespeichert werden.2. Mit package packageName beginnen.

Bsp: Datei mypackage/MyClass.javapackage mypackage;

public class MyClass {

...

}

Page 8: Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

8Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch

Packages verwenden• Packages müssen entweder ausdrücklich (explizit)

oder implizit importiert werden. Beispiele:• Import mit expliziter Importanweisung

import mypackage.*;MyClass m = new MyClass();

• Impliziter Importmypackage.MyClass m =

new mypackage.MyClass();

Page 9: Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

9Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch

Packages verwenden II

• Einbinden des gesamten Paketsimport java.util.*;

• Einbinden einzelner Klassen eines Paketsimport java.util.Date;

Page 10: Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

10Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch

Interface des eigenen Pakets

• Die Klassen und Methoden, die von außerhalb des Pakets verwendet werden sollen, müssen als publicdeklariert werden, da sie sonst nur innerhalb des Paketes sichtbar sind.

• Um Packages weltweit eindeutig zu benennen soll der Pfad als verkehrter Domain-Name des Klassenerzeugers gewählt werdenz.B. at.ac.wuwien.meinPaketdas dazugehörige Verzeichnis ist at/ac/wuwien/meinPaket/

Page 11: Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

11Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch

Java-Standard-Packages

• java.lang /*wird implizit immer importiert (keine import-Anweisung nötig), enthält z.B. Klasse String, Math,... */

• java.io //Ein/Ausgabe• java.util //nützliche Klassen (Datum, Random etc)

• java.net //für die Kommunikation über Netzwerke• java.awt /*Klassen für die Benutzerschnittstelle und

Graphikprogrammierung */

• Information bietet die Spezifikation der Java-API.

Page 12: Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

12Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch

Java-Standard-Packages II

• Das Package java.lang wird immer implizit importiert.• Verwendungsbeispiel:

System.out.println(String)

• System ist eine Klasse im Package java.lang

• out ist eine statische Variable in der Klasse System vom Typ PrintStream.

• In der Klasse PrintStream ist die Methode println(String)definiert.

• Unbedingt nachvollziehen auf: http://java.sun.com/j2se/1.4/docs/api/

Page 13: Java - Packages - Michael Hahslermichael.hahsler.net/JAVA/pdf/05_1Packages.pdf · Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch 12 Java-Standard-Packages II •

13Grundzüge der Programmierung - Hahsler, Guth, Kaukal, Klimesch

Lernkontrolle• Sie kennen die Möglichkeiten der Verwendung von

Packages,• die Problematik von Namenskonflikten.• Zerlegen Sie Ihr Programm zur Umwandlung

römischer Zahlen in Package und Programmcode und bringen Sie das Programm zum Laufen.