IT2 – WS 2005/20061Nov 14, 2005 Visibility public: Sichtbar in allen Paketen protected: Sichtbar...
-
Upload
jobst-reuter -
Category
Documents
-
view
213 -
download
0
Transcript of IT2 – WS 2005/20061Nov 14, 2005 Visibility public: Sichtbar in allen Paketen protected: Sichtbar...
1Nov 14, 2005IT2 – WS 2005/2006
Visibility public: Sichtbar in allen Paketen
protected: Sichtbar innerhalb des Pakets und in den Unterklassen
(default, friendly): Sichtbar innerhalb des Pakets
private: Sichtbar nur innerhalb der Klasse
2Nov 14, 2005IT2 – WS 2005/2006
Pakete CompilationUnit ::=
[ „package“ Identifier ] { ImportStatement }ClassDeclaration
3Nov 14, 2005IT2 – WS 2005/2006
Java-Syntax Visibility ::= [ („public“ | „private“ | „protected“) ]
ClassDeclaration ::= [ „public“ ] „class“ Identifier„{“
{ AttributeDeclaration } { ConstructorDeclaration } { MethodDeclaration }
„}“
AttributeDeclaration ::=Visibility [„static“ ] [„final“ ] VariableDeclaration
ConstructorDeclaration ::=Visibility Classname „(“ [ ParameterList ] „)“
StatementBlock
MethodDeclaration ::=[„abstract“ ] Visibility [„static“ ] ( „void“ | Type ) Identifier„(“ [ ParameterList ] „)“
StatementBlock
4Nov 14, 2005IT2 – WS 2005/2006
Abstract classes ClassDeclaration ::=
[ „public“ ] [ „abstract“ ] „class“ Identifier [ „extends“ Identifier ]
„{“{ AttributeDeclaration } { ConstructorDeclaration } { MethodDeclaration }
„}“
Von abstrakten Klassen können keine (unmittelbaren) Objekte erzeugt werden.
Eine abstrakte Klasse gibt eine allgemeine Schnittstelle für ihre Unterklassen vor.
Von den Unterklassen können Objekte erzeugt werden. Eine abstrakte Klasse kann auch einen Teil der Implementierung vorgeben.
5Nov 14, 2005IT2 – WS 2005/2006
Interfaces InterfaceDeclaration ::=
„interface“ Identifier„{“
{ ConstantDefinition } { ConstructorDefinition } { MethodDefinition }
„}“
Interfaces sind spezielle abstrakte Klassen, die keinerlei Implementierung enthalten.
Sie definieren nur eine allgemeine Schnittstelle für ihre Unterklassen.
Alle Definitionen in einem Interface sind automatisch public.
6Nov 14, 2005IT2 – WS 2005/2006
Interfaces ConstantDefinition ::=
Type Identifier „=“ Expression „;“
ConstructorDefinition ::=Classname „(“ [ ParameterList ] „);“
MethodDefinition ::=( „void“ | Type ) Identifier „(“ [ ParameterList ] „);“
7Nov 14, 2005IT2 – WS 2005/2006
Interfaces Unterklassen von Interfaces werden nicht mit extends
sondern mit implements gekennzeichnet. Eine Klasse kann Unterklasse
• von nur einer anderen Klasse, • aber von beliebig vielen Interfaces sein.
ClassDeclaration ::= [ „public“ ] [ „abstract“ ] „class“ Identifier
[ „extends“ Identifier ] [ „implements“ Identifier { „,“ Identifier } ]
„{“{ AttributeDeclaration } { ConstructorDeclaration } { MethodDeclaration }
„}“
8Nov 14, 2005IT2 – WS 2005/2006
Gruppieren von Objekten in Sammlungen
Viele Anwendungen enthalten Sammlungen von Objekten:• Adressbücher• Bibliothekskatalog• Kalender• …
Auffinden von Elementen Die Anzahl der zu verwaltenden Elemente
verändert sich über die Zeit.• Elemente hinzufügen.• Elemente löschen.
9Nov 14, 2005IT2 – WS 2005/2006
Beispiel: Notizbuch
Notizen können gespeichert werden. Einzelne Notizen können angezeigt
werden. Notizen können gesucht werden. Notizen können gelöscht werden. Die Anzahl der Notizen ist nicht begrenzt. Die Anzahl der Notizen kann abgefragt
werden.
10Nov 14, 2005IT2 – WS 2005/2006
Verwenden Bibliotheksklassen
Sammlungen von brauchbaren Klassen. Wir brauchen nicht alles aufs Neue zu
entwickeln. Java nennt ihre Bibliotheken Pakete
(packages). Objekte zu gruppieren ist immer wieder
notwendig.• Das Paket java.util enthält Klassen, um dies
zu tun: z.B. Collection
11Nov 14, 2005IT2 – WS 2005/2006
Objektstrukturen mit Sammlungen
12Nov 14, 2005IT2 – WS 2005/2006
Ein drittes Element einfügen
13Nov 14, 2005IT2 – WS 2005/2006
Eigenschaften einer Sammlung Sie kann ihre Kapazität bei Bedarf
vergrößern. Sie führt Buch über die aktuelle Anzahl
der Elemente (size() accessor). Details, wie dieses implementiert ist, sind
verborgen (hidden).• Es reicht uns, wenn wir die Klasse schlicht
und einfach benutzen können.
14Nov 14, 2005IT2 – WS 2005/2006
Eine Sammlung durchlaufen
public void notizenAusgeben(){
for(Notiz note : notizen) { note.print(); }}
15Nov 14, 2005IT2 – WS 2005/2006
Bibliotheksklassen
Benutzen von Bibliotheksklassen Dokumentation lesen Dokumentation schreiben
1.0
16Nov 14, 2005IT2 – WS 2005/2006
Die Java-Bibliothek
Besteht aus tausenden von Klassen Zehntausende Methoden Viele nützliche Klassen machen das Leben
viel leichter Ein kompetenter Java-Programmierer
muss mit Bibliotheken arbeiten können.
17Nov 14, 2005IT2 – WS 2005/2006
Umgang mit der Bibliothek
Sie sollen: einige der wichtigsten Klassen der
Bibliothek namentlich kennen. wissen, wie Sie die anderen Klassen
anlesen können.
Wir müssen nur die Schnittstelle (interface) kennen, nicht die Implementierung.
18Nov 14, 2005IT2 – WS 2005/2006
Klassendokumentation lesen
Dokumentation der Java- Bibliothek in HTML format;
Lesen in einem Web Browser Class API: Application Programmers’
Interface Schnittstellen-Beschreibung aller
Bibliotheksklassen
19Nov 14, 2005IT2 – WS 2005/2006
Schnittstellen vs Implementierungen
Die Dokumentation enthält • die Schnittstelle (interface) der Klasse• den Namen der Klasse• eine allgemeine Beschreibung des Zwecks der
Klasse• eine Liste der Konstruktoren und Methoden der
Klasse• die Parameter und Ergebnistypen für jeden
Konstruktor und jede Methode• eine Beschreibung des Zwecks jedes
Konstruktors und jeder Methode
20Nov 14, 2005IT2 – WS 2005/2006
Schnittstellen vs Implementierungen Die Dokumentation enthält nicht
• private Datenfelder (die meisten Datenfelder sind private)
• private Methoden• die Rümpfe (Quelltext) jeder Methode• d.h. die Implementierung der Klasse
21Nov 14, 2005IT2 – WS 2005/2006
Benutzung von Bibliotheksklassen
Klassen der Bibliothek müssen mittels einer import-Anweisung importiert werden.• (Ausnahme: Klassen von java.lang).
Sie können wie Klassen vom aktuellen Projekt benutzt werden.