29.04.2014 Aufrufe

Leseprobe

Leseprobe

Leseprobe

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

74<br />

Methoden<br />

5: const double dEpsilon = 0.0001;<br />

6: double dArea = 0;<br />

7: if (Math.Abs((a*a + b*b – c*c)) > dEpsilon)<br />

8: {<br />

9: dArea = base.ComputeArea(a,b,c);<br />

10: }<br />

11: else<br />

12: {<br />

13: dArea = a*b/2.0;<br />

14: }<br />

15:<br />

16: return dArea;<br />

17: }<br />

18: }<br />

Für diese Prüfung wird die Formel von Pythagoras benutzt, die für rechtwinklige<br />

Dreiecke das Ergebnis 0 liefert. Auf ein von Null (und einem hier als Minimalwert<br />

eingeführten Epsilon) abweichendes Ergebnis reagiert die Methode mit dem<br />

Aufruf der Basisklassenvariante:<br />

dArea = base.ComputeArea(a, b, c);<br />

Der springende Punkt ist hier der Qualifizierer base, über den sich zu jedem Zeitpunkt<br />

Elemente der Basisklasse ansprechen lassen. Derartige Rückgriffe wird<br />

man vor allem dann einsetzen, wenn die Funktionalität der Basisklasse gefordert<br />

ist (die man in einer abgeleiteten Klasse natürlich nicht duplizieren möchte).<br />

5.2.3 Verbergen von Methoden<br />

Eine zweiter Weg zum Ersatz von Methoden besteht darin, die Bezeichner der<br />

Basisklasse zu verbergen. Diese Alternative ist unter anderem bei Ableitungen<br />

von Klassen nützlich, die Sie nicht selbst geschrieben haben (und deren Methoden<br />

unter Umständen das Schlüsselwort virtual fehlt). Sehen Sie sich einmal das<br />

folgende Listing an, stellen Sie sich dabei vor, BaseClass sei von jemand anderem<br />

geschrieben worden, und Sie wollten nun DerivedClass von dieser Klasse ableiten:<br />

Listing 5.6:<br />

Die abgeleitete Klasse implementiert eine in der Basisklasse nicht<br />

vorhandene Methode<br />

1: using System;<br />

2:<br />

3: class BaseClass<br />

4: {<br />

5: }<br />

6:<br />

7: class DerivedClass:BaseClass

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!