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

Zur Navigation springen Zur Suche springen
keine Bearbeitungszusammenfassung
Markierungen: Mobile Bearbeitung Mobile Web-Bearbeitung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
{{Navigation}}
{{Navigation}}
''Vererbung'' ist eines der wichtigsten Konzepte der Objektorientierten Programmierung. Mit ihr ist es möglich komplexe Problembereiche in sinnvolle Klassenhierarchien zu unterteilen. Dabei werden Eigenschaften und Fähigkeiten, die mehrere Klassen besitzen, nur einmal in einer ''Oberklasse'' implementiert und an eine oder mehrere ''Unterklassen'' weiter''vererbt''.
== Ober- und Unterklassen ==
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.}}
Ein erstes Klassendiagramm ohne Vererbung könnte so aussehen:
<graphviz>
</graphviz>
Es ergeben sich einige Dopplungen bei Eigenschaften und Methoden. Jede Klasse besitzt x- und y-Koordinaten und eine Farbe als Attribut, sowie die Methoden ''versetzen'' und ''drehen''.
<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]
Form [label = "{Form|- x : int\l- y : int\|- rotation : double\l|- versetzen(pXneu : int, pYneu : int) : void\|+ drehen(pGrad : double) : void\l}"]
Rechteck [label = "{Rechteck|- a : int\|- b : int|\l}"]
Quadrat [label = "{Quadrat||+ Quadrat( pA : int )\l}"]
edge [arrowhead = "empty"]
Rechteck -> Form
Quadrat -> Rechteck
}
</graphviz>
== Methoden überschreiben ==
== Methoden überschreiben ==
Beim Überschreiben bekommen abgeleitete Klassen eine eigene Version mindestens einer Methode der Basisklasse.  
Beim Überschreiben bekommen abgeleitete Klassen eine eigene Version mindestens einer Methode der Basisklasse.  

Navigationsmenü