| | | | |

7.1 Classe e Objeto

Compre o e-book deste material aqui!

Uma classe é uma forma de estrutura que permite a alocação conjunta de dados e funções. Em Python, a sintaxe de definição de uma classe é

1class NomeDaClasse:
2  <bloco-0>
3  <bloco-1>
4  ...
5  <bloco-2>

Usualmente, os blocos de programação consistem de definições de funções (métodos). Por exemplo,

1class MinhaClasse:
2  def digaOla(self):
3    print('Olá, Mundo!')
4
5obj = MinhaClasse()
6obj.digaOla()

Neste código, temos a definição da classe MinhaClasse (linhas 1-3). Esta classe contém o método MinhaClasse.digaOla() (linhas 2-3). Obrigatoriamente, na definição de um método de uma classe deve conter o primeiro parâmetro self. Um objeto desta classe4242endnote: 42Uma nova instância da classe. e identificado por obj é alocado na linha 5. Na linha 6, este objeto chama seu método obj.digaOla().

O método especial __init__() é executado na construção de cada nova instância da classe (objeto da classe). Por exemplo,

1class Brasileira:
2  pais = 'Brasil'
3  def __init__(self, nome):
4    self.nome = nome
5
6  def digaOla(self):
7    print('\nOlá!')
8    print(f'Eu me chamo {self.nome}.')
9    print(f'Sou do {self.pais}. :)')
10
11x = Brasileira('Fulane')
12x.digaOla()
13y = Brasileira('Beltrane')
14y.digaOla()

Aqui, o atributo Brasileira.pais é compartilhada entre todas as instâncias da classe (objetos), enquanto que Brasileira.nome é um atributo de cada objeto. O método __init__() (linhas 3-4) é executada no momento da criação de cada nova instância (linhas 11 e 13).

Exemplo 7.1.1.

No seguinte código, começamos a definição de uma classe para a manipulação de triângulos.

Código 11: classTriangulo.py
1import matplotlib.pyplot as plt
2
3class Triangulo:
4  '''
5  Classe Triangulo ABC.
6  '''
7  num_lados = 3
8  def __init__(self, A, B, C):
9    # vértices
10    self.A = A
11    self.B = B
12    self.C = C
13
14  def plot(self):
15    fig = plt.figure()
16    ax = fig.add_subplot()
17    # lados
18    ax.plot([self.A[0], self.B[0]],
19            [self.A[1], self.B[1]], marker='o', color='blue')
20    ax.text((self.A[0]+self.B[0])/2,
21            (self.A[1]+self.B[1])/2, 'c')
22    ax.plot([self.B[0], self.C[0]],
23            [self.B[1], self.C[1]], marker='o', color='blue')
24    ax.text((self.B[0]+self.C[0])/2,
25            (self.B[1]+self.C[1])/2, 'a')
26    ax.plot([self.C[0], self.A[0]],
27            [self.C[1], self.A[1]], marker='o', color='blue')
28    ax.text((self.A[0]+self.C[0])/2,
29            (self.A[1]+self.C[1])/2, 'b')
30    # vertices
31    ax.text(self.A[0], self.A[1], 'A')
32    ax.text(self.B[0], self.B[1], 'B')
33    ax.text(self.C[0], self.C[1], 'C')
34    ax.grid()
35    plt.show()
36
37tria = Triangulo((0., 0.),
38                (2., 0.),
39                (1., 1.))
40tria.plot()

7.1.1 Exercícios

E. 7.1.1.

Considere o Código 11. Adicione o método calcLados(), que computa e aloca o comprimento de cada lado do triângulo.

Resposta.
1import numpy as np
2import matplotlib.pyplot as plt
3
4class Triangulo:
5  '''
6  Classe Triangulo ABC.
7  '''
8  num_lados = 3
9  def __init__(self, A, B, C):
10    # vértices
11    self.A = A
12    self.B = B
13    self.C = C
14    # lados
15    self.a = 0.
16    self.b = 0.
17    self.c = 0.
18
19  def calcLados(self):
20    self.a = np.sqrt((self.B[0]-self.C[0])**2\
21                      + (self.B[1]-self.C[1])**2)
22    self.b = np.sqrt((self.A[0]-self.C[0])**2\
23                      + (self.A[1]-self.C[1])**2)
24    self.c = np.sqrt((self.A[0]-self.B[0])**2\
25                      + (self.A[1]-self.B[1])**2)
E. 7.1.2.

Considere o Código 11. Adicione o método calcPerimetro(), que computa e retorna o valor do perímetro do triângulo.

Resposta.
1import numpy as np
2import matplotlib.pyplot as plt
3
4class Triangulo:
5
6  ...
7
8  def perimetro(self):
9    return self.a + self.b + self.c
10
11  ...
E. 7.1.3.

Considere o Código 11. Adicione o método calcAngulos(), que computa e aloca os ângulos do triângulo.

Resposta.

Dica: use a Lei dos Cossenos.

E. 7.1.4.

Considere o Código 11. Adicione o método area(), que computa a área do triângulo.

Resposta.

Dica: use o Teorema de Herão.

E. 7.1.5.

Similar a classe Triangulo (Código 11), implemente uma nova classe Quadrilateros com as seguintes propriedades e métodos de quadriláteros ABCD:

  1. a)

    vértices (tuples).

  2. b)

    lados (floats).

  3. c)

    cálculo do perímetro (método).

  4. d)

    cálculo da área (método).

  5. e)

    visualização gráfica (método +plot+).

E. 7.1.6.

Implemente uma classe para a manipulação de polinômios de segundo grau. A classe deve conter as seguintes propriedades e métodos:

  1. a)

    coeficientes (floats).

  2. b)

    cálculo do ponto de interseção com o eixo y (método).

  3. c)

    cálculo do vértice da parábola associada ao polinômio (método).

  4. d)

    cálculo das raízes do polinômio (método).

  5. e)

    plotagem do gráfico do polinômio (método).

Resposta.

Dica: utilize a notação p(x)=ax2+bx+c.


Envie seu comentário

As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a Política de Uso de Dados para mais informações. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!