Upload
declan
View
29
Download
4
Embed Size (px)
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()