36
1 JAVA und OOP Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken und Informationssysteme (FB 12)

JAVA und OOP - prg2/SS2009/folien/... · JAVA und OOP Modul: Programmierung B-PRG ... 10 INPUT n$ 20 FOR i=1 TO 10 ... Vererbung (Inheritance) in der OOP

Embed Size (px)

Citation preview

1

JAVA und OOP

Modul: Programmierung B-PRGGrundlagen der Programmierung II

Professur für Datenbanken und Informationssysteme (FB 12)

DBIS - SS2009Grundlagen der Programmierung II2

Java 2 - Geschichte

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

Entwicklung eines Systems mit folgenden Eigenschaften:

• hardwareunabhängig

• 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

DBIS - SS2009Grundlagen der Programmierung II3

Plattformunabhängigkeit von Java

Erinnerung: Übliche Übersetzungsvorgänge bei Programmiersprachen

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

• Interpreter (bei Basic, Lisp usw.):

MODULE p;

VAR n,i:INTEGER;

BEGIN

FOR i:=1 TO n DO

n:=n*n;

END;

END p.

Programm (Quellcode)

Compiler

00010110010

11001001001

00001110001

11111000001

10101010100

11001100011

11001100111

11000111001

Maschinencode

Ausführung Ergebnis

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

DBIS - SS2009Grundlagen der Programmierung II4

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

Ergebnis

Java

Libraries

Plattformunabhängigkeit von Java

Vorgehensweise bei Java (Java Virtual Machine)

DBIS - SS2009Grundlagen der Programmierung II5

Dateinamen (Endung)

• Quellcode auf *.java

• Compilierter Code auf *.class

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

DBIS - SS2009Grundlagen der Programmierung II6

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

Ergebnis

Java

Libraries

HalloWelt.java HalloWelt.class

javac HalloWelt.java java HalloWelt

„Hallo Welt“

DBIS - SS2009Grundlagen der Programmierung II7

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!”);

}

}

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!“

DBIS - SS2009Grundlagen der Programmierung II8

Kommentare in Java

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

/* Kommentar über mehrere Zeilen */

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

Die Schachtelung der „Kommentar-klammern“ ist nicht erlaubt.

/*** 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.

In Java gibt es drei Möglichkeiten zur Kommentierung:

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 * @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; }

}

DBIS - SS2009Grundlagen der Programmierung II10

Javadoc

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

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

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

DBIS - SS2009Grundlagen der Programmierung II11

Java - API - Dokumentation

http://java.sun.com/javase/6/docs/api/

DBIS - SS2009Grundlagen der Programmierung II12

Literatur zu Java• Java Homepage Sun: http://java.sun.com

• Java Compiler JDK 6 update 14 und Virtuelle Maschine JRE(Version 7 gibt es als Preview)::http://java.sun.com/javase/downloads/index.jsp

• Java Tutorials: http://java.sun.com/new2java/

• Reading: „Thinking in Java 3“ von Bruce Eckel !!!

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

DBIS - SS2009Grundlagen der Programmierung II13

Java Entwicklungsumgebungen

Eine Entwicklungsumgebung (Integrated Development

Environment – IDE) hilft dem Entwickler beim Erstellen und Debuggen von Programmen.

Beispiele für Java Entwicklungsumgebungen:

• Web Sphere von IBM (basiert auf Eclipse)

• JBuilder von Borland

• Sun ONE Studio von Sun Microsystems (basiert auf NetBeans)

• ... und viele mehr!

DBIS - SS2009Grundlagen der Programmierung II14

Free IDEs

• Eclipse unter: www.eclipse.org

• NetBeans unter: www.netbeans.org

DBIS - SS2009Grundlagen der Programmierung II15

Programmstruktur:Klassen, Methoden und Variablen

class ClassName {

type variablenName = anfangswert ;

rückgabeType methodenName(typeparameter1, …){

}

}

Ein erstes Beispiel:

class Student {

int semester;

int getSemester() {

return semester;

}

}

DBIS - SS2009Grundlagen der Programmierung II16

Klassen, Methoden und Variablen

Konstruktor:

Student() { … }

Student(int semester) { … }

Objekt student1 erzeugen:

Student student1 = new Student();

Methode aufrufen und Rückgabewert speichern:

int semanzahl = student1.getSemester();

DBIS - SS2009Grundlagen der Programmierung II17

Was ist Java?

Java =

• Programmiersprache (OO)

• Virtuelle Maschine

• 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

Ergebnis

Java

Libraries

DBIS - SS2009Grundlagen der Programmierung II18

Plattformunabhängigkeit von Java

Eigenschaften der Java Virtual Machine

• Die Virtuelle Maschine ist eine Art „Universaltranslater“.(vgl. mit Raumschiff Enterprise)

• Der Bytecode ist der „Maschinencode“ der Virtuellen Maschine.� von der Virtuellen Maschine direkt ausführbar

• Die Virtuelle Maschine ist für alle gängigen Systeme verfügbar.(Windows, Solaris, Linux usw.)

• Die Virtuelle Maschine ist z.B. auch in WWW-Browsern integriert.� Einsatz von sog. „Applets“ möglich.

19

Teil 2 – OO (in Java)

Einführung in die Objektorientierung

DBIS - SS2009Grundlagen der Programmierung II20

Objektorientierung

Das Objektmodell beschreibt „die Welt“

als eine Menge interagierender Objekte.

DBIS - SS2009Grundlagen der Programmierung II21

Kurze Wiederholung von:

• Klasse

• Objekt

• Attribute

• Methoden

• Identität eines Objektes

• Lebenszeit eines Objektes

• Vererbung

DBIS - SS2009Grundlagen der Programmierung II22

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).

• ein benutzerdefinierter Typ in einer objektorientierten Programmiersprache.

• eine zur Compilezeit des Programms notwendige Typspezifikation.

DBIS - SS2009Grundlagen der Programmierung II23

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.

• 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.

DBIS - SS2009Grundlagen der Programmierung II24

Beispiele

Klasse Objekte (Instanzen)

PKW • mein Auto

• dein Auto

• das Auto mit dem Kennzeichen F-CB 2000

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

DBIS - SS2009Grundlagen der Programmierung II25

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.

F-CB 2000

DA-XY 123

Typ

Farbe

km/h

PKW

DBIS - SS2009Grundlagen der Programmierung II26

Methoden

Methoden• 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.

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

DBIS - SS2009Grundlagen der Programmierung II27

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.

F-CB 2000

DA-XY 123

Typ

Farbe

km/h

PKW

beschleunigen()

bremsen()

VW

Rot

60

BMW

Gelb

100

DBIS - SS2009Grundlagen der Programmierung II28

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

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

• Objekte belegen einen Teil des Speichers.

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

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

DBIS - SS2009Grundlagen der Programmierung II29

Identität eines Objektes

Ein Objekt ohne Namen besitzt zwar eine Identität, ist aber nicht (mehr) erreichbar � Garbage Collection.

Objekt mit zwei Namen und zwei Referenzen Objekt ohne Namen

meinAuto Referenz 2

Referenz 1deinAuto keine Referenzen

DBIS - SS2009Grundlagen der Programmierung II30

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 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.

DBIS - SS2009Grundlagen der Programmierung II31

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 Erweiterung ihrer Oberklasse.

Eine Unterklasse kann selbst wieder Oberklasse sein. Dadurch ergibt sich eine Baumstruktur, die so genannte Vererbungsstruktur oderKlassenhierarchie.

Die Vererbung ist transitiv.

DBIS - SS2009Grundlagen der Programmierung II32

Beispiel für eine Klassenhierarchie (1)

Kraftfahrzeug ist 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.

Typ, Farbe, kmh

beschleunigen()

bremsen()

Kraftfahrzeug

DBIS - SS2009Grundlagen der Programmierung II33

Beispiel für eine Klassenhierarchie (2)

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.

Typ, Farbe, kmh

beschleunigen()

bremsen()

Kraftfahrzeug

LKW anhängen()

DBIS - SS2009Grundlagen der Programmierung II34

Beispiel für eine Klassenhierarchie (3)

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.

Typ, Farbe, kmh

beschleunigen()

bremsen()

Omnibus Stehplätze

Kraftfahrzeug

PKW LKW anhängen()

DBIS - SS2009Grundlagen der Programmierung II35

Beispiel für eine Klassenhierarchie (4)

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

Eine solche Hierarchie lässt sich beliebig fortsetzen.

Typ, Farbe, kmh

beschleunigen()

bremsen()

Omnibus Stehplätze

Kraftfahrzeug

PKW LKW anhängen()

Limousine Cabriolet Verdeck öffnen()

DBIS - SS2009Grundlagen der Programmierung II36

Mehrfach-Vererbung

Typ, Farbe, kmh

beschleunigen()

bremsen()

Fahrzeug

PKW LKW anhängen() Schiff

Amphibien- Fahrzeug

Mehrfach-Vererbung ist in Java nicht möglich!