ClassDeclaration

Werbung
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
IT2 – WS 2005/2006
Nov 14, 2005
1
Pakete

CompilationUnit ::=
[ „package“ Identifier ]
{ ImportStatement }
ClassDeclaration
IT2 – WS 2005/2006
Nov 14, 2005
2
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
IT2 – WS 2005/2006
Nov 14, 2005
3
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.



IT2 – WS 2005/2006
Nov 14, 2005
4
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.
IT2 – WS 2005/2006
Nov 14, 2005
5
Interfaces
 ConstantDefinition ::=
Type Identifier „=“ Expression „;“
 ConstructorDefinition ::=
Classname „(“ [ ParameterList ] „);“
 MethodDefinition ::=
( „void“ | Type ) Identifier „(“ [ ParameterList ] „);“
IT2 – WS 2005/2006
Nov 14, 2005
6
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 }
„}“
IT2 – WS 2005/2006
Nov 14, 2005
7
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.
IT2 – WS 2005/2006
Nov 14, 2005
8
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.
IT2 – WS 2005/2006
Nov 14, 2005
9
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
IT2 – WS 2005/2006
Nov 14, 2005
10
Objektstrukturen mit Sammlungen
IT2 – WS 2005/2006
Nov 14, 2005
11
Ein drittes Element einfügen
IT2 – WS 2005/2006
Nov 14, 2005
12
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.
IT2 – WS 2005/2006
Nov 14, 2005
13
Eine Sammlung durchlaufen
public void notizenAusgeben()
{
for(Notiz note : notizen)
{
note.print();
}
}
IT2 – WS 2005/2006
Nov 14, 2005
14
Bibliotheksklassen
 Benutzen von Bibliotheksklassen
 Dokumentation lesen
 Dokumentation schreiben
IT2 – WS 2005/2006
Nov 14, 2005
15
1.0
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.
IT2 – WS 2005/2006
Nov 14, 2005
16
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.
IT2 – WS 2005/2006
Nov 14, 2005
17
Klassendokumentation lesen
 Dokumentation der Java- Bibliothek in
HTML format;
 Lesen in einem Web Browser
 Class API: Application Programmers’
Interface
 Schnittstellen-Beschreibung aller
Bibliotheksklassen
IT2 – WS 2005/2006
Nov 14, 2005
18
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
IT2 – WS 2005/2006
Nov 14, 2005
19
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
IT2 – WS 2005/2006
Nov 14, 2005
20
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.
IT2 – WS 2005/2006
Nov 14, 2005
21
Herunterladen