Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Abstrakte Klassen DVG2 - 02.

Ähnliche Präsentationen


Präsentation zum Thema: "Abstrakte Klassen DVG2 - 02."—  Präsentation transkript:

1 Abstrakte Klassen DVG2 - 02

2 Beispiel: Vögel Definition von Klassen enthält Abstraktion von den konkreten Objekten. Z.B.: Klasse: Vogel Kann ein Objekt der Klasse Vogel instanziiert werden? Nein, es gibt keine Vögel als solche, es gibt nur Spatzen, Enten, Kakadus, Strauße, Pinguine u.s.w. Vogel ist eine abstrakte Klasse. Die Klasse Vogel definiert allgemeine Eigenschaften aller Vögel. Um eine spezielle Vogelart zu beschreiben, werden zusätzliche Definitionen benötigt. Z.B.: Flugfähigkeit Farben des Gefieders, des Schnabels, der Beine Größe, Gewicht u.s.w. DVG2 - 02

3 Beispiel: Newton-Verfahren
class Equation { final double eps = 1e-12; double solve(double x) double dx; do dx=-f(x)/fs(x); x+=dx; } while (Math.abs(dx) > eps*Math.abs(x)); return x; } DVG2 - 02

4 f und fs sind noch nicht bekannt
Problem: Bei der Definition der Methode solve werden die Methoden f und fs benötigt. f und fs sind noch nicht bekannt Bei der Definition von solve ist nur wichtig, welche Schnittstellen f und fs haben, nicht aber welchen Körper. f und fs werden als abstrakte Methoden definiert, d.h. es wird nur der Methodenkopf mit dem Schlüsselwort abstract definiert. DVG2 - 02

5 abstract class Equation { final double eps = 1e-12;
abstract double f (double x); abstract double fs (double x); double solve(double x) double dx; do dx=-f(x)/fs(x); x+=dx; } while (Math.abs(dx) > eps*Math.abs(x)); return x; } DVG2 - 02

6 Die Klasse Equation ist noch abstrakt.
Es hat noch keinen Sinn mit der Klasse Equation ein Problem lösen zu wollen, da f und fs, und damit das zu lösende Problem, noch nicht beschrieben sind. ==> Abstrakte Klassen sind nicht instanziierbar! Um ein konkretes Problem lösen zu können muß eine „reale“ Klasse abgeleitet werden, die f und fs definiert. DVG2 - 02

7 class expEquation extends Equation {
final double rhs = Math.exp(Math.PI); double f (double x) return Math.exp(x) - rhs; } double fs (double x) return Math.exp(x); DVG2 - 02

8 Die Klasse expEquation ist nicht mehr abstrakt.
Von expEquation kann ein Objekt instanziiert werden. Von diesem Objekt kann die Methode solve aufgerufen werden und damit die Gleichung gelöst werden. public class Newton01 { public static void main (String[]args) expEquation ex = new expEquation(); System.out.println("Loesung = "+ex.solve(15.0)); } DVG2 - 02

9 Vorteile abstrakter Klassen
Teile der Klassendefinition können von anderen Teilen getrennt und somit vor dem Anwender verborgen werden. Z.B.: enthält die Klasse Equation unser ganzes know-how darüber, wie nichtlineare Gleichungen gelöst werden können. Dieses können wir vor dem Anwender verbergen. Er fügt nur die fehlenden Teile hinzu und kann sein konkretes Problem lösen. Es bleibt die Überprüfung aller Schnittstellen durch das System garantiert. Es sind keine fehlerhaften Aufrufe oder Parameterlisten möglich, da die Schnittstellen in der abstrakten Klasse definiert sind und in der abgeleiteten Klasse nicht verändert werden können (Überladung). DVG2 - 02


Herunterladen ppt "Abstrakte Klassen DVG2 - 02."

Ähnliche Präsentationen


Google-Anzeigen