IT2 – WS 2005/20061Nov 14, 2005 Visibility public: Sichtbar in allen Paketen protected: Sichtbar...

21
1 Nov 14, 2005 IT2 – 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

Transcript of IT2 – WS 2005/20061Nov 14, 2005 Visibility public: Sichtbar in allen Paketen protected: Sichtbar...

Page 1: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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

Page 2: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

2Nov 14, 2005IT2 – WS 2005/2006

Pakete CompilationUnit ::=

[ „package“ Identifier ] { ImportStatement }ClassDeclaration

Page 3: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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

Page 4: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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.

Page 5: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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.

Page 6: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

6Nov 14, 2005IT2 – WS 2005/2006

Interfaces ConstantDefinition ::=

Type Identifier „=“ Expression „;“

ConstructorDefinition ::=Classname „(“ [ ParameterList ] „);“

MethodDefinition ::=( „void“ | Type ) Identifier „(“ [ ParameterList ] „);“

Page 7: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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 }

„}“

Page 8: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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.

Page 9: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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.

Page 10: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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

Page 11: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

11Nov 14, 2005IT2 – WS 2005/2006

Objektstrukturen mit Sammlungen

Page 12: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

12Nov 14, 2005IT2 – WS 2005/2006

Ein drittes Element einfügen

Page 13: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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.

Page 14: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

14Nov 14, 2005IT2 – WS 2005/2006

Eine Sammlung durchlaufen

public void notizenAusgeben(){

for(Notiz note : notizen) { note.print(); }}

Page 15: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

15Nov 14, 2005IT2 – WS 2005/2006

Bibliotheksklassen

Benutzen von Bibliotheksklassen Dokumentation lesen Dokumentation schreiben

1.0

Page 16: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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.

Page 17: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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.

Page 18: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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

Page 19: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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

Page 20: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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

Page 21: IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,

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.