Lernpfad:Objektorientierte Programmierung mit Java/Vererbung: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 14: Zeile 14:
digraph G {
digraph G {
         fontname = "Bitstream Vera Sans"
         fontname = "Bitstream Vera Sans"
         fontsize = 8
         fontsize = 9
         rankdir = BT
         rankdir = BT


         node [fontname = "Bitstream Vera Sans";fontsize = 8;shape = "record"]
         node [fontname = "Bitstream Vera Sans";fontsize = 9;shape = "record"]
         edge [fontname = "Bitstream Vera Sans";fontsize = 8]
         edge [fontname = "Bitstream Vera Sans";fontsize = 9]


Dreieck [label = "{Dreieck|-position: Punkt\l-richtung: double\l-punktB: Punkt\l-punktC: Punkt\l|+Dreieck(pPosition: Punkt, pPunktB: Punkt\l pPunktC: Punkt, pRichtung: double)\l+getPosition(): Punkt\l+setPosition(pPosition: Punkt)\l+getPunktB(): Punkt\l+setPunktB(pPunktB: Punkt)\l+getPunktC(): Punkt\l+setPunktC(pPunktC: Punkt)\l+getRichtung(): double\l+setRichtung(pRichtung: double)\l+versetzen(pX. int, pY: int)\l+drehen(pGrad: double)\l}"]
Dreieck [label = "{Dreieck|-position: Punkt\l-richtung: double\l-punktB: Punkt\l-punktC: Punkt\l|+Dreieck(pPosition: Punkt, pPunktB: Punkt\l pPunktC: Punkt, pRichtung: double)\l+getPosition(): Punkt\l+setPosition(pPosition: Punkt)\l+getPunktB(): Punkt\l+setPunktB(pPunktB: Punkt)\l+getPunktC(): Punkt\l+setPunktC(pPunktC: Punkt)\l+getRichtung(): double\l+setRichtung(pRichtung: double)\l+versetzen(pX. int, pY: int)\l+drehen(pGrad: double)\l}"]
Rechteck [label = "{Rechteck||+ bark() : void\l}"]
Rechteck [label = "{Rechteck|-position: Punkt\l-richtung: double\l-a: int\l-b: int\l|+Dreieck(pPosition: Punkt, pA: int\l pB: int, pRichtung: double)\l+getPosition(): Punkt\l+setPosition(pPosition: Punkt)\l+getA(): int\l+setA(pA: int)\l+getB(): int\l+setB(pB: int)\l+getRichtung(): double\l+setRichtung(pRichtung: double)\l+versetzen(pX. int, pY: int)\l+drehen(pGrad: double)\l}"]
Quadrat [label = "{Quadrat||+ meow() : void\l}"]
Quadrat [label = "{Quadrat|-position: Punkt\l-richtung: double\l-a: int\l|+Dreieck(pPosition: Punkt, pA: int,\l pRichtung: double)\l+getPosition(): Punkt\l+setPosition(pPosition: Punkt)\l+getA(): int\l+setA(pA: int)\l+getRichtung(): double\l+setRichtung(pRichtung: double)\l+versetzen(pX. int, pY: int)\l+drehen(pGrad: double)\l}"]
Punkt [label = "{Punkt|-x: int\l-y : int\l|+Punkt(pX: int, pY: int)\l+getX(): int\l+getY(): int\l+setX(pX: int)\l+setY(pY: int)\l}"]
Punkt [label = "{Punkt|-x: int\l-y : int\l|+Punkt(pX: int, pY: int)\l+getX(): int\l+getY(): int\l+setX(pX: int)\l+setY(pY: int)\l}"]


Zeile 31: Zeile 31:
}
}
</graphviz>
</graphviz>
[[Datei:UML Vererbung 1.jpg|center]]


Es ergeben sich einige Dopplungen bei Eigenschaften und Methoden. Jede Klasse besitzt x- und y-Koordinaten und eine Richtung als Attribut, sowie die Methoden <code>versetzen</code> und <code>drehen</code>. 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 <code>versetzen</code> und <code>drehen</code>. Diese müssten bei der Implementierung jeweils exakt gleich umgesetzt werden, was neben viel Aufwand sehr fehleranfällig ist.