8.582
Bearbeitungen
Jneug (Diskussion | Beiträge) |
Jneug (Diskussion | Beiträge) |
||
| Zeile 14: | Zeile 14: | ||
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. | 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. | 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. | ''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: | Das neue Implementierungsdiagramm sieht so aus: | ||