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

OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Embed Size (px)

Citation preview

Page 1: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

1

OOP und JAVAModul: Programmierung B-PRG

Grundlagen der Programmierung II

Professur für Datenbanken und Informationssysteme (FB 12)

Page 2: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS20082

Java EntwicklungsumgebungenEine Entwicklungsumgebung (Integrated DevelopmentEnvironment – 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!

Page 3: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS20083

Free IDEs• Eclipse unter: www.eclipse.org

• NetBeans unter: www.netbeans.org

Page 4: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS20084

Java - API - Dokumentationhttp://java.sun.com/javase/6/docs/api/

Page 5: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS20085

Java – API: Klasse Applet

Page 6: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS20086

Java – API: Klasse Applet

Page 7: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS20087

Java – API: Klasse Applet

Page 8: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS20088

Programmstruktur:Klassen, Methoden und Variablenclass ClassName {

type variablenName = anfangswert ;rückgabeType methodenName(type parameter1, …){}

}

Ein erstes Beispiel:

class Student {int semester; int getSemester() {

return semester;}

Page 9: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS20089

Klassen, Methoden und Variablen

Objekt student1 erzeugen:Student student1 = new Student();

Methode aufrufen und Rückgabewert speichern:int semanzahl = student1.getSemester();

Konstruktor:Student() { … }

Student(int semester) { … }

Page 10: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200810

Kurze Eclipse Vorführung!

Page 11: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200811

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

• Java API Specification: http://java.sun.com/javase/6/docs/api/

• Java Compiler JDK 6 update 5 und Virtuelle Maschine JRE:http://java.sun.com/javase/downloads/index.jsp

• Java Tutorial: http://java.sun.com/developer/onlineTraining/new2java/index.html

• Horstmann, Cornell: "Core Java 2, Band 1", Addison-Wesley

• Java News: http://www.onjava.com/

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

Page 12: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200812

Java 2 - GeschichteUrsprung:„Green“-Project bei der Firma Sun Microsystems 1991Entwicklung 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

Page 13: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200813

Java 2 - Varianten• Micro Edition (J2ME) für eingebettete Systeme, PDAs, Smart Phones etc.

• Standard Edition (J2SE)„normales“ JDK - Java Development Kit

• Enterprise Edition (J2EE - JEE)EJBs, Servlets

Ab der Version Java 1.2 spricht man von Java 2!Die zur Zeit neuste Version ist Java 1.6und ist bekannt als Edition 6, ‘Mustang‘-Release.

Online:Die Varianten können heruntergeladen werden unter:http://java.sun.com

Page 14: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200814

JDK PaketDas JDK enthält Compiler, Interpreter, Debugger und Klassenbibliotheken, aber keinen Editor !

Verzeichnisstruktur

\jdk Stammverzeichnis\docs Dokumentation in HTML\bin Compiler und Tools\demo Beispieldateien\include Dateien für native Methoden\lib Bibliotheksdateien\src Quellcode der Bibliotheken

Page 15: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200815

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

Page 16: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200816

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

JavaLibraries

Plattformunabhängigkeit von Java

Vorgehensweise bei Java (Java Virtual Machine)

Page 17: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200817

Was ist Java?

Java =• Programmiersprache (OO)

• Virtuelle Maschine

• Bibliotheken

Page 18: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200818

Plattformunabhängigkeit von JavaEigenschaften 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.

Page 19: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200819

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:• Java-Programme für den Einsatz in einem WWW-Browser• Einbettung in eine HTML-Seite durch das <applet>- oder das <object>-Tag• nicht eigenständig• keine main-Methode erforderlich; spezielle Schnittstelle• Sandbox-Prinzip / Sicherheitseinschränkungen• JRE (Java Runtime Environment)

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

Page 20: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200820

JavaScript = Java ???

• Sieht aus wie Java - ABER

• wird anders verarbeitet (reine Skript-Sprache –kein Bytecode),

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

• … also JavaScript ≠ Java

Page 21: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200821

JavaScript Beispiel<html>

<head> <title>Test</title> <script type="text/javascript"> <!-- function Quadrat() { var Ergebnis = document.Formular.Eingabe.value *

document.Formular.Eingabe.value; alert("Das Quadrat von " + document.Formular.Eingabe.value + " = " + Ergebnis); }

//--> </script>

</head> <body>

<form name="Formular" action=""> <input type="text" name="Eingabe" size="3"> <input type="button" value="Quadrat errechnen" onclick="Quadrat()"> </form>

</body> </html>

Page 22: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200822

Dateinamen (Endung)

• Quellcode auf *.java

• Compilierter Code auf *.class

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

Page 23: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200823

AppletsBeispiel:

package simpleapplet;

import java.awt.Graphics;

class HelloWorld extends java.applet.Applet {

public void paint (Graphics g) {

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

}

}

Page 24: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200824

Einbindung des Applet in HTML

<html>

<body>

<applet

codebase = "."

code = "simpleapplet.HelloWorld.class"

width = "400"

height = "300"

>

</applet>

</body>

</html>

Page 25: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200825

Ausführen des Applets

Page 26: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200826

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 ProgrammsAufruf: „java Hello“ (Ausgeführt wird immer die main-Methode!)Ausgabe: „Hello Students!“

Page 27: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200827

EntwicklungsprozessProblem, die auftreten könnten beim Compilieren

• die Umgebungsvariablen PATH und CLASSPATH müssen gesetzt werden. Z.B. durch path=%path%;c:\jdk\binset CLASSPATH=c:\jdk\lib

– Win95/98 in der Datei autoexec.bat

– WinNT in der Systemsteuerung -> System -> Umgebung

– WinXP in der Systemsteuerung -> System -> Erweitert-> Umgebungsvariablen

- Linux-Bash: export=$PATH:/usr/share/jdk

Page 28: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200828

Entwicklungsprozess

• bei der Verwendung von Paketen (package) muß der Compiler und der Interpreter über dem Verzeichnis aufgerufen werden. c:\javacode> javac c:\javacode\paket1\datei.java

c:\javacode> java paket1.datei

das Paket (=Verzeichnis) ist hier paket1.

Page 29: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200829

… kleine Vorführung!

Page 30: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

30

Teil 2 – OOEinführung in die Objektorientierung

Page 31: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200831

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

Page 32: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200832

Kurze Wiederholung von:• Objekt

• Klasse

• Attribute

• Methoden

• Identität eines Objektes

• Lebenszeit eines Objektes

• Vererbung

Page 33: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200833

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

Page 34: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200834

KlasseEine Klasse (Typ, Schablone) ist

• die Spezifikation einer Menge von Objekten mit gleicher Struktur und gleichem Verhalten („Schablone“).

• eine Realisierung eines abstrakten Datentyps (ADT).

• ein benutzerdefinierter Typ in einer objektorientierten Programmiersprache.

• eine zur Compilezeit des Programms notwendige Typspezifikation.

Page 35: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200835

Beispiele

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

DVD

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

usw.

Geometrische Formen

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

usw.

PKW

Objekte (Instanzen)Klasse

Page 36: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200836

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 2000DA-XY 123

Typ Farbe km/h

PKW

Page 37: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200837

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.

Es gibt mehrere Arten von Methoden:Modifikation ändert Zustand Selektion liest Zustand Iteration wiederholte Modifikation oder Selektion Konstruktion kreiert ein Objekt und initialisiert ZustandDestruktion löscht Zustand und zerstört ein Objekt

Page 38: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200838

Verhalten eines ObjektesDas 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 2000DA-XY 123

Typ Farbe km/h

PKW

beschleunigen() bremsen()

VW Rot 60

BMW Gelb 100

Page 39: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200839

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, nicht seine Identität.

• Gleicher Zustand (also der gleiche Wert) bedeutet nicht gleiche Identität!

Dies ist besonders bei Vergleichsoperationen zu beachten.

Page 40: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200840

Identität eines Objektes

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

Objekt ohne Namen Objekt mit zwei Namen und zwei Referenzen

meinAuto Referenz 2

Referenz 1deinAuto keine Referenzen

Page 41: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200841

Lebenszeit von ObjektenDie 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!Hat man die Referenzen vieler Objekte auf NULL gesetzt, kann man mit System.gc() der Virtuellen Maschine den Einsatz des GarbageCollectors empfehlen. System.gc() sollte jedoch nur sehr sparsam verwendet werden!

Page 42: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200842

Vererbung (Inheritance) in der OOPEigenschaften der Vererbung von einer Oberklasse zu seinen Unterklassen

Die Unterklasse hat 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 und Erweiterung ihrer Oberklasse.Eine Unterklasse befindet sich auf einem niedrigeren Abstraktionsgrad als die Oberklasse.Die Vererbung ist transitiv. Eine Unterklasse kann selbst wieder Oberklasse sein. Dadurch ergibt sich eine Baumstruktur, die so genannte Vererbungsstruktur oderKlassenhierarchie.

Page 43: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200843

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

Page 44: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200844

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, kmhbeschleunigen() bremsen()

Kraftfahrzeug

LKW anhängen()

Page 45: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200845

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, kmhbeschleunigen() bremsen()

Omnibus Stehplätze

Kraftfahrzeug

PKW LKW anhängen()

Page 46: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200846

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

Page 47: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200847

Mehrfach-Vererbung

Typ, Farbe, kmh beschleunigen() bremsen()

Fahrzeug

PKW LKW anhängen() Schiff

Amphibien- Fahrzeug

Mehrfach-Vererbung ist in Java nicht möglich!

Page 48: OOP und JAVA - Benutzer-Homepagesprg2/SS2008/folien/zicari/java_teil1.pdf · 1 OOP und JAVA Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken

Grundlagen der Programmierung II DBIS - SS200848

Beschäftigen Sie sich insbesondere mit allen Stellen, die im Skript mit diesem Symbol markiert sind.

Study By Yourself!

… bitte ein kleines Java-Programm selbst

schreiben!