| | | |

Minicurso de C++ para Matemática

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

5.1 Classes e Objetos

C++ é uma linguagem de programação orientada a objetos. Neste paradigma, os códigos são organizados em classes que definem uma estrutura de dados e métodos. Uma classe pode ser vista como um modelo para a construção de objetos que possuem dados e métodos. A criação de uma classe é feita com a seguinte sintaxe:

1class NomeDaClasse {
2 // atributos e métodos privados
3 tipoVar nomeVar;
4 tipoSaida nomeFunc(tipoEntrada) {
5 // corpo da função
6 }
7public:
8 // Construtor
9 NomeDaClasse(/* parâmetros */) {
10 // corpo do construtor
11 };
12
13 // atributsos e métodos públicos
14
15 // Destrutor
16 ~NomeDaClasse() {
17 // corpo do destrutor
18 };
19};

Um objeto é uma instância de uma classe e é declaro com a seguinte sintaxe:

1NomeDaClasse nomeObjeto(/* parâmetros */);

Na criação, o método construtor é chamado, e quando o objeto sai do escopo, o destrutor é chamado. O construtor é um método especial que tem o mesmo nome da classe e não tem tipo de retorno. O destrutor também é um método especial que tem o mesmo nome da classe precedido por um til ( ) e também não tem tipo de retorno.

Exemplo 5.1.1.

O seguinte código define uma classe Ponto2D que representa um ponto no espaço cartesiano bidimensional xy. Ela também contém um método para o cálculo da distância entre dois pontos.

Código 23: Ponto2D.cpp
1#include <iostream>
2#include <cmath>
3
4class Ponto2D {
5
6 // atributos
7 double coord_x, coord_y;
8
9public:
10
11 // construtor
12 Ponto2D(double x, double y)
13 : coord_x(x), coord_y(y) {}
14
15 // métodos
16 double x() const {
17 return coord_x;
18 }
19
20 double y() const {
21 return coord_y;
22 }
23
24 double distancia(const Ponto2D& P) const {
25 return std::sqrt(\
26 std::pow(coord_x - P.x(), 2) \
27 + std::pow(coord_y - P.y(), 2));
28 }
29};
30
31int main()
32{
33 // A = (-1, -2)
34 Ponto2D A(-1.0, -2.0);
35 // B = (2, 1)
36 Ponto2D B(2.0, 1.0);
37
38 std::cout << "dist(A,B): "
39 << A.distancia(B) << std::endl;
40
41 return 0;
42}
dist(A,B): 4.24264
E. 5.1.1.

Crie uma classe Poly1 para manipulação de polinômios de grau 1

p(x)=a1x+a0. (5.1)

A classe deve conter os seguintes métodos:

  • Construtor que recebe os coeficientes a1 e a0.

  • Método double avalia(double x) que retorna o valor do polinômio em x.

  • Método double derivada(double x) que retorna o valor da derivada do polinômio em x.

  • Método double raiz() que retorna a raiz do polinômio.


Código 24: Poly1.cpp
1class Poli1 {
2
3 double coef_a0;
4 double coef_a1;
5
6public:
7
8 Poli1(double a1, double a0)
9 : coef_a1(a1), coef_a0(a0) {}
10
11 double a0() const {
12 return coef_a0;
13 }
14
15 double a1() const {
16 return coef_a1;
17 }
18
19 double avalia(double x) const {
20 return coef_a1 * x + coef_a0;
21 }
22
23 double derivada(double x) const {
24 return coef_a1;
25 }
26
27 double raiz() const {
28 return -coef_a0 / coef_a1;
29 }
30};

Envie seu comentário

Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!

Opcional. Preencha seu nome para que eu possa lhe contatar.
Opcional. Preencha seu e-mail para que eu possa lhe contatar.
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.

Licença Creative Commons
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.

Pedro H A Konzen
| | | |