8.582
Bearbeitungen
Jneug (Diskussion | Beiträge) |
Jneug (Diskussion | Beiträge) 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''. | ''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''. | ||
== Vererbung im Überblick == | == Vererbung im Überblick == | ||
| Zeile 12: | Zeile 12: | ||
[[Datei:UML Vererbung 1.jpg|center]] | [[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 | 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. | ||
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. | ||
<code>Form</code> ist also eine '''Oberklasse'' von <code>Dreieck</code> und <code>Rechteck</code>. <code>Quadrat</code> ist eine '''Unterklasse''' von <code>Rechteck</code>. (Also ist <code>Rechteck</code> wiederum '''Oberklasse''' von <code>Quadrat</code>.) Die Methoden müssen so nur einmal in <code>Form</code> implementiert werden, sind aber durch die Vererbung in allen Objektinstanzen verfügbar. | |||
Das neue Implementierungsdiagramm sieht so aus: | Das neue Implementierungsdiagramm sieht so aus: | ||
| Zeile 26: | Zeile 26: | ||
== Methoden überschreiben == | == Methoden überschreiben == | ||
Beim Überschreiben bekommen abgeleitete Klassen eine | Beim Überschreiben bekommen abgeleitete Klassen eine eigeneTitle: | ||
Tags: | |||
Format: standard | |||
Image: Version mindestens einer Methode der Basisklasse. | |||
Betrachte das folgende Klassendiagramm mit einer Ober- und drei erbenden Unterklassen und die dazugehörige Implementierung. | Betrachte das folgende Klassendiagramm mit einer Ober- und drei erbenden Unterklassen und die dazugehörige Implementierung. | ||