Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.

Ähnliche Präsentationen


Präsentation zum Thema: "PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen."—  Präsentation transkript:

1 PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen strukturierte Programmierung mit Schleifen und bedingten Anweisungen Methoden (auch als Funktionen) rekursive Methoden

2 PKJ 2005/2 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(2): Klassen Attribute und Methoden für Instanzen Zugriffsrechte Vererbung und Kompatibilität abstrakte Klassen Interfaces und Implementierung (statische) Klassenattribute und -methoden

3 PKJ 2005/3 Stefan Dissmann Große Strukturierungseinheiten Die ansprechbare Strukturierungseinheit in JAVA ist die Klasse

4 PKJ 2005/4 Stefan Dissmann Große Strukturierungseinheiten Die ansprechbare Strukturierungseinheit in JAVA ist die Klasse Bezug zum Betriebssystem: genau 1 public class je Datei

5 PKJ 2005/5 Stefan Dissmann Große Strukturierungseinheiten Die ansprechbare Strukturierungseinheit in JAVA-Programmen ist die Klasse Bezug zum Betriebssystem: genau 1 public class je Datei Liste.java public class Liste { … }

6 PKJ 2005/6 Stefan Dissmann Große Strukturierungseinheiten Die ansprechbare Strukturierungseinheit in JAVA-Programmen ist die Klasse Bezug zum Betriebssystem: genau 1 public class je Datei, da der JAVA-Compiler Klassen über Dateinamen findet Liste.java public class Liste { … }

7 PKJ 2005/7 Stefan Dissmann Große Strukturierungseinheiten Bis jetzt besteht also ein großes Projekt aus sehr vielen einzelnen Dateien mit JAVA-Klassen. Probleme: Finden von solchen Dateien Verbergen von solchen Dateien Zusammengehörigkeit von solchen Dateien Namenskonflikte

8 PKJ 2005/8 Stefan Dissmann Große Strukturierungseinheiten Bis jetzt besteht also ein großes Projekt aus sehr vielen einzelnen Dateien mit JAVA-Klassen. Probleme: Finden von solchen Dateien Verbergen von solchen Dateien Zusammengehörigkeit von solchen Dateien Namenskonflikte Lösung: Paket (als übergeordnete Struktur)

9 PKJ 2005/9 Stefan Dissmann Pakete Paket in JAVA entspricht Verzeichnis im Betriebssystem

10 PKJ 2005/10 Stefan Dissmann Pakete Paket in JAVA entspricht Verzeichnis im Betriebssystem alle Dateien (Klassen) eines Pakets werden in einem Verzeichnis abgelegt! Paket bildet eigenen Namensraum Paket dient nur der statischen Strukturierung

11 PKJ 2005/11 Stefan Dissmann Pakete Pakete werden implizit geschaffen: Verzeichnis anlegen JAVA-Dateien im Verzeichnis ablegen JAVA-Dateien dem Paket zuordnen

12 PKJ 2005/12 Stefan Dissmann Pakete Pakete werden implizit geschaffen: Verzeichnis anlegen JAVA-Dateien im Verzeichnis ablegen JAVA-Dateien dem Paket zuordnen Zuordnung einer JAVA-Datei zu einem Paket: package -Angabe in der ersten Zeile package paketname ;

13 PKJ 2005/13 Stefan Dissmann Pakete - Anlegen Beispiel: Liste.java public class Liste { … }

14 PKJ 2005/14 Stefan Dissmann Pakete - Anlegen Beispiel: Liste.java public class Liste { … } speicher

15 PKJ 2005/15 Stefan Dissmann Pakete - Anlegen Beispiel: Liste.java package speicher; public class Liste { … } speicher

16 PKJ 2005/16 Stefan Dissmann Pakete - Anlegen Liste.java package speicher; public class Liste { … } Menge.java package speicher; public class Menge { … } Map.java package speicher; public class Map { … } speicher

17 PKJ 2005/17 Stefan Dissmann Pakete - Anlegen Liste.java package speicher; public class Liste { … } Menge.java package speicher; public class Menge { … } Map.java package speicher; public class Map { … } speicher Zugriff möglich

18 PKJ 2005/18 Stefan Dissmann Klassen aus fremden Paketen nutzen Zwei Möglichkeiten: Paket-Pfad vor Namen angeben: speicher.Liste Namensraum erweitern: import speicher.Liste;

19 PKJ 2005/19 Stefan Dissmann Klassen aus fremden Paketen nutzen Zwei Möglichkeiten: Paket-Pfad vor Namen angeben: speicher.Liste Namensraum erweitern: import speicher.Liste; auch möglich: import speicher.*;

20 PKJ 2005/20 Stefan Dissmann Klassen aus fremden Paketen nutzen Zwei Möglichkeiten: Paket-Pfad vor Namen angeben: speicher.Liste Namensraum erweitern: import speicher.Liste; auch möglich: import speicher.*; oder auch: Kombination beider Möglichkeiten

21 PKJ 2005/21 Stefan Dissmann Pakete - Nutzen Liste.java package speicher; public class Liste { … } Menge.java package speicher; public class Menge { … } Map.java package speicher; public class Map { … } speicher Verwaltung.java package projekt; public class Verwaltung { … speicher.Liste l = new … … } projekt

22 PKJ 2005/22 Stefan Dissmann Pakete - Nutzen Liste.java package speicher; public class Liste { … } Menge.java package speicher; public class Menge { … } Map.java package speicher; public class Map { … } speicher Verwaltung.java package projekt; public class Verwaltung { … speicher.Liste l = new … … } projekt +

23 PKJ 2005/23 Stefan Dissmann Pakete - Nutzen Liste.java package speicher; public class Liste { … } Menge.java package speicher; public class Menge { … } Map.java package speicher; public class Map { … } speicher Verwaltung.java package projekt; import speicher.Liste; public class Verwaltung { … Liste l = new … … } projekt

24 PKJ 2005/24 Stefan Dissmann Pakete - Nutzen Liste.java package speicher; public class Liste { … } Menge.java package speicher; public class Menge { … } Map.java package speicher; public class Map { … } speicher Verwaltung.java package projekt; import speicher.Liste; public class Verwaltung { … Liste l = new … … } projekt +

25 PKJ 2005/25 Stefan Dissmann Pakete - Nutzen Liste.java package speicher; public class Liste { … } Menge.java package speicher; public class Menge { … } Map.java package speicher; public class Map { … } speicher Verwaltung.java package projekt; import speicher.*; public class Verwaltung { … Liste l = new … Menge m = new … … } projekt

26 PKJ 2005/26 Stefan Dissmann Pakete - Nutzen Liste.java package speicher; public class Liste { … } Menge.java package speicher; public class Menge { … } Map.java package speicher; public class Map { … } speicher Verwaltung.java package projekt; import speicher.*; public class Verwaltung { … Liste l = new … Menge m = new … … } projekt + +

27 PKJ 2005/27 Stefan Dissmann Unterpakete Anmerkung: Analog zu geschachtelten Verzeichnissen sind auch geschachtelte Pakete möglich: speicher

28 PKJ 2005/28 Stefan Dissmann Unterpakete Anmerkung: Analog zu geschachtelten Verzeichnissen sind auch geschachtelte Pakete möglich: speicher.neu speicher.alt aber: keine besondere Beziehung speicher neu alt

29 PKJ 2005/29 Stefan Dissmann Pakete als Sichtbarkeitsgrenzen Paket fasst Klassen zusammen Paket bildet Struktur im JAVA-Programm Paket erhält eigenen Sichtbarkeitsbereich neben: private, public und protected also auch: package aber: kein Schlüsselwort sondern: Standardeinstellung

30 PKJ 2005/30 Stefan Dissmann Sichtbarkeit package Liste.java package speicher; public class Liste { … int groesse; … } Menge.java package speicher; public class Menge { … } Map.java package speicher; public class Map { … } speicher

31 PKJ 2005/31 Stefan Dissmann Sichtbarkeit package Liste.java package speicher; public class Liste { … int groesse; … } Menge.java package speicher; public class Menge { … } Map.java package speicher; public class Map { … } speicher bedeutet: package

32 PKJ 2005/32 Stefan Dissmann Sichtbarkeit package Liste.java package speicher; public class Liste { … int groesse; … } Menge.java package speicher; public class Menge { … } Map.java package speicher; public class Map { … } speicher bedeutet: package

33 PKJ 2005/33 Stefan Dissmann Sichtbarkeitshierarchie BezeichnungBereich private nur die Klasse selbst package alle Klassen im eigenen Paket protected alle Klassen im eigenen Paket und alle erbenden Klassen (in anderen Paketen) public alle Klassen

34 PKJ 2005/34 Stefan Dissmann Sichtbarkeitshierarchie b a x y

35 PKJ 2005/35 Stefan Dissmann Sichtbarkeitshierarchie b a x y private

36 PKJ 2005/36 Stefan Dissmann Sichtbarkeitshierarchie b a x y package

37 PKJ 2005/37 Stefan Dissmann Sichtbarkeitshierarchie b a x y protected

38 PKJ 2005/38 Stefan Dissmann Sichtbarkeitshierarchie b a x y public

39 PKJ 2005/39 Stefan Dissmann Beispiel (DAP 1, ) package a; public class A { protected void m(A a) {} } class B extends A {} package b; import a.*; public class C extends A { public static void main (String[] args) { }

40 PKJ 2005/40 Stefan Dissmann Beispiel (DAP 1, ) package a; public class A { protected void m(A a) {} } class B extends A {} package b; import a.*; public class C extends A { public static void main (String[] args) { new A().m(new A()); }

41 PKJ 2005/41 Stefan Dissmann Beispiel (DAP 1, ) package a; public class A { protected void m(A a) {} } class B extends A {} package b; import a.*; public class C extends A { public static void main (String[] args) { new A().m(new A()); } m ist protected m für A in C nicht aufrufbar!

42 PKJ 2005/42 Stefan Dissmann Beispiel (DAP 1, ) package a; public class A { protected void m(A a) {} } class B extends A {} package b; import a.*; public class C extends A { public static void main (String[] args) { new C().m(new A()); }

43 PKJ 2005/43 Stefan Dissmann Beispiel (DAP 1, ) package a; public class A { protected void m(A a) {} } class B extends A {} package b; import a.*; public class C extends A { public static void main (String[] args) { new C().m(new A()); } m ist protected geerbt in C m für C in C aufrufbar!

44 PKJ 2005/44 Stefan Dissmann Beispiel (DAP 1, ) package a; public class A { protected void m(A a) {} } class B extends A {} package b; import a.*; public class C extends A { public static void main (String[] args) { new C().m(new C()); } C erbt von A C -Objekte können A -Objekte ersetzen!

45 PKJ 2005/45 Stefan Dissmann Beispiel (DAP 1, ) package a; public class A { protected void m(A a) {} } class B extends A {} package b; import a.*; public class C extends A { public static void main (String[] args) { new C().m(new B()); }

46 PKJ 2005/46 Stefan Dissmann Beispiel (DAP 1, ) package a; public class A { protected void m(A a) {} } class B extends A {} package b; import a.*; public class C extends A { public static void main (String[] args) { new C().m(new B()); } B ist nicht public B hat die Sichtbarkeit package !

47 PKJ 2005/47 Stefan Dissmann nicht-öffentliche Klassen In einer Datei sind mehr als eine Klasse möglich, aber nur als nicht-öffentliche Klassen: Die Sichtbarkeit bleibt auf das Paket beschränkt! Liste.java public class Liste { … } class Element { … }

48 PKJ 2005/48 Stefan Dissmann Was noch fehlt: innere Klassen lokale Klassen anonyme Klassen generische Klassen Exceptions Streams Threads Streams graphische Oberflächen (AWT, Swing, SWT) Persitance Flag-Interfaces objektorientiertes Programmieren

49 PKJ 2005/49 Stefan Dissmann Was noch fehlt: innere Klassen lokale Klassen anonyme Klassen generische Klassen Exceptions Streams Threads Streams graphische Oberflächen (AWT, Swing, SWT) Persitance Flag-Interfaces objektorientiertes Programmieren vielleicht im Sommersemester

50 PKJ 2005/50 Stefan Dissmann Ende!


Herunterladen ppt "PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen."

Ähnliche Präsentationen


Google-Anzeigen