8.582
Bearbeitungen
Jneug (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Jneug (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 4: | Zeile 4: | ||
== Ober- und Unterklassen == | == Ober- und Unterklassen == | ||
Am besten verdeutlicht dies ein Beispiel: Nehmen wir an, es soll ein geometrisches Zeichenprogramm nach folgender Beschreibung umgesetzt werden. | Am besten verdeutlicht dies ein Beispiel: Nehmen wir an, es soll ein geometrisches Zeichenprogramm nach folgender Beschreibung umgesetzt werden. | ||
{{Schublade|Es gibt verschiedene Formen wie Rechteck, Dreieck und Quadrat. Jede Form besitzt eine x- und y-Koordinate | {{Schublade|Es gibt verschiedene Formen wie Rechteck, Dreieck und Quadrat. Jede Form besitzt eine x- und y-Koordinate und eine Richtung. Formen können versetzt und gedreht werden. Rechtecke besitzen zwei Seitenlängen. Bei Quadraten sind beide Seitenlängen gleich. Dreiecke werden über zwei Punkte festgelegt, die auch eine x- und y-Koordinate besitzen. Die dritte Ecke wird durch die Position des Dreiecks festgelegt.}} | ||
Ein erstes Implementierungsdiagramm ohne Vererbung könnte so aussehen: | Ein erstes Implementierungsdiagramm ohne Vererbung könnte so aussehen: | ||
| Zeile 27: | Zeile 27: | ||
</graphviz> | </graphviz> | ||
Es ergeben sich einige Dopplungen bei Eigenschaften und Methoden. Jede Klasse besitzt x- und y-Koordinaten und eine | Es ergeben sich einige Dopplungen bei Eigenschaften und Methoden. Jede Klasse besitzt x- und y-Koordinaten und eine Richtung als Attribut, sowie die Methoden ''versetzen'' und ''drehen''. Diese müssten bei der Implementierung jeweils exakt gleich umgesetzt werden, was neben viel Aufwand sehr fehleranfällig ist. | ||
Statt dessen können im Problembereich logische Zusammenhänge zwischen den Klassen identifiziert werden. Jede Klasse ''ist eine'' "Form". Ein "Quadrat" ''ist ein'' "Rechteck". Die konkreten Form-Klassen haben alle bestimmte Attribute und Methoden gemeinsam. | |||
Form ist also eine '''Oberklasse''' von Dreieck und Rechteck. Quadrat ist eine '''Unterklasse''' von Rechteck. (Also ist Rechteck wiederum ''Oberklasse'' von Quadrat.) Die Methoden müssen so nur einmal in Form implementiert werden, sind aber durch die Vererbung in allen Objektinstanzen verfügbar. | |||
Das neue Implementierungsdiagramm sieht so aus: | |||
<graphviz> | <graphviz> | ||
digraph G2 { | digraph G2 { | ||