PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben …...

61
http://www.nightofscience.de/ DBIS - SS2011 Grundlagen der Programmierung II 1

Transcript of PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben …...

Page 1: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

http://www.nightofscience.de/

DBIS - SS2011Grundlagen der Programmierung II1

Page 2: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Teil 2

2

Teil 2

Modul: Programmierung B-PRGGrundlagen der Programmierung II

Dr. Karsten [email protected]

Page 3: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Aus - und Rückblick

DBIS - SS2011Grundlagen der Programmierung II3

Page 4: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Hallo Welt!main :: IO () main = putStrLn "Hallo Welt!" PietHaskell

DBIS - SS2011Grundlagen der Programmierung II4

#!/usr/bin/pythonprint "Hallo ", print "Welt!"

public class hallowelt{

public static void main( String[] args ) {

System.out.println("Hallo Welt! "); }

}

~ 130 Hallo-Welt Programme unter: http://de.wikipedia.org/wiki/Liste_von_Hallo-Welt-Programmen/Programmiersprachen

Java

Python

Page 5: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

class MainClass{

public static void Main() {

System.Console.WriteLine("Hallo Welt!"); }

Hallo Welt!

C#

DBIS - SS2011

} }

Grundlagen der Programmierung II5

public class hallowelt{

public static void main( String[] args ) {

System.out.println("Hallo Welt! "); }

}

Java

Page 6: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Ziel

1. Unterschiede in den Programmiersprachen verstehen und auf zukünftige Wechsel der Programmiersprache vorbereitet sein

2. Programmieren lernen in Java (zumindest die

DBIS - SS2011

Grundlagen☺)

3. Spaß haben …

Grundlagen der Programmierung II6

Page 7: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Vergleich Java und Python (Typisierung)

JavaStatische Typisierung

int width = 20;

PythonDynamische Typisierung

width = 20

DBIS - SS2011

int width = 20;

int height = 5*9;

int summe = width * height;

String text1 = "hallo1";

String text2;

text2 = "hallo2";…

width = 20

height = 5*9

summe = width * height

text1 = 'hallo1'

text2 = "hallo2"

Grundlagen der Programmierung II7

Page 8: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Vergleich Java und Python (Strukturierung)

Python (Version 2.6)

Struktur durch Einrückenund Zeilenumbruch

Struktur durch Klammern und Semikolon

Java

DBIS - SS2011

if(a == 1):

if(b > 100):

print c

print d

print e

Grundlagen der Programmierung II8

if(a == 1) {

if(b > 100) {

System.out.println(c);

System.out.println(d); }

System.out.println(e);

}

… … ab Version 3: print (c)

Page 9: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Vergleich Java und Python (Verzweigungen)

Python

if expression:

block

[ elif expression:

if (<Bedingung_1>)

Anweisung_1;

[ else if (<Bedingung_2>)

Anweisung_2;]

Java

DBIS - SS2011

block

elif expression:

block

…]

[ else :

block]

Grundlagen der Programmierung II9

[ else

Anweisung_3;]

Statt einzelnen Anweisungen können auch durch Klammern begrenzte Blöcke verwendet werden:{ Anweisung_1; Anweisung_2; … }

Page 10: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Vergleich Java und Python (Schleifen)

Python

for ziel in sequenz:

[ else:

for (<Element>:<Kollektion>)

Anweisung;

for (< Init >;<Bedingung>;Anweisung)

Java

DBIS - SS2011

…]

while ziel in sequenz:

[ else:

…]

Grundlagen der Programmierung II10

for (< Init >;<Bedingung>;Anweisung)

Anweisung;

while (<Bedingung>) Anweisung;

do Anweisung; while (<Bedingung>);

Page 11: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Java - GeschichteUrsprung :„Green“-Project bei der Firma Sun Microsystems 1991

Entwicklung eines Systems mit folgenden Eigenschaften:

• hardwareunabhängig

• möglichst klein

DBIS - SS2011Grundlagen der Programmierung II11

• möglichst klein

Einsatzgebiet: Konsumgeräte, z.B. Umschalter für das Kabelfernsehen

basierend auf C++ (objektorientiert ) ohne dessen Schwierigkeiten

Name: zuerst OAK (Object Application Kernel), später Java

Durchbruch : Ende 1995, 1998 dann JAVA 2

Page 12: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Plattformunabhängigkeit von Java

Erinnerung : Übliche Übersetzungsvorgänge bei Programmiersprachen

• Compiler (bei Modula-2, C usw.):

MODULE p; VAR n,i:INTEGER; BEGIN FOR i:=1 TO n DO n:=n*n;

Compiler

00010110010 11001001001 00001110001 11111000001 10101010100 11001100011

Ausführung Ergebnis

DBIS - SS2011Grundlagen der Programmierung II12

• Interpreter (bei Basic, Lisp, Python usw.):

END; END p.

Programm (Quellcode)

11001100011 11001100111 11000111001

Maschinencode

10 INPUT n$ 20 FOR i=1 TO 10 30 PRINT “Hi”,n$

40 NEXT Anweisung Nr. i

Interpreterer 00010110010 11001001001

Maschinencode

Ausführung Ergebnis Nr. i

Page 13: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

class Dreieck extends GeoObj {

Java- Interpreter (i686-CPU)

Ergebnis

Plattformunabhängigkeit von Java

Vorgehensweise bei Java (Java Virtual Machine)

DBIS - SS2011Grundlagen der Programmierung II13

class Dreieck extends GeoObj { double seite,hoehe,alpha; Dreieck(double s, double h, double a) { this.seite=s; this.hoehe=h; this.alpha=a;} double berechneFlaeche() { return 0.5*seite*hoehe);} }

Java Quellcode

Java Compiler

Java Bytecode (plattform- unabhängig)

Java- Interpreter (SPARC)

Java- Interpreter (Power PC)

Ergebnis

Ergebnis

Page 14: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

class Dreieck extends GeoObj { double seite,hoehe,alpha; Dreieck(double s, double h, double a) { this.seite=s; this.hoehe=h; this.alpha=a; } double berechneFlaeche() { return 0.5*se ite*hoehe);} }

Java Quellcode

Java Compiler

Java Bytecode (plattform- unabhängig)

Java- Interpreter (i686-CPU)

Java- Interpreter (SPARC)

Java- Interpreter (Power PC)

Ergebnis

Ergebnis

DBIS - SS2011Grundlagen der Programmierung II14

unabhängig) (SPARC)

Ergebnis

Java Libraries

HalloWelt.java HalloWelt.class

javac HalloWelt.java java HalloWelt

„Hallo Welt“

Page 15: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Java Bytecode

javac hallowelt.java

javap –c hallowelt

DBIS - SS2011Grundlagen der Programmierung II15

Page 16: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Was ist Java?

Java =

• Programmiersprache (OO)

• Virtuelle Maschine

• Bibliotheken

Ergebnis

DBIS - SS2011Grundlagen der Programmierung II16

• Bibliotheken

class Dreieck extends GeoObj { double seite,hoehe,alpha; Dreieck(double s, double h, double a) { this.seite=s; this.hoehe=h; this.alpha=a;} double berechneFlaeche() { return 0.5*seite*hoehe);} }

Java Quellcode

Java Compiler

Java Bytecode (plattform- unabhängig)

Java- Interpreter (i686-CPU)

Java- Interpreter (SPARC)

Java- Interpreter (Power PC)

Ergebnis

Ergebnis

Page 17: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

JRE und JDK

Java Runtime Environment (JRE) – enthält die Java Virtual Machine und eine Programmier-schnittstelle (API), welche die Standard-Klassen bereitstellt.

Java Development Kit (JDK)

DBIS - SS2011

Java Development Kit (JDK) – enthält den Compiler zu Erstellen des Byte-Codes (und Programme weitere hilfreiche Programme zum Programmieren)

Grundlagen der Programmierung II17

Java Compiler JDK 6 update 25 und Virtuelle Maschine JRE:http://www.oracle.com/technetwork/java/javase/downloads/index.html

Page 18: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

DBIS - SS2011Grundlagen der Programmierung II18

Page 19: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Literatur zu Java• Java Tutorials: http://download.oracle.com/javase/tutorial/

• Bücher in der Bib. … unter D

• … online unter: http://scholar.google.de/

• Empfehlung zum Schmökern:

DBIS - SS2011Grundlagen der Programmierung II19

• Empfehlung zum Schmökern: „Thinking in Java 3“ von Bruce Eckel !!!

http://www.smart2help.com/e-books/tij-3rd-edition/TIJ3.htm

Page 20: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Pause

DBIS - SS2011Grundlagen der Programmierung II20

Page 21: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Programmieren/Arbeitsablauf allgemein

DBIS - SS2011Grundlagen der Programmierung II21

Page 22: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Wiederholung: Programmieren allgemein

Parameter / Konstante � Datentypen

Bedingungen / Verzweigungen

Schleifen / Rekursion

Methoden / Funktionen, Prozeduren

DBIS - SS2011

Methoden / Funktionen, Prozeduren

Kommentare

Grundlagen der Programmierung II22

Page 23: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Kontrollstrukturen in Java

• if

• switch

• while

• for

DBIS - SS2011Grundlagen der Programmierung II23

• for

Page 24: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Mehrfachauswahl (switch )

• Soll eine Variable auf mehrere Werte überprüft werden, dann kann die If -Anweisung unübersichtlich werden.

DBIS - SS2011Grundlagen der Programmierung II24

• Eine switch -Anweisung ist für solche Fälle besser geeignet.

Page 25: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Mehrfachauswahl (switch )int wahl = 3;

switch (wahl)

{

DBIS - SS2011Grundlagen der Programmierung II25

case 1: Anw1; [break;]

case 3: {Block3} [break;]

case 5: Anw5; [break;]

[default: . . . [break;]]

}

Page 26: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Mehrfachauswahl (switch )

• Die Variable wahl muss vom Typ– char

– byte

– short

– int

DBIS - SS2011Grundlagen der Programmierung II26

– int

• Nicht erlaubt sind:– long

– float

– double

– boolean

Page 27: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Unbestimmte Schleifen (while)

Nur wenn die Bedingung wahr ist, wird der Block ausgeführt:

while ( Bedingung)

{

Block

}

kopfgesteuert

DBIS - SS2011Grundlagen der Programmierung II27

}

Der Block wird auf jeden Fall einmal durchlaufen:do

{

Block

}

while ( Bedingung);

fußgesteuert

Page 28: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Bestimmte Schleifen (for )

Anzahl der Durchläufe kann vorher festgelegt werden.

for (<Init>;<Bedingung>;Anweisung)

Anweisung;

DBIS - SS2011Grundlagen der Programmierung II28

int i;for (i = 1; i <= 10;) {

System.out.println(i)i = i+1;

}

Page 29: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Dateinamen (Endung)

• Quellcode auf *.java

• Compilierter Code auf *.class

statt *.py in Pythonoder *.hs in Haskell

DBIS - SS2011Grundlagen der Programmierung II29

• case sensitiveJava unterscheidet zwischen Groß- und Kleinschreibung (auch im Quellcode)!

Java auf den Rechnern der RBIJava: /opt/rbi/bin/javaJavacompiler: /opt/rbi/bin/javac

Page 30: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Applikationen - Entwicklungsprozess Erster Schritt: Erstellen einer Klasse Hello (in einem Editor) mit dem Namen „ Hello.java “

class Hello {

public static void main(String[] args) {

System.out.println(“Hello Students!”);

}

DBIS - SS2011Grundlagen der Programmierung II30

}

}

Zweiter Schritt : Compilieren des Quellcodes Aufruf : „ javac Hello.java “Ergebnis : autom. Erzeugen des Bytecodes „Hello.class“

Dritter Schritt: Evtl. Ausführen des Programms�Aufruf : „ java Hello “ (Ausgeführt wird immer die main-Methode!)

Ausgabe: „ Hello Students! “

MUSS gleich sein!

Page 31: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Programmstruktur:Klassen, Methoden und Variablen

class ClassName {

type variablenName = anfangswert ;

rückgabeType methodenName( type parameter1, …){

}

}

DBIS - SS2011Grundlagen der Programmierung II31

Ein erstes Beispiel:

class Student {int semester; int getSemester() {

return semester;}

}

Page 32: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Klassen, Methoden und Variablen

Konstruktor:

Student() { … }

Student( int semester) { … }

DBIS - SS2011Grundlagen der Programmierung II32

Objekt student1 erzeugen:

Student student1 = new Student();

Methode aufrufen und Rückgabewert speichern:

int semanzahl = student1.getSemester();

Page 33: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Bibliotheken

DBIS - SS2011Grundlagen der Programmierung II33

Start!

Page 34: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

OO

34

Einführung in die Objektorientierung

siehe auch V8 aus PRG-1 WS 2010/2011

Page 35: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Objektorientierung

Das Objektmodell beschreibt „die Welt“ als eine Menge interagierender Objekte .

DBIS - SS2011Grundlagen der Programmierung II35

Page 36: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Klasse

Eine Klasse (Typ, Schablone) ist

• Klasse dient als Bauplan für Abbildung von realen Objekten („Schablone“) – eine Abstraktion auf die für die Programmierung wichtiger Eigenschaften.

• eine Realisierung eines abstrakten Datentyps (ADT).

DBIS - SS2011Grundlagen der Programmierung II36

• eine Realisierung eines abstrakten Datentyps (ADT).

• ein benutzerdefinierter Typ in einer objektorientierten Programmiersprache.

• eine zur Compilezeit des Programms notwendige Typspezifikation.

Page 37: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Objekt

Ein Objekt (Instanz) ist

• eine individuelle, benennbare reale oder abstrakte Einheit mit einer wohldefinierten Rolle.

• eine klar abgrenzbare Einheit mit Merkmalen(Zustand und Verhalten) und einer Identität .

DBIS - SS2011Grundlagen der Programmierung II37

(Zustand und Verhalten) und einer Identität .

• eine Ausprägung einer Klasse .

• eine gekapselte Datenstruktur , die zur Laufzeit des Programms Speicherplatz belegt und die nur über die Operationen der definierten Schnittstelle manipuliert werden kann.

Page 38: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Beispiele

Klasse Objekte (Instanzen)

PKW • mein Auto• dein Auto• das Auto mit dem Kennzeichen F-CB 2000

usw.

DBIS - SS2011Grundlagen der Programmierung II38

usw.

Geometrische Formen • ein Kreis mit dem Radius 5 und Mittelpunkt (42,17)• eine Pyramide mit Grundfläche 3x4 und Höhe 6

usw.

DVD • „Mr. and Mrs. Smith“-DVD• „King Kong“-DVD

Page 39: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Attribute und Zustand

Die Attribute eines Objekteslegen die Eigenschaften und Zustände des Objektes fest.

Der Zustand eines Objektesist die Gesamtheit der Attribute eines Objektes plus ihre momentanen Werte .

DBIS - SS2011Grundlagen der Programmierung II39

F-CB 2000

DA-XY 123

Typ

Farbe

km/h

PKW

Page 40: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

MethodenMethoden

• sind auf einem Objekt ausführbare Operationen.

• werden durch eintreffende Nachrichten ausgelöst.

• können den Objekt-Zustand verändern.

• werden innerhalb einer Klasse definiert.

DBIS - SS2011Grundlagen der Programmierung II40

Es gibt mehrere Arten von Methoden:Modifikation � ändert Zustand

Selektion � liest Zustand

Iteration � wiederholte Modifikation oder Selektion

Konstruktion � kreiert ein Objekt und initialisiert Zustand

Destruktion � löscht Zustand und zerstört ein Objekt

Page 41: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Verhalten eines Objektes

Das Verhalten eines Objektes• sind die Aktionen und Reaktionen des Objektes.

• wird durch die Methoden der Klasse des Objekts realisiert.

• wird durch den Aufruf der Methoden verursacht.

DBIS - SS2011Grundlagen der Programmierung II41

F-CB 2000

DA-XY 123

Typ Farbe km/h

PKW

beschleunigen()

bremsen()

VW Rot 60

BMW Gelb 100

Page 42: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Vererbung (Inheritance) in der OOP

Die Unterklasse erbt alle Merkmale der Oberklasse und istihr damit ähnlich . Sie kann die geerbten Attribute und Methoden unverändert benutzen oder neu definieren (überschreiben).Eine Unterklasse besitzt im Allgemeinen zusätzliche Attribute und Methoden. Sie ist eine Spezialisierung, Konkretisierung oder

DBIS - SS2011Grundlagen der Programmierung II42

Methoden. Sie ist eine Spezialisierung, Konkretisierung oder Erweiterung ihrer Oberklasse.Eine Unterklasse kann selbst wieder Oberklasse sein. Dadurch ergibt sich eine Baumstruktur , die so genannte Vererbungsstruktur oderKlassenhierarchie .Die Vererbung ist transitiv .

Page 43: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Beispiel für eine Klassenhierarchie (1)

Typ, Farbe, kmh beschleunigen() bremsen()

Kraftfahrzeug

DBIS - SS2011Grundlagen der Programmierung II43

Kraftfahrzeugist eine Klasse mit den drei Attributen Typ, Farbe und kmh und den beiden Methoden beschleunigen() und bremsen().

Es gibt aber auch „spezielle“ Kraftfahrzeuge, die ein zusätzliches, gemeinsames Merkmal haben.

Page 44: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Beispiel für eine Klassenhierarchie (2)

Typ, Farbe, kmh beschleunigen() bremsen()

Kraftfahrzeug

LKW anhängen()

DBIS - SS2011Grundlagen der Programmierung II44

LKW ist eine Unterklasse von Kraftfahrzeug. Sie erbt alle Eigenschaften von ihrer Oberklasse , hat aber die zusätzlicheMethode anhängen().

Es gibt auch Kraftfahrzeuge, die keine LKWs sind.

LKW anhängen()

Page 45: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Beispiel für eine Klassenhierarchie (3)

Typ, Farbe, kmh beschleunigen() bremsen()

Omnibus Stehplätze

Kraftfahrzeug

PKW LKW anhängen()

DBIS - SS2011Grundlagen der Programmierung II45

Omnibus, PKW und LKW sind jeweils Unterklassen der Klasse Kraftfahrzeug. LKW hat eine zusätzliche Methode, Omnibus ein zusätzliches Attribut. Die drei Unterklassen erben alle Merkmale der Oberklasse Kraftfahrzeug.

Aber es gibt es auch mehrere, verschiedene Arten von PKWs, die besondere Merkmale haben.

Page 46: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Beispiel für eine Klassenhierarchie (4)

Typ, Farbe, kmh beschleunigen() bremsen()

Omnibus Stehplätze

Kraftfahrzeug

PKW LKW anhängen()

DBIS - SS2011Grundlagen der Programmierung II46

Cabriolet und Limousine können zusätzliche Methoden bzw. Attribute haben. Beide erben alle Merkmale von PKW und damit auch von Kraftfahrzeug.

Limousine Cabriolet Verdeck öffnen()

Page 47: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Beispiel für eine Klassenhierarchie in UML

DBIS - SS2011Grundlagen der Programmierung II47

Page 48: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Mehrfach -Vererbung

Typ, Farbe, kmh beschleunigen() bremsen()

Fahrzeug

PKW LKW anhängen() Schiff

DBIS - SS2011Grundlagen der Programmierung II48

Amphibien- Fahrzeug

Mehrfach-Vererbung ist in Java nicht möglich… in Python schon!

Page 49: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Identität eines Objektes• Objekte sind mittels Referenz eindeutig identifizierbar .

• Objekte haben eine Identität und meistens einen oder mehrere Namen bzw. Referenzen .

• Der Zustand eines Objektes kann sich ändern, nichtseine Identität.

DBIS - SS2011Grundlagen der Programmierung II49

seine Identität.

• Gleicher Zustand (also der gleiche Wert) bedeutet nicht gleiche Identität! � Dies ist besonders bei Vergleichsoperationen zu beachten.

… das ist bei Haskell anders!

Page 50: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Identität eines Objektes

meinAuto Referenz 2

Referenz 1deinAuto keine Referenzen

DBIS - SS2011Grundlagen der Programmierung II50

Ein Objekt ohne Namen besitzt zwar eine Identität, ist aber nicht (mehr) erreichbar …

Objekt mit zwei Namenund zwei Referenzen Objekt ohne Namen

Page 51: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Lebenszeit von Objekten

Die Lebenszeit eines Objektes ist die Zeit zwischen

• der Kreierung des Objektes und• dem Löschen des Objektes (bzw. der Löschung der

letzten Referenz) mit anschließender Garbage Collection.

Garbage Collection

DBIS - SS2011Grundlagen der Programmierung II51

Garbage CollectionJava gibt automatisch den Speicher unbenutzter Objekte frei!Das expliziete setzen von Referenzen auf NULL unterstützt die Garbage Collection.Mit System.gc() kann man die Garbage Collection explizit anstoßen.

Page 52: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Beispiel JavaScript

DBIS - SS2011Grundlagen der Programmierung II52

Page 53: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

JavaScript = Java ???

• Sieht aus wie Java - ABER

• wird anders verarbeitet (reine Skript-Sprache),

• bietet nicht so viele Möglichkeiten wie Java, wird mit HTML vermischt und dient meist nur zur Erweiterung der Web-Seiten-Funktionalität

DBIS - SS2011Grundlagen der Programmierung II53

der Web-Seiten-Funktionalität

• dynamisch Typisiert

• läuft in einer Art Sandbox (Sandkasten) – kein direkter Dateizugriff oder Aufruf von Programmen

• … also JavaScript ≠ Java

Page 54: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Applets

Beispiel:

package simpleapplet;

import java.awt.Graphics;

DBIS - SS2011Grundlagen der Programmierung II54

class HelloWorld extends java.applet.Applet {

public void paint (Graphics g) {

g.drawString(“Hallo Welt!”, 10, 10);

}

}

Page 55: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Einbindung des Applet in HTML

<html >

<body >

<applet

codebase = "."

code = "simpleapplet.HelloWorld.class"

DBIS - SS2011Grundlagen der Programmierung II55

code = "simpleapplet.HelloWorld.class"

width = "400"

height = "300"

>

</ applet >

</ body >

</ html >

Page 56: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Ausführen des Applets

DBIS - SS2011Grundlagen der Programmierung II56

Page 57: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Arten von Java-Programmen

Applikationen :• „normale“ Programme (vergleichbar mit anderen Sprachen wie Modula-2, C)• eigenständig und ohne Sicherheitseinschränkungen• eine auszuführende Klasse muss eine main-Methode enthalten• Aufruf durch den Java-Interpreter java

Applets :

DBIS - SS2011Grundlagen der Programmierung II57

Applets :• Java-Programme für den Einsatz in einem WWW-Browser• Einbettung in eine HTML-Seite durch <applet> - oder <object> -Tag• keine main-Methode erforderlich; Erbt von java.applet.Applet –

Methoden: init(), start(), paint(), stop(), …• Sandbox-Prinzip / Sicherheitseinschränkungen, z.B. können keine

Programme gestartet und es kann nicht auf Dateien zugegriffen werden• nutzt JRE des Browsers

Server-Anwendungen :• Servlets (Java Server Pages), Enterprise Java Beans

Page 58: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Kommentare in Java

JAVA Erklärung Python

// Kommentar Alle Zeichen nach dem „//“ werden ignoriert.�für „normale“ einzeilige Kommentare.

# Kommentar

/* Kommentar über mehrere Zeilen

Alle Zeichen zwischen dem „/*“ und dem „*/“ werden ignoriert. � auskommentieren von Programmteilen.

""" Kommentarüber mehrere

In Java gibt es drei Möglichkeiten zur Kommentierung:

DBIS - SS2011Grundlagen der Programmierung II58

Zeilen */

� auskommentieren von Programmteilen.Die Schachtelung der „Kommentar-klammern“ ist nicht erlaubt.

mehrereZeilen """(ein String)

/*** javadoc-Kommentar * @since JDK1.0* /

Alle Zeichen zwischen dem „/**“ und dem „*/“ werden ignoriert. � für das javadoc -Programm des JDK.

Mit ihrer Hilfe wird eine einfache Online-Dokumentation erstellt.

pythondoc

Page 59: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Javadoc Beispiel/** * Returns an Image object that can then be painted on the screen. * The url argument must specify an absolute {@link URL} . The name* argument is a specifier that is relative to the url argument. * <p>* This method always returns immediately, whether or not the* image exists. When this applet attempts to draw the image on * the screen, the data will be loaded. The graphics primitives * that draw the image will incrementally paint on the screen. * * @param url an absolute URL giving the base location of the image

DBIS - SS2011

* @param url an absolute URL giving the base location of the image* @param name the location of the image, relative to the url argument* @return the image at the specified URL * @see Image */

public Image getImage(URL url, String name) { try

{ return getImage(new URL(url, name));

} catch (MalformedURLException e) { return null; }

}

Page 60: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Java - API - Dokumentation

http://download.oracle.com/javase/6/docs/api/

DBIS - SS2011Grundlagen der Programmierung II60

Page 61: PRG2 SS2011 Vorl1 update - Benutzer-Homepagesprg2/SS2011/folien/teil2/PRG... · 3. Spaß haben … 6 Grundlagen der ... • Interpreter (bei Basic, Lisp, Python usw.): END; END p.

Javadoc

Homepage: http://java.sun.com/j2se/javadoc/

Aufruf (unter dem „bin“-Ordner des JDK):javadoc [ options ] [ packagenames ] [ sourcefilenames ] [-subpackages pkg1:pkg2:... ] [ @argfiles ]

DBIS - SS2011Grundlagen der Programmierung II61

Tags @author; {@code}; {@docRoot}; @deprecated; @exception; {@inheritDoc}; {@link}; {@linkplain}; {@literal}; @param; @return; @see; @serial; @serialData; @serialField; @since; @throws; {@value}; @version