EserciziΒΆ
Possiamo rappresentare un rettangolo conoscendo tre cose: la posizione del suo angolo a sinistra in basso, la sua base e la sua altezza. Creare una definizione di classe per la classe Rectangle usando questa idea. Per creare un oggetto Rectangle in posizione (4,5) con base 6 e altezza 5, scriviamo quanto segue:
r = Rectangle(Point(4, 5), 6, 5)
Aggiungere i seguenti metodi accessori alla classe Rectangle:
getWidth
,getHeight
,__str__
.
Aggiungere il metodo
area
alla classe Rectangle che ritorna l’area di una qualsiasi istanza:r = Rectangle(Point(0, 0), 10, 5) testEqual(r.area(), 50)
Scrivere una funzione
perimeter
nella classe Rectangle in modo da trovare il perimetro di un qualsiasi rettangolo:from test import testEqual r = Rectangle(Point(0, 0), 10, 5) testEqual(r.perimeter(), 30)
Scrivere un metodo
transpose
nella classe Rectangle che scambia la base con l’altezza:from test import testEqual r = Rectangle(Point(100, 50), 10, 5) testEqual(r.getWidth(), 10) testEqual(r.getHeight(), 5) r.transpose() testEqual(r.getWidth(), 5) testEqual(r.getHeight(), 10)
Scrivere un metodo nella classe Rectangle per controllare se un Point cade all’interno del rettangolo. Per questo esercizio, assumere che il rettangolo in posizione (0,0) con base 10 e altezza 5, si estende nella direzione x da [0 a 10) e nella direzione y da [0 a 5), per cui non contiene il punto (10, 2). I seguenti test devono passare:
from test import testEqual r = Rectangle(Point(0, 0), 10, 5) testEqual(r.contains(Point(0, 0)), True) testEqual(r.contains(Point(3, 3)), True) testEqual(r.contains(Point(3, 7)), False) testEqual(r.contains(Point(3, 5)), False) testEqual(r.contains(Point(3, 4.99999)), True) testEqual(r.contains(Point(-3, -3)), False)
Scrivere un nuovo metodo chiamato
diagonal
che ritorna la lunghezza della diagonale dall’angolo in basso a sinistra a quello in alto a destra.
Scrivere una funzione che determina se due rettangoli collidono, ovvero se le loro aeree si intersecano. Suggerimento: Considerare i diversi casi.