Praktikumsanleitung
Praktikum 9
Öffnen Sie das Projekt in Visual Studio (Code).
Neben den Ihnen wohlbekannten Klassen Point
und Rectangle
gibt es nun zwei neue pure-virtual Klassen: Movable
und Locatable
. Da diese Klassen keine einzige implementierte Methode enthalten, werden diese auch “Interface” genannt.
Movable
definiert die Methoden moveBy
und moveTo
. Wer dieses Interface implementiert kann also bewegt werden.
Locatable
definiert die Methode getPosition
und gibt einen unique_ptr
mit der aktuellen Position zurück.
Aufgabe 1: Vererbung
Aufgabe 1.1
Lassen Sie Point
von Movable
ergeben und implementieren Sie in der Point
-Klasse die beiden Methoden.
Aufgabe 1.2
Implementieren Sie für Point
nun auch die eine Methode in Locatable
Aufgabe 1.3
Machen Sie dies analog für beide Interfaces innerhalb der Rectangle
-Klasse.
Aufgabe 1.4
Werfen Sie einen Blick in die main.cpp
. Machen Sie sich mit locate
und move
vertraut und führen Sie einige Tests mit Punkten und Rechtecken in der main
-Funktion durch.
Aufgabe 2: Speicherverwaltung
Für die zweite Aufgabe verwenden wir die main2.cpp
als Startdatei.
Führen Sie Schritt für Schritt die folgenden Dinge aus:
- Erzeugen Sie einen neuen
Point
an beliebiger Position in einemunique_ptr
p. - Verschieben Sie den
Point
p um(1,2)
- Geben Sie die Position von p aus
- Erzeugen Sie einen neuen
unique_ptr
q. - Übertragen Sie den Besitz mittels
std::move
von p auf q. - Ermitteln Sie die Position von p, was fällt Ihnen auf?
- Verwenden Sie
.reset()
vomunique_ptr
q, um einen neuen Punkt zu erzeugen.