Vererbung: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Einführung ==
== Einführung ==
Schon sehr früh lernen wir, Objekte in Beziehung zu setzen. '''Assoziationen''' bilden dabei die Hat-Beziehung zwischen Objekten ab: Ein Mensch hat Beine, der Fernseher hat eine Bildröhre. Neben der Assoziation von Objekten gibt es eine weitere Form der Beziehung, die Ist-eine-Art-von-Beziehung. Menschen und Affen sind Säugetiere. Eine Disko ist eine Unterkategorie eines Gebäudes. Konsumgerät ist der Oberbegriff für Fernseher, CD-Spieler, etc.. Die zentralen Mechanismen der Objektorientierung lassen sich erst nutzen, wenn Beziehungen zwischen Klassen möglich sind<ref>http://openbook.galileocomputing.de/</ref>.
Schon sehr früh lernen wir, Objekte in Beziehung zu setzen. '''Assoziationen''' bilden dabei die Hat-Beziehung zwischen Objekten ab: Ein Mensch hat Beine, der Fernseher hat eine Bildröhre. Neben der Assoziation von Objekten gibt es eine weitere Form der Beziehung, die Ist-eine-Art-von-Beziehung. Menschen und Affen sind Säugetiere. Eine Disko ist eine Unterkategorie eines Gebäudes. Konsumgerät ist der Oberbegriff für Fernseher, CD-Spieler, etc.. Die zentralen Mechanismen der Objektorientierung lassen sich erst nutzen, wenn Beziehungen zwischen Klassen möglich sind http://openbook.galileocomputing.de/.


== Redundanz ==
== Redundanz ==
Zeile 12: Zeile 12:


== Generalisierung und Spezialisierung ==
== Generalisierung und Spezialisierung ==
Eine wichtige Beziehung, die zwischen zwei Klassen bestehen kann, ist, dass eine Klasse als Unterklasse einer anderen Klasse eingestuft wird. Eine Unterklasse bezeichnet man als '''Spezialisierung''' einer Oberklasse. Eine Spezialisierung/Unterklasse erbt von der '''Generalisierung'''/Oberklasse<ref>http://openbook.galileocomputing.de/</ref>.
Eine wichtige Beziehung, die zwischen zwei Klassen bestehen kann, ist, dass eine Klasse als Unterklasse einer anderen Klasse eingestuft wird. Eine Unterklasse bezeichnet man als '''Spezialisierung''' einer Oberklasse. Eine Spezialisierung/Unterklasse erbt von der '''Generalisierung'''/Oberklasse http://openbook.galileocomputing.de/.


Die vererbende Klasse wird meist Superklasse (auch Basis-, Ober- oder Elternklasse) genannt, die erbende abgeleitete Klasse (auch Sub-, Unter- oder Kindklasse). Den Vorgang des Erbens nennt man meist Ableitung oder Spezialisierung, die Umkehrung hiervon Generalisierung.
Die vererbende Klasse wird meist Superklasse (auch Basis-, Ober- oder Elternklasse) genannt, die erbende abgeleitete Klasse (auch Sub-, Unter- oder Kindklasse). Den Vorgang des Erbens nennt man meist Ableitung oder Spezialisierung, die Umkehrung hiervon Generalisierung.
Zeile 22: Zeile 22:
[[Datei:Basisklasse-Abgeleitete-Klasse.png|mini]]
[[Datei:Basisklasse-Abgeleitete-Klasse.png|mini]]
'''Polymorphie''' bedeutet "Vielgestaltigkeit." Im Bereich der Objektorientierung bezieht sich Polymorphie darauf, dass verschiedene Objekte bei Aufruf derselben Methode unterschiedliches Verhalten an den Tag legen können. Wird eine Methode von einer Superklasse an eine abgeleitete Klasse vererbt und dort mit der exakt identischen Signatur erneut implementiert, dann wird in der abgeleiteten Klasse das Verhalten dieser Methode überschrieben. Ruft man also diese Methode bei Objekten der abgeleiteten Klasse auf, verhalten sie sich anders als Methoden der Superklasse.
'''Polymorphie''' bedeutet "Vielgestaltigkeit." Im Bereich der Objektorientierung bezieht sich Polymorphie darauf, dass verschiedene Objekte bei Aufruf derselben Methode unterschiedliches Verhalten an den Tag legen können. Wird eine Methode von einer Superklasse an eine abgeleitete Klasse vererbt und dort mit der exakt identischen Signatur erneut implementiert, dann wird in der abgeleiteten Klasse das Verhalten dieser Methode überschrieben. Ruft man also diese Methode bei Objekten der abgeleiteten Klasse auf, verhalten sie sich anders als Methoden der Superklasse.
<html>
<iframe width="280" height="157.5" src="https://www.youtube.com/embed/B6LnjrLrMPc?si=AAa6olp7sClQUypc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</html>


== Vererbung im UML-Klassendiagramm ==
== Vererbung im UML-Klassendiagramm ==
Zeile 50: Zeile 54:


Die Methode <code>toString()</code> wird unter derselben Signatur in den erbenden Klassen Produkt und Dienstleistung erneut aufgeführt. Das bedeutet, dass diese Methoden in den jeweiligen erbenden Klassen überschrieben und erneut implementiert werden. Dieser Vorgang wird als Polymorphie bezeichnet.
Die Methode <code>toString()</code> wird unter derselben Signatur in den erbenden Klassen Produkt und Dienstleistung erneut aufgeführt. Das bedeutet, dass diese Methoden in den jeweiligen erbenden Klassen überschrieben und erneut implementiert werden. Dieser Vorgang wird als Polymorphie bezeichnet.
<html>
<iframe width="280" height="157.5" src="https://www.youtube.com/embed/_-lRpQ4pnNE?si=7Av2ZHJ38qWAkEwJ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</html>


== Vererbung in Java ==
== Vererbung in Java ==
[[Datei:Vererbung-BlueJ.png|mini]]
Im Java Programm werden die in UML dargestellten Vererbungsbeziehungen in Java Quelltext programmiert. Auch in Java wird zwischen einer Super- und einer abgeleiteten Klasse unterschieden. Die abgeleitete Klasse bekommt von ihrer Superklasse die öffentlichen (<code>public</code>) oder geschützten (<code>protected</code>) Attribute und Methoden vererbt. Des Weiteren werden abgeleitete Klassen um eigene Attribute und Methoden erweitert.
Im Java Programm werden die in UML dargestellten Vererbungsbeziehungen in Java Quelltext programmiert. Auch in Java wird zwischen einer Super- und einer abgeleiteten Klasse unterschieden. Die abgeleitete Klasse bekommt von ihrer Superklasse die öffentlichen (<code>public</code>) oder geschützten (<code>protected</code>) Attribute und Methoden vererbt. Des Weiteren werden abgeleitete Klassen um eigene Attribute und Methoden erweitert.


In Java gibt es keine Mehrfachvererbung. Alle Klassen gehen in Java auf eine globale Objekt-Klasse zurück und selbst benutzerdefinierte Klassen nutzen dessen Methoden und Eigenschaften.
In Java gibt es keine Mehrfachvererbung. Alle Klassen gehen in Java auf eine globale Objekt-Klasse zurück und selbst benutzerdefinierte Klassen nutzen dessen Methoden und Eigenschaften.
<html>
<iframe width="280" height="157.5" src="https://www.youtube.com/embed/B6LnjrLrMPc?si=n-mIGdub7Q8Dzm4W" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</html>


=== Syntax ===
=== Syntax ===
Zeile 163: Zeile 176:
[[Kategorie:FI_I_SDM]]
[[Kategorie:FI_I_SDM]]
[[Kategorie:AHR_I_Informatik_LK]]
[[Kategorie:AHR_I_Informatik_LK]]
[[Kategorie:FI_I_TP1]]