220 likes | 340 Views
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.
E N D
IT IIWS 2005/2006 Peter Auer
Inhalt • Objektorientierte Programmierung (in Java) • David J. Barnes & Michael KöllingObjektorientierte Programmierung mit JavaEine praxisnahe Einführung mit BlueJPearson Studium, 2003ISBN 3-8273-7073-6. • Grundprinzipien der (objektorientierten) Programmierung • Algorithmen und Datenstrukturen
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.
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.
Basiskonzepte • Objekt (object) • Klasse (class) • Methode (method) • Parameter (parameter) • Datentyp (data type)
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).
Klassendefinitionen verstehen • Quelltext anschauen 1.0
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.
Notation für die Syntax 1 • programmteil1 ::=programmteil2programmteil3 … • programmteil1 besteht aus programmteil2, gefolgt von programmteil3, … • { programmteil4 } • programmteil4 wird beliebig oft wiederholt (auch 0-mal).
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{ …}
Notation für die Syntax 2 • „class“ … • Der Programmteil beginnt mit dem Wort „class“ gefolgt von … • ( programmteil5 | programmteil6 ) • Es folgt entweder programmteil5 oder programmteil6.
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.*;
Java-Syntax: ClassDeclaration • ClassDeclaration ::= „class“ Identifier„{“ { AttributeDeclaration } { ConstructorDeclaration } { MethodDeclaration } „}“
Java-Syntax: Comments • Comments ::= ( „//“ Textline | „/*“ Text „*/“ |DocComment ) • DocComment ::= „/**“ Text „*/“ • Bsp: • // der volle Name des Studierenden • /** * Trage einen Studenten in diesen Kurs ein. */
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();
Notation für die Syntax 3 • [ programmteil7 ] • programmteil7 ist optional, d.h. programmteil7 kann, aber muss nicht vorhanden sein.
Java-Syntax: ConstructorDeclaration • ConstructorDeclaration ::=Classname „(“ [ ParameterList ] „)“StatementBlock • ParameterList ::=Parameter { „,“ Parameter } • Parameter ::= Type Identifier • Bsp: • Laborkurs(String kursBezeichnung) { setBezeichnung(kursBezeichnung);}
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();}
Java-Syntax: Statement • Statement ::= ( StatementBlock |VariableDeclaration | Assignment |MethodCall „;“| IfStatement | WhileStatement | ReturnStatement ) • Assignment ::= Êxpresion „=“ Expression „;“ • ReturnStatement ::= „return“ Expression „;“
Java-Syntax: Expression • Expression ::= ( Constant | Identifier | [ Expression ] Operator Expression | „(“ Expression „)“ | „new“ ClassName „(“ ArgumentList „)“ | MethodCall ) • MethodCall ::= [ Expression „.“ ] Identifier „(“ [ ArgumentList ] „)“ • ArgumentList ::= Expression { „,“ Expression }
Beispiele • MethodCall (Statement) • studentenListe.add(neuerStudent); • Expression • studentenListe.size() • ("Laborkurs: " + bezeichnung) • new ArrayList()