Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Lothur Stimpert Geändert vor über 10 Jahren
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, 11.2.05) 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, 11.2.05) 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, 11.2.05) 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, 11.2.05) 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, 11.2.05) 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, 11.2.05) 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, 11.2.05) 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, 11.2.05) 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!
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.