Definieer een class met de naam “Punt” dat een punt voorstelt in een 2 dimentioneel vlak. Punt bevat 2 attributen, nl. x en y (reële getallen). Gebruik de __repr__ methode om het punt af te printen in het formaat (x, y).

Definieer een tweede class met de naam “Rechthoek” waarmee rechthoeken met horizontale en verticale zijden kunnen voorgesteld worden in een 2 dimentioneel vlak, die gedefineerd worden door een punt, dus een object van de class Punt, een breedte en een hoogte. Je maakt hierbij een kopie van het punt via de methode copy() uit de module copy (begin je code met “from copy import copy”).

Controleer of de breedte en de hoogte groter zijn dan 0, anders heb je geen rechthoek maar een lijn of een punt. Ontwerp hiervoor een AssertionError (keyword assert) met de boodschap ‘ongeldige rechthoek’. Gebruik de __repr__ methode om de rechthoek af te printen in het formaat “<punt>, b = <breedte>, h = <hoogte>”.

Maak volgende methodes aan voor de class Rechthoek:

Test je 2 classes zoals in onderstaand voorbeeld. Deze test-code moet je niet indienen in Dodona.

Voorbeeld

>>> p1 = Punt(1.0, 2.0)
>>> print(p1)
(1.0, 2.0)
>>> r1 = Rechthoek(p1, 2, 4)
>>> print(r1)
(1.0, 2.0), b = 2, h = 4  
>>> omtrek_r1 = r1.omtrek()
>>> print(omtrek_r1)
12
>>> oppervlakte_r1 = r1.oppervlakte()
>>> print(oppervlakte_r1)
8
>>> p1 = Punt(1.0, 1.0)
>>> print(p1)
(1.0, 1.0)
>>> print(r1)
(1.0, 2.0), b = 2, h = 4
>>> r2 = Rechthoek(p1, 0, 3)
Traceback (most recent call last):
AssertionError: ongeldige rechthoek