IT II WS 2005/2006

Preview:

DESCRIPTION

IT II WS 2005/2006. Peter Auer. Inhalt. Objektorientierte Programmierung (in Java) David J. Barnes & Michael Kölling Objektorientierte Programmierung mit Java Eine praxisnahe Einf üh rung mit BlueJ Pearson Studium, 2003 ISBN 3-8273-7073-6. - PowerPoint PPT Presentation

Citation preview

1Oct 3, 2005IT2 – WS 2005/2006

IT II

WS 2005/2006

Peter Auer

2Oct 3, 2005IT2 – WS 2005/2006

Inhalt

Objektorientierte Programmierung (in Java)• David J. Barnes & Michael Kölling

Objektorientierte Programmierung mit JavaEine praxisnahe Einführung mit BlueJPearson Studium, 2003ISBN 3-8273-7073-6.

Grundprinzipien der (objektorientierten) Programmierung

Algorithmen und Datenstrukturen

3Oct 3, 2005IT2 – WS 2005/2006

Objekte und Klassen

Objekte• repräsentieren ‘Dinge’ der realen Welt oder

eines Problembereichs.• Beispiel: „maxMayer ist zur itUE angemeldet.“

Klasse• beschreibt eine bestimmte Art von Objekten. • Beispiel: „Student” und „Laborkurs“• Objekte repräsentieren individuelle Instanzen

einer Klasse.• Von einer Klasse können mehrere Instanzen

(instances) erzeugt werden.

4Oct 3, 2005IT2 – WS 2005/2006

Methoden und Parameter

Objekte haben Operationen, die aufgerufen werden können (Java: Methoden).

Methoden können Parameter haben, durch die zusätzliche Information übertragen werden kann.

Parameter haben Typen, die angeben welche Art von Werten ein Parameter annehmen kann.

Methoden können einen Ergebniswert zurückliefern.

5Oct 3, 2005IT2 – WS 2005/2006

Demo mit BlueJ

6Oct 3, 2005IT2 – WS 2005/2006

Basiskonzepte

Objekt (object) Klasse (class) Methode (method) Parameter (parameter) Datentyp (data type)

7Oct 3, 2005IT2 – WS 2005/2006

Weitere Beobachtungen

Ein Objekt hat Attribute (attributes): Werte gehalten in Datenfelder.

Die Klasse definiert, welche Attribute ein Objekt besitzt, aber jedes Objekt hat seine eigenen Attributwerte (= Zustand des Objektes).

8Oct 3, 2005IT2 – WS 2005/2006

Klassendefinitionen verstehen

Quelltext anschauen

1.0

9Oct 3, 2005IT2 – WS 2005/2006

Notation von (Programmier-)Sprachen

Syntax• Wie sieht ein Programm aus, das der

Computer versteht?• Fehler in der Syntax sind die einfachere Art

von Programmierfehlern: Der Computer kann das Programm nicht ausführen.

Semantik• Was bewirkt das Programm?• Fehler in der Semantik sind oft schwieriger zu

finden: Der Computer versteht das Programm anders als es gemeint war.

10Oct 3, 2005IT2 – WS 2005/2006

Notation für die Syntax 1

programmteil1 ::=programmteil2programmteil3…

• programmteil1 besteht aus programmteil2, gefolgt von programmteil3, …

{ programmteil4 }• programmteil4 wird beliebig oft wiederholt

(auch 0-mal).

11Oct 3, 2005IT2 – WS 2005/2006

Vereinfachte Syntax von Java: CompilationUnit

CompilationUnit ::={ ImportStatement }ClassDeclaration

Eine CompilationUnit ist jeweils ein Java-File.

Bsp: Laborkurs.java

• import java.util.ArrayList;import java.util.Iterator;import java.util.List;

class Laborkurs{

…}

12Oct 3, 2005IT2 – WS 2005/2006

Notation für die Syntax 2

„class“ …• Der Programmteil beginnt mit dem Wort

„class“ gefolgt von …

( programmteil5 | programmteil6 ) • Es folgt entweder programmteil5 oder

programmteil6.

13Oct 3, 2005IT2 – WS 2005/2006

Java-Syntax: ImportStatement

ImportStatement ::=„import“ ( ClassName | PackageName „.*“ ) „;“

ClassName ::=( Identifier | PackageName „.“ Identifier )

PackageName ::=( Identifier | PackageName „.“ Identifier )

Identifier ist eine erlaubter Java-Name.

Bsp: • import java.util.*;

14Oct 3, 2005IT2 – WS 2005/2006

Java-Syntax: ClassDeclaration

ClassDeclaration ::=„class“ Identifier„{“

{ AttributeDeclaration } { ConstructorDeclaration } { MethodDeclaration }

„}“

15Oct 3, 2005IT2 – WS 2005/2006

Java-Syntax: Comments

Comments ::=( „//“ Textline |

„/*“ Text „*/“ |DocComment )

DocComment ::= „/**“ Text „*/“

Bsp:• // der volle Name des Studierenden• /**

* Trage einen Studenten in diesen Kurs ein. */

16Oct 3, 2005IT2 – WS 2005/2006

Java-Syntax: AttributeDeclaration

AttributeDeclaration ::= VariableDeclaration

VariableDeclaration ::=Type Identifier [ „=“ Expression ] „;“

Type ::= ( PrimitiveType | ClassName )

PrimitiveType ::= ( „int“| „double“ | „boolean“ | „char“| „long“ | „byte“ | „short“ | „float“)

Bsp:• int anzahl;• List studentenListe = new ArrayList();

17Oct 3, 2005IT2 – WS 2005/2006

Notation für die Syntax 3

[ programmteil7 ]• programmteil7 ist optional, d.h. programmteil7

kann, aber muss nicht vorhanden sein.

18Oct 3, 2005IT2 – WS 2005/2006

Java-Syntax: ConstructorDeclaration

ConstructorDeclaration ::=Classname „(“ [ ParameterList ] „)“

StatementBlock

ParameterList ::=Parameter { „,“ Parameter }

Parameter ::= Type Identifier

Bsp:• Laborkurs(String kursBezeichnung)

{setBezeichnung(kursBezeichnung);

}

19Oct 3, 2005IT2 – WS 2005/2006

Java-Syntax: MethodDeclaration

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

StatementBlock

StatementBlock ::= „{“ { Statement } „}“

Bsp:• void listeAusgeben()

{System.out.println("Laborkurs: " + bezeichnung);System.out.println("Teilnehmerliste:");…

}• int getAnzahlStudenten()

{return studentenListe.size();

}

20Oct 3, 2005IT2 – WS 2005/2006

Java-Syntax: Statement

Statement ::=( StatementBlock |

VariableDeclaration | Assignment |MethodCall „;“| IfStatement | WhileStatement | ReturnStatement )

Assignment ::= Êxpresion „=“ Expression „;“

ReturnStatement ::= „return“ Expression „;“

21Oct 3, 2005IT2 – WS 2005/2006

Java-Syntax: Expression

Expression ::=( Constant |

Identifier | [ Expression ] Operator Expression |

„(“ Expression „)“ |„new“ ClassName „(“ ArgumentList „)“ | MethodCall )

MethodCall ::= [ Expression „.“ ] Identifier „(“ [ ArgumentList ] „)“

ArgumentList ::= Expression { „,“ Expression }

22Oct 3, 2005IT2 – WS 2005/2006

Beispiele

MethodCall (Statement)• studentenListe.add(neuerStudent);

Expression• studentenListe.size()• ("Laborkurs: " + bezeichnung)• new ArrayList()

Recommended