Umgang mit Vererbung verstehen

ocsme

Top Contributor
Guten Tag,

ich hab wiedermal ein "RIEßEN" Problem 🙁
Leider verstehe ich den Unterschied zwischen Interface und Ableitung nicht so ganz.
Hier mal kurz ein Text zu "Ist-ein" vs. "enthält-ein":
Manchmal fällt es nicht leicht, die Beziehung zwischen zwei Klassen richtig einzuordnen. In diesen Fällen hilft die Überlegung weiter, welche der beiden folgenden Aussgaen für zwei gegebene Klassen A und B zutrifft:

A ist ein B => A ist von B abgeleitet
A enthält ein B => A definiert ein Datenelement vom Typ B

Geht es hier nur um die Ableitung einer Klasse über extends also Konkret um "Normale" Klassen und ABCs die man ableiten kann?

Wann benötige ich denn dann ein Interface?
Wir haben eine Aufgabe zu UML dort sind Transportbehälter gegeben wie Rücksäcke, Kühlboxen, Koffer, Container etc. die Aufgabe kann ich gerne Posten wenn gewünscht.
Das bedeutet das all diese Säcke 😀 abgeleitet sind von der Klasse Transportbehälter.
Nun steht dort das sie von Menschen getragen werden können und manche von Ihnen auch Kinder gerecht sind. Was ist nun Mensch für eine Klasse? Soll Mensch etwa ein "Vertrag" sein also das Interface und fuerKinder ein Boolean?

Das Thema lässt mich noch Grau werden 🙁

LG
 
Du meinst, du hast ein RIESEN Problem und kein "RIEßEN" Problem. Bei letzterem spräche man das 'S/ß' scharf aus wie in "reißen" bzw. "reissen" ("Eine Packung aufreissen").

In Java müsstest du Interfaces verwenden, wenn ein Typ `C` mehrere Dinge gleichzeitig sein kann (also du `C` von mehreren Klassen `A` und `B` gleichzeitig ableiten müsstest) wenn dies sich nicht über eine lineare Vererbungshierarchie C -> B -> A abbilden lässt, da es in Java keine Mehrfachvererbung von Klassen gibt.

Interfaces dienen ja, wie der Name schon sagt, um eine "Schnittstelle" zu etwas in Form der Operationen/Methoden, die man darauf aufrufen kann, zu definieren. Eine Klasse beschreibt dabei schon mehr oder weniger eine konkrete Implementierung mit Zustand (Instanzvariablen), den man in einem Interface nicht findet.

Eine Klasse kann dann, wenn der Zweck das erfordert, viele Interfaces implementieren. Schau dir z.B. mal die Klasse java.util.ArrayList an. Diese implementiert gleich vier Schnittstellen, weil sie jede Operation jeder dieser Schnittstellen implementiert/unterstützt, somit also durch jede dieser Schnittstellen gesehen werden kann. Sie ist sowohl eine Liste, als auch ein RandomAccess (was eigentlich nur ein sogenanntes "Marker-Interface" ist - also ohne Operationen - um auszudrücken, dass beliebige get(int) Aufrufe konstant lange dauern), sie ist ein Cloneable und sie ist ein Serializable.
 
Interface / Ableitung
Ein Interface verwendet man wenn man beispiel zwei Klassen hat die nichts miteinander zu tun haben.
Eine Klasse Mensch und eine Klasse Reifen, beide benötigen Luft aber eine Oberklasse Luft zu machen, von der beide ableiten macht wenig Sinn. Dann macht man lieber ein Interface Luft und deklariert dort die Methoden die die Klasse Mensch und Reifen haben sollen.
Anschließend können die Klassen jeweils die Methoden überschreiben.

Bei der Klasse Mensch und Tier eine Oberklasse Lebewesen zu machen macht mehr Sinn und da kann man dann die Methoden für die Luft einpflegen

Korrigiert mich wenn es anders ist, bin auch erst am Lernen 😉
 
Das Thema habe ich heute nicht mehr weiter angeschaut. Morgen geht es weiter!
Ich werde morgen dann das UML Diagramm zu dieser Aufgabe machen und hier Posten vielleicht klappt es ja 😀

Hier mal die Aufgabe:
• Ein Rucksack ist ein Transportbehälter, der von Menschen getragen werden kann und
evtl. kindgerecht ist. Jeder Rucksack hat ein Volumen und eine bestimmte Anzahl von
Fächern.
• Ein Wanderrucksack ist ein Transportbehälter mit Fächern und einer Anzahl von
äußeren Schnallen. Die Fächer bestimmen das Volumen eines Wanderrucksacks.
Wanderrucksäcke werden von Menschen getragen, manche sind sogar für Kinder
geeignet.
• Eine Kühlbox ist ein Transportbehälter mit bestimmtem Volumen. Eine Kühlbox wird
von Menschen getragen und es gibt auch kleinere Ausführungen für Kinder.
Kühlboxen gibt es mit einer unterschiedlichen Anzahl von Kühlakkus.
• Ein Koffer ist ein Transportbehälter für Menschen. Manche Koffer sind sogar für
Kinder geeignet. Neben dem Volumen zeichnet sich jeder Koffer durch sein
Außenmaterial aus.
• Ein Container ist ein Transportbehälter, welcher einem Transportunternehmen gehört.
Es gibt Container mit verschiedenen Volumen.
• Ein Kühlcontainer ist ein Transportbehälter, welcher sich durch seine Kühlleistung (in
Grad Celsius) auszeichnet. Jeder Kühlcontainer ist Eigentum eines Transportunter-
nehmens und hat ein individuelles Volumen.
• Kühlboxen und Kühlcontainer sind gekühlte Behälter. Jeder gekühlte Behälter kann
aufgrund seiner Kühlleistung bzw. seiner Kühlakkus berechnen, wie lange seine
Kühlzeit ist.
 

Neue Themen


Zurück
Oben