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

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
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, eine Rotation und eine Farbe. Formen können versetzt und gedreht werden. Rechtecke besitzen zwei Seitenlängen. Bei Quadraten sind beide Seitenlängen gleich. Dreiecke werden über drei Punkte festgelegt, die auch eine x- und y-Koordinate besitzen.}}
{{Schublade|Es gibt verschiedene Formen wie Rechteck, Dreieck und Quadrat. Jede Form besitzt eine x- und y-Koordinate, eine Richtung und eine Farbe. 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:
<graphviz>
<graphviz>
digraph G {
    fontname = "Bitstream Vera Sans"
    fontsize = 8
    rankdir = BT
    node [fontname = "Bitstream Vera Sans";fontsize = 8;shape = "record"]
    edge [fontname = "Bitstream Vera Sans";fontsize = 8]
    Punkt [label = "{Punkt|- x : int\l- y : int\l|+ Punkt(pX : int, pY : int)\l}"]
Form [label = "{Form|- x : int\l- y : int\l- richtung : double\l|+ Form(pX : int, pY : int, pRichtung : double)\l+ versetzen(pX : int, pY : int) : void\l+ drehen(pGrad : double) : void\l}"]
Rechteck [label = "{Rechteck|- x : int\l- y : int\l- richtung : double\l- a : int\l- b : int\l|+ Rechteck(pX : int, pY : int, pRichtung : double, pA : int, pB : int)\l+ versetzen(pX : int, pY : int) : void\l+ drehen(pGrad : double) : void\l}"]
Quadrat [label = "{Quadrat|- x : int\l- y : int\l- richtung : double\l- a : int\l- b : int\l|+ Quadrat(pX : int, pY : int, pRichtung : double, pA : int)\l+ versetzen(pX : int, pY : int) : void\l+ drehen(pGrad : double) : void\l}"]
    Dreieck [label = "{Dreieck|- x : int\l- y : int\l- richtung : double\l- punktA : Punkt\l- punktB : Punkt\l|+ Dreieck(pX : int, pY : int, pRichtung : double, pA : Punkt, pB : Punkt)\l+ versetzen(pX : int, pY : int) : void\l+ drehen(pGrad : double) : void\l}"]
    edge [arrowhead = "open", style="dashed"]
    Dreieck -> Punkt
}
</graphviz>
</graphviz>


Zeile 13: Zeile 30:
<graphviz>
<graphviz>
digraph G {
digraph G {
        fontname = "Bitstream Vera Sans"
    fontname = "Bitstream Vera Sans"
        fontsize = 8
    fontsize = 8
        rankdir = BT
    rankdir = BT


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


Form [label = "{Form|- x : int\l- y : int\l- rotation : double\l|- versetzen(pXneu : int, pYneu : int) : void\l+ drehen(pGrad : double) : void\l}"]
    Punkt [label = "{Punkt|- x : int\l- y : int\l|+ Punkt(pX : int, pY : int)\l}"]
Rechteck [label = "{Rechteck|- a : int\l- b : int|\l}"]
Form [label = "{Form|- x : int\l- y : int\l- richtung : double\l|+ Form(pX : int, pY : int, pRichtung : double)\l+ versetzen(pX : int, pY : int) : void\l+ drehen(pGrad : double) : void\l}"]
Quadrat [label = "{Quadrat||+ Quadrat( pA : int )\l}"]
Rechteck [label = "{Rechteck|- a : int\l- b : int\l|+ Rechteck(pX : int, pY : int, pRichtung : double, pA : int, pB : int)\l}"]
Quadrat [label = "{Quadrat||+ Quadrat(pX : int, pY : int, pRichtung : double, pA : int)\l}"]
    Dreieck [label = "{Dreieck|- punktA : Punkt\l- punktB : Punkt\l|+ Dreieck(pX : int, pY : int, pRichtung : double, pA : Punkt, pB : Punkt)\l}"]


edge [arrowhead = "empty"]
    edge [arrowhead = "open", style="dashed"]
Rechteck -> Form
    Dreieck -> Punkt
Quadrat -> Rechteck
edge [arrowhead = "empty", style="normal"]
    Dreieck -> Form
Rechteck -> Form
Quadrat -> Rechteck
}
}
</graphviz>
</graphviz>