Ok neues Beispiel:
Wir haben ein einfaches 3D Spiel. Wir haben verschiedene Klassen die verschiedenes tun. Ein 3D Objekt besteht aus: Modell, x, y, z Koordinate, dies Speichern wir in der untersten Klasse <Objekt>. Animationen sind bestimmte Objekte die aus z.B. Bones aufgebaut sind, und werden bei uns separat gespeichert und verwaltet.
Wir haben eine weitere Klasse <"Dynamisches Objekt">, und <Statisches Objekt>. Beide erben von <Objekt>. Dynamisches Objekt bekommt Methoden zum bewegen der 3D Objekte. Statische Objekte hingegen bewegen sich in unserer Welt nicht (das sind z.B. Bäume, Häuser etc.).
Wir erstellen einer weitere Klasse <Vehicles> wo wir alle Fahrzeuge hineinschmeissen wollen, sowie eine Klasse <Humans>. <Humans> kommen unsere Menschen hinein, die wir natürlich Animieren müssen, also kommt da eine Methode "animation()" hinein, die unsere Klasse <Animation> nutzt. <Vehicles> mussen nicht animiert werden.
Eine ganz einfache Situtation für Mehrfachvererbung. Man hat Klassen die einzelne Objekte verwalten und die nötige Funktionalität bereitstellen um sie zu manipulieren. Mit Hilfe von Mehrfachvererbung kann man also eine sehr "natürliche" Welt generieren und muss in die Klasse 3D Objekt nicht sowas wie "Typ" machen nur um zu unterscheiden ob das nun (statisch, dynamisch) - (animiert oder nicht) sein soll. Es ist einfach weniger Fehleranfällig
.
p.s. in Cpp gibt es auch interfaces - einfach eine rein virtuelle Klassen eben.
|
Quellcode
|
1
2
3
4
5
6
7
|
<Object> ---- <Dyn. Obj.> ------------------ <Human>
| | |
| |---- <Vehicle> |
| |
| ----- <Stat. Obj.> |
|
<Animation> ---------------------------------------
|
Bei Spielen gibt es im normalfall wirklich viele Klassen, meist werden diese durch Analyse des Programms modeliert (UML). Jeder Klasse werden bestimmte Eigenschaften gegeben, die diese Klasse und ihr Nachfahren haben. Man sieht sehr leicht das schnell 5 oder mehr vererbungsstufen so entstehen können!