Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

DVG2 - 021 Abstrakte Klassen. DVG2 - 022 Beispiel: Vögel 4 Definition von Klassen enthält Abstraktion von den konkreten Objekten. 4 Z.B.: Klasse: Vogel.

Ähnliche Präsentationen


Präsentation zum Thema: "DVG2 - 021 Abstrakte Klassen. DVG2 - 022 Beispiel: Vögel 4 Definition von Klassen enthält Abstraktion von den konkreten Objekten. 4 Z.B.: Klasse: Vogel."—  Präsentation transkript:

1 DVG Abstrakte Klassen

2 DVG Beispiel: Vögel 4 Definition von Klassen enthält Abstraktion von den konkreten Objekten. 4 Z.B.: Klasse: Vogel 4 Kann ein Objekt der Klasse Vogel instanziiert werden? 4 Nein, es gibt keine Vögel als solche, es gibt nur Spatzen, Enten, Kakadus, Strauße, Pinguine u.s.w. 4 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.

3 DVG 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; }

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

5 DVG 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; }

6 DVG Die Klasse Equation ist noch abstrakt. 4 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! 4 Um ein konkretes Problem lösen zu können muß eine reale Klasse abgeleitet werden, die f und fs definiert.

7 DVG 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); }

8 DVG Die Klasse expEquation ist nicht mehr abstrakt. 4 Von expEquation kann ein Objekt instanziiert werden. 4 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)); }

9 DVG Vorteile abstrakter Klassen 4 Teile der Klassendefinition können von anderen Teilen getrennt und somit vor dem Anwender verborgen werden. 4 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. 4 Es bleibt die Überprüfung aller Schnittstellen durch das System garantiert. 4 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).


Herunterladen ppt "DVG2 - 021 Abstrakte Klassen. DVG2 - 022 Beispiel: Vögel 4 Definition von Klassen enthält Abstraktion von den konkreten Objekten. 4 Z.B.: Klasse: Vogel."

Ähnliche Präsentationen


Google-Anzeigen