- abstrakte Baisklasse Shape
- Methode area( )
- Methode volume( )
- abgeleitete Klasse Box
- abgeleitete Klasse Sphere
- Shape -> center( )
- Shape -> radius( )
- Box -> min( )
- Box -> max( )
- Konstruktoren
- Implementierung area( )
- Implementierung volume( )
- Tests
- Shape -> name_
- Shape -> color_
- Anpassung aller Konstruktoren
- Shape -> print( )
- Shape -> operator <<( )
- Box -> print( )
- Sphere -> print( )
- Output Objekte beider Klassen
- Schlüsselwort override verwenden
- tests.cpp -> Testcase
- framework -> struct Ray
- Sphere -> intersect( )
- source -> hpp struct HitPoint
- hitpoint -> Attribut "wurde geschnitten" (boolean)
- hitpoint -> Attribut "welche Distanz" (t)
- hitpoint -> Attribut "Objektename" (name_)
- hitpoint -> Atribut "Objektfarbe" (color_)
- hitpoint -> Attribut "3D Punkt des Schnitts" (vec3D)
- hitpoint -> Attribut "Richtung des Strahls" (direction)
- Tests
- Beispielcode
- Shape -> Destruktor
- Testcase -> Programmcode
- Erklärung
Wo wird der Konstruktor der Basisklasse aufgerufen?
Erklären Sie den Effekt des Schlüsselworts override im Kontext der Vererbung!
Was passiert, wenn Sie das Schlüsselwort weglassen?
Erklären Sie anhand des Beispiels die Begriffe „Statischer Typ einer Variablen“
und „Dynamischer Typ einer Variablen“ Wann wird welche Art des Typs überprüft?
Was sind die dynamischen und die statischen Typen der Variablen s1 bzw s2?
In welcher Reihenfolge werden Konstruktoren und Destruktoren aufgerufen?
Entfernen Sie nun das Schlüsselwort virtual vom Destruktor der Basisklasse,
testen Sie erneut und erklären Sie den Unterschied.
Erklären Sie die Unterschiede zwischen Klassenhierarchie
vs. Objekthierarchie - Klassendiagramm vs. Objektdiagramm.