16
Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private, ...) Statische Methoden und Attribute Beispiel für vordefinierte Klassen: LinkedList

Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Embed Size (px)

Citation preview

Page 1: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Java-Kurs - 11. Übung• Besprechung der Hausaufgabe

• Strukturierung von Programmen: Pakete

• Zugriffsspezifikationen (public, private, ...)

• Statische Methoden und Attribute

• Beispiel für vordefinierte Klassen: LinkedList

Page 2: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Hausaufgabe 9• Implementieren Sie die drei Klassen Polygon, Dreieck und

Rechteck aus dem UML-Diagramm. Polygon soll eine Abstrakte Klasse sein.

• Erweitern Sie jede der drei Klassen um die Methode umfang(). Diese ist bei Polygon abstrakt.

• Erzeugen Sie ein Array, das Dreiecke und Rechtecke enthält. • Berechnen Sie die Summe der Umfänge aller Dreiecke und

Rechtecke im Array.

Dreieck Rechteck

Polygon

Page 3: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Pakete (Packages)• dienen zur Strukturierung von Programmen (oberhalb von

Klassen)

• weiterer Zweck: Eindeutigkeit von Klassen mit demselben Namen

• Paket entspricht Verzeichnis (analog: Klasse - Datei)

• Gleicher Name für Paket und Verzeichnis

• Bei Unterverzeichnissen mit Punkt "." verbunden

• Zugehörigkeit zu Paket: explizit durch Befehl package

• Beispiel

Page 4: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Beispiel für Paket: java.util

• In Java vordefiniertes Paket

• in Verzeichnis java/util

• Paketname: java.util

• Erster Befehl in allen Dateien des Pakets: package java.util;

Page 5: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Verwendung von Paketen

• Zugriff auf Klassen im selben Paket: problemlos

• Zugriff auf Klassen in anderem Paket:

a) Paketname vor Klassenname: java.util.LinkedListoder

b)import java.util.LinkedList bzw.import java.util.*und Zugriff über Klassennamen LinkedList

Page 6: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Default-Paket• alle Klassen in Verzeichnissen, die im Forte

Explorer unmittelbar verbunden sind, gehören zum Default Paket

• hier weder package- noch import-Befehl nötig

Page 7: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Vordefinierte Pakete• In Java sind sehr viele nützliche Pakete

vordefiniert (Bibliotheken), z.B. für Listen, Suchstrukturen, Benutzeroberflächen, Graphik, ...

• Übersicht: Öffnen der Datei c:/Programme/jdk1.3/docs/api/index.html

Page 8: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Standard-Paket• Import des Pakets java.lang nicht erforderlich

• dieses Paket enthält z.B. die Klassen

• String

• Math

• System

• Object

Page 9: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Zugriffsspezifikationen I• Welche Klassen, Attribute und Methoden können wo

verwendet werden?

• Schlüsselwörter public, protected, private

• Differenziert für Klassen, Methoden, und Attribute

• Wichtiges Konzept der Objektorientierung: Geheimnisprinzip: Verbergen von Details der Implementierung, Zugriff nur über klar definierte Schnittstellen

Page 10: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Zugriffsspezifikationen II• public: Zugriff von allen Klassen

• protected: Zugriff von Klassen im selben Paket, auch Zugriff von Unterklassen in anderen Paketen

• package (oder keine Angabe): Zugriff von Klassen im selben Paket, Zugriff nicht von Unterklassen in anderen Paketen

• private: Zugriff nur innerhalb derselben Klasse

geheimer

Page 11: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Statische Methoden• Bisher: Aufruf von Methoden nur für Objekte

• Oft Methode ohne Bezug zu Objekt erforderlich

• Beispiel: Berechnung der Quadratwurzel, Methode sqrt der Klasse Math: double d = Math.sqrt(23);

• Methode sqrt ist statisch, Deklaration: public static double sqrt(double a){...}

• Aufruf einer statischen Methode:Klassenname.Methodenname

Page 12: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Statische Attribute• Bisher: Attribute gehören zu Objekten; jedes erzeugte Objekt hat

eigenen Attributwert

• Oft Attributwert erforderlich, der Eigenschaft der Klasse ist (nicht des Objekts)

• Beispiel: Mitführen der Anzahl der bisher erzeugten Objekte der Klasse Dreieck

• statisches Attribut anzahl der Klasse Dreieck:class dreieck{ static double anzahl; ...}

• Alle Instanzen von Dreieck greifen auf denselben Wert Anzahl zu

Page 13: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Schlüsselwort final • Attribute mit vorangestelltem final sind Konstanten,

d.h. sie dürfen nicht verändert werden

• Methoden mit vorangestelltem final dürfen nicht überlagert werden (kein Polymorphismus, effizienter)

• Klassen mit vorangestelltem final dürfen keine Unterklassen haben (kein Polymorphismus, effizienter)Bsp: public final class String .....

Page 14: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Beispiel für vordefinierte Klassen: LinkedList

• Abstrakter Datentyp für Liste (vgl. Vorlesung "Diskrete Mathe")

• Elementtyp: Object

• Paket: java.util

• Schnittstelle:

• boolean add(Object o)

• void add(int index, Object element)

• Object get(int index)

• void clear()

• int size()

Page 15: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Typkonvertierung• Erforderlich, wenn Variable vom Typ einer Oberklasse ist,

aber auf Eigenschaften der Unterklasse zugegriffen werden soll (und tatsächlich Unterklasse vorliegt)

• Beispiel:Object o = ......;Dreieck d = (Dreieck) o;double u = d.Umfang();

• Vorsicht: Laufzeitfehler, wenn Konvertierung nicht gelingt

Page 16: Java-Kurs - 11. Übung Besprechung der Hausaufgabe Strukturierung von Programmen: Pakete Zugriffsspezifikationen (public, private,...) Statische Methoden

Hausaufgabe 10• Erzeugen Sie mindestens zehn verschiedene

Dreiecke (vgl. Hausaufgabe 9) und fügen Sie diese in eine LinkedList ein. Durchlaufen Sie die LinkedList und fügen Sie die Dreiecke, deren Umfang kleiner als ein Wert x ist, in eine neue LinkedList ein. Drucken Sie diese LinkedList aus (Der Wert x sollte so gewählt werden, dass diese Liste nicht leer ist).