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 que50, 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 of4and a height of8could fit in two squares with sides of4.
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étodoset_widthda classeRectangle. Deve definir a largura e a altura para o comprimento do lado.set_height: Substitui o métodoset_heightda classeRectangle. 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.
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