1. OOP

OOPWerkzeugeReferenzenFädenSynchronisationAppletsDokumentation


Objektorientierte Programmierung mit Java

Objektorientierte Programmierung - ein Schlagwort oder steckt etwas dahinter? Worin liegen die Unterschiede zu den Programmiersprachen C und Pascal? Was sind die Vorteile?

In Pascal und C stehen Prozeduren und Funktionen im Vordergrund. Die dazugehörenden Daten werden beim Aufruf als Parameter übergeben - bildlich gesprochen werden sie zu den Prozeduren gebracht. In objektorientierten Sprachen hingegen, stehen die Daten im Zentrum. Anstatt diese zu den Prozeduren zu schicken, teilen wir ihnen mit was sie zu tun haben. Dazu schicken wir den Daten Meldungen. Nehmen wir zum Beispiel die Daten des Kreises (Mittelpunkt und Radius). Um den Kreis zu zeichnen, schicken wir die Meldung "zeichne dich". In Pascal oder C schicken wir die Daten des Kreises der Prozedur "ZeichneKreis".

So klein dieser Unterschied auch sein mag, er hat grosse Konsequenzen auf unseren Programmentwurf. Wir orientieren uns jetzt an den Daten und überlegen uns welche Meldungen diese verstehen müssen. Die eigentliche Implementierung folgt erst später. Meldungen werden in Java mit sogenannten Methoden (= Funktionen) implementiert. Deshalb sprechen wir auch von Methodenaufruf anstelle von Meldung verschicken.

Daten und Methoden zusammen bilden ein Objekt. Nun wäre kein grosser Fortschritt erzielt, wenn wir für jedes Objekt die Daten und Methoden neu implementieren müssten. Im Gegenteil, dann würden wir sehr schnell die Finger von Java lassen. Aus diesem Grunde kennt Java, wie alle objekt-orientierten Sprachen, Klassen. Ein Klasse enthält die Definition der Daten und Methoden.

Objektorientierte Sprachen können Klassen erweitern. Besitzen wir zum Beispiel den Bauplan (Klasse) eines einfachen Fahrrades, dann können wir diesen als Grundlage für ein neues Fahrrad benützen. Wir ändern den Plan, konstruieren bessere Räder, eine 30-Gang Übersetzung und verstärkte Rohre. Der so erhaltene Fahrradplan ist von der Art Moutainbike. Stellen wir nach diesem Plan ein neues Fahrrad her, dann erhalten wir ein neues Moutainbike (Objekt). Ähnliches bietet uns Java, nur sprechen wir nicht von Arten, sondern von Klassen. Wir nehmen eine bestehende Klasse, fügen neue Variablen und Methoden hinzu, und ändern, falls nötig, die geerbten Methoden. Bestehender Code kann somit wiederverwendet werden.

Die wesentlichen Vorteile von objektorientierter Programmierung sind kurz zusammengefasst:

In diesem Posten legen Sie den Grundstein zu Ihrem Fraktalprogramm. Sie werden zwei Klassen implementieren und sich dabei mit Java intensiver beschäftigen.

Ziel

Nach Bearbeitung dieses Postens verstehen Sie die Begriffe Objekte, Methoden, Klassen und Vererbung. Zudem sind Sie in der Lage neue Klassen in Java selbständig zu entwerfen und programmieren.

Auftrag

Leiten Sie aus der gegebenen, abstrakten Klasse Fractal die konkreten Subklassen Mandelbrot und Julia ab, und implementieren Sie diese. Damit unser Testprogramm läuft, müssen Sie die Konstruktoren wie folgt definieren:

public Mandelbrot(FCanvas screen, // Grafikfenster in dem gezeichnet wird.
		 int x, int y, int w, int h,  // Rahmen, in dem gezeichnet werden darf.
		 double fx, double fy, double fw, double fh, // Imaginärer Bereich, der berechnet
		 double a, double b)                         // werden soll.
public Julia(FCanvas screen,  // Grafikfenster in dem gezeichnet wird.
	       int x, int y, int w, int h,  // Rahmen in dem gezeichnet werden darf
	       double fx, double fy, double fw, double fh, // Imaginärer Bereich, der berechnet
	       double a, double b)                         // werden soll.

Material

Es stehen Ihnen folgende Materialien zur Verfügung:

OOP-Begriffe
Beschreibt ausführlich die wichtigsten Begriffe in der OOP Welt.
Was ist ein Objekt? - Was sind Meldungen? - Was ist eine Klasse? - Was ist Vererbung?
Mandelbrot- und Julia-Mengen
Gibt einen kurzen Überblick über die Mandelbrot- und Julia-Mengen und beschreibt die Algorithmen zur Berechnung der Mengen.
Tips und Hinweise
Lesen Sie diesen Text durch bevor Sie mit der Arbeit anfangen.
Lösungsmöglichkeit
Enthält einen Lösungsvorschlag für diesen Werkstattposten.

OOP - Werkzeuge - Referenzen - Fäden - Synchronisation - Applets - Dokumentation
Werkstatt - Bibliographie