Instruções

Construir um Calculador de Área de Polígono

Neste projeto, você usará programação orientada a objetos para criar uma classe Rectangle e uma classe Square. A classe Square deve ser uma subclasse de Rectangle e herdar seus métodos e atributos. Objetivo: Cumprir as user stories abaixo e fazer todos os testes passarem para completar o laboratório. Histórias de Usuário: 1. Você deve criar uma classe Rectangle. 2. Quando um objeto Rectangle é criado, ele deve ser inicializado com os atributos width e height. A classe também deve conter os seguintes métodos:
  • set_width: Define a largura do retângulo.
  • set_height: Define a altura do retângulo.
  • get_area: Retorna a área (\\( \text{largura} \times \text{altura} \\)).
  • get_perimeter: Retorna o perímetro \\( 2(\text{largura} + \text{altura}) \\).
  • get_diagonal: Retorna a diagonal \\( \sqrt{\text{largura}^2 + \text{altura}^2} \\).
  • get_picture: Retorna uma string que representa a forma usando linhas de *. O número de linhas deve ser igual à altura e o número de * em cada linha deve ser igual à largura. Deve haver uma nova linha (\n) no final de cada linha. Se a largura ou altura for maior que 50, isso deve retornar a string: Too big for picture..
  • get_amount_inside: Pega outra forma (quadrado ou retângulo) como um argumento. Retorna o número de vezes que a forma passada como argumento poderia caber dentro da forma (sem rotações). For instance, a rectangle with a width of 4 and a height of 8 could fit in two squares with sides of 4.
3. Se uma instância de um Rectangle for representada como uma string, ela deve ser exibida como: Rectangle(width=5, height=10). 4. Você deve criar uma classe Square que herda de Rectangle. 5. Quando um objeto Square é criado, ele deve ser inicializado com um único comprimento de lado. O método __init__ deve armazenar o comprimento do lado tanto no atributo width quanto no height da classe Rectangle. 6. A classe Square deve conter os seguintes métodos:
  • set_width: Substitui o método set_width da classe Rectangle. Deve definir a largura e a altura para o comprimento do lado.
  • set_height: Substitui o método set_height da classe Rectangle. Deve definir a largura e a altura para o comprimento do lado.
  • set_side: Define a altura e a largura do quadrado iguais ao comprimento do lado.
7. A classe Square deve ser capaz de acessar os métodos da classe Rectangle. 8. Se uma instância de um Square for representada como uma string, ela deve ser exibida como: Square(side=9).

Exemplo de uso

rect = Rectangle(10, 5)
print(rect.get_area())
rect.set_height(3)
print(rect.get_perimeter())
print(rect)
print(rect.get_picture())

sq = Square(9)
print(sq.get_area())
sq.set_side(4)
print(sq.get_diagonal())
print(sq)
print(sq.get_picture())

rect.set_height(8)
rect.set_width(16)
print(rect.get_amount_inside(sq))
Esse código deve retornar:
50
26
Rectangle(width=10, height=3)
**
**
**

81
5.656854249492381
Square(side=4)





8

O que fazer:

Testes:

  • Você deve ter uma classe `Rectangle`.
  • Você deve ter uma classe `Square`.
  • A classe `Square` deve ser uma subclasse da classe `Rectangle`.
  • A classe `Square` deve ser uma classe distinta da classe `Rectangle`.
  • Um objeto quadrado deve ser uma instância da classe `Square` e da classe `Rectangle`.
  • A representação em string de `Rectangle(3, 6)` deve ser `Rectangle(width=3, height=6)`.
  • A representação em string de `Square(5)` deve ser `Square(side=5)`.
  • `Rectangle(3, 6).get_area()` deve retornar `18`.
  • `Square(5).get_area()` deve retornar `25`.
  • `Rectangle(3, 6).get_perimeter()` deve retornar `18`.
  • `Square(5).get_perimeter()` deve retornar `20`.
  • `Rectangle(3, 6).get_diagonal()` deve retornar `6.708203932499369`.
  • `Square(5).get_diagonal()` deve retornar `7.0710678118654755`.
  • Uma instância da classe `Rectangle` deve ter uma representação em string diferente após definir novos valores.
  • Uma instância da classe `Square` deve ter uma representação em string diferente após definir novos valores usando `.set_side()`.
  • Uma instância da classe `Square` deve ter uma representação em string diferente após definir novos valores usando `.set_width()` ou `set_height()`.
  • O método `.get_picture()` deve retornar uma representação em string diferente de uma instância de `Rectangle`.
  • O método `.get_picture()` deve retornar uma representação em string diferente de uma instância de `Square`.
  • O método `.get_picture()` deve retornar a string `Too big for picture.` se os atributos `width` ou `height` forem maiores que `50`.
  • `Rectangle(15,10).get_amount_inside(Square(5))` deve retornar `6`.
  • `Rectangle(4,8).get_amount_inside(Rectangle(3, 6))` deve retornar `1`.
  • `Rectangle(2,3).get_amount_inside(Rectangle(3, 6))` deve retornar `0`.

Preview