Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Classe e Objetos
Atributos e Funcionalidades
CLASSES E OBJETOS
Introduo
void print() {
cout << ano << "/" << mes << "/" << dia
}
};
Classes
Essa classe tem trs
#include <iostream>
atributos, do tipo int,...
void print() {
cout << ano << "/" << mes << "/" << dia;
}
};
Classes e arquivos .h
data.h main.cpp
#include <iostream>
#ifndef DATA_H
#include "data.h"
#define DATA_H
#include <iostream>
using namespace std;
using namespace std;
int main()
{
class Data{
Data dt;
public:
dt.ano = 2017;
int ano;
dt.mes = 05;
int mes;
dt.dia = 04;
int dia;
data.h data.cpp
#ifndef DATA_H
#define DATA_H
void print(void);
};
#endif
Classes e arquivos .h
#include <iostream> Salvamos declarao da
#include "data.h" classe em um arquivo .h
e inclumos o arquivo.
using namespace std;
system("pause");
return 0;
}
#include <iostream>
#include "data.h"
int main()
{
Data dt;
Um objeto uma instncia de
dt.ano = 2017;
uma classe;
dt.mes = 05;
Em outras palavras, um objeto
uma varivel do tipo definido dt.dia = 04;
pela classe;
Dessa forma, a classe como cout << "May the fourth be with you!"<< endl;
se fosse uma descrio de um dt.print();
tipo de varivel;
E as variveis desse tipo so system("pause");
os objetos.
return 0;
}
Objetos
Neste caso, cria-se
#include <iostream> o objeto como uma
#include "data.h" varivel
using namespace std;
A atribuio e acesso de atributos
int main() pblicos feita com o ponto (.)
{
Data dt;
dt.ano = 2017;
dt.mes = 05;
dt.dia = 04;
system("pause");
return 0;
}
O output...
Cada objeto tem seus atributos e funcionalidades, independente do outro
objeto.
Exemplo: funo do primeiro grau
#include <iostream>
class FuncFirst{
/*
Funcao na forma:
double calc(double x) {
double f_x;
f_x = a*x + b;
return f_x;
};
};
Exemplo: funo do primeiro grau
#include <iostream>
#include "func_first.h"
int main()
{ ... e ser chamadas de
FuncFirst f1; maneira semelhante a
double x1 = 1.0; funes.
double y1;
f1.a = 5;
f1.b = -2;
y1 = f1.calc(x1);
cout << "f(" << x1 << ") = " << y1 << endl;
system("pause");
return 0;
}
#ifndef PACIENTE_H_
#define PACIENTE_H_
paciente.h paciente.cpp
#ifndef PACIENTE_H_ #include <iostream>
#define PACIENTE_H_
#include "doutor.h"
#include <string> #include "paciente.h"
//#include "doutor.h"
using namespace std;
using namespace std;
doutor.h doutor.cpp
#ifndef DOUTOR_H_ #include <iostream>
#define DOUTOR_H_
#include "doutor.h"
#include <string> #include "paciente.h"
#include <vector>
//#include "paciente.h" void Doutor::add_paciente(Paciente* pac){
pacientes_vec.push_back(pac);
using namespace std;
}
class Paciente;
void Doutor::print_pacientes(){
class Doutor
{
cout << nome << " tem como pacientes: " << endl;
public: for(int k = 0; k < pacientes_vec.size(); ++k){
string nome; cout << (pacientes_vec[k])->nome << endl;
vector<Paciente*> pacientes_vec;
}
void add_paciente(Paciente* pac); }
void print_pacientes(void);
};
#endif
#include <iostream>
#include "paciente.h"
#include "doutor.h"
Dependncia Circular
int main() {
Doutor d1;
d1.nome = "Lucius Seneca";
Com isso, podemos usar as
classes normalmente; p1.add_doc(&d1);
Ainda assim, devemos inclui-las p2.add_doc(&d1);
onde forem utilizadas. d1.add_paciente(&p1);
d1.add_paciente(&p2);
p1.print_doc();
p2.print_doc();
d1.print_pacientes();
return 0;
}
Exerccio 1
Desenvolva a classe estudante, que deve conter, no mnimo, os atributos de nome, matricula e curso,
bem como um mtodo que imprime esses dados na tela. Faa tambm a classe disciplina, que deve
conter um container com todos os estudantes matriculados na disciplina, um mtodo para matricular
novos estudantes e um mtodo para imprimir os dados dos estudantes matriculados na tela. Faa uma
funo main que utilize ambas as classes.
Exerccio 2
Faa a classe frao, que deve ter os atributos numerador e denominador, alm de um mtodo que
multiplica duas fraes, retornando uma frao. Faa uma funo main para multiplicar duas fraes
pr definidas.
Exerccio 3
Faa uma classe que implementa uma funo do segundo grau na forma:
= 2 + +
na qual os parmetros a, b e c devem ser atributos da classe. A classe tambm deve conter um
mtodo que, dado um valor de x, o f(x) correspondente calculado. Faa uma funo principal
(main()) que cria um objeto de funo do segundo grau, inicializa a,b e c com valores fornecido pelo
usurio e imprime na tela f(x) para um x fornecido.
Exerccio 4
Modifique a classe do Exerccio 3 para tambm calcular as razes da funo de segundo grau atravs
da formula de Bhaskara:
2 4
=
2
Os containers pair (da biblioteca utility) e complex (biblioteca complex) podem ser uteis.
Exerccio 3
Faa uma classe que implementa uma funo do segundo grau na forma:
= 2 + +
na qual os parmetros a, b e c devem ser atributos da classe. A classe tambm deve conter um
mtodo que, dado um valor de x, o f(x) correspondente calculado. Faa uma funo principal
(main()) que cria um objeto de funo do segundo grau, inicializa a,b e c com valores fornecido pelo
usurio e imprime na tela f(x) para um x fornecido.
Exerccio 4
Modifique a classe do Exerccio 3 para tambm calcular as razes da funo de segundo grau atravs
da formula de Bhaskara:
2 4
=
2
Os containers pair (da biblioteca utility) e complex (biblioteca complex) podem ser uteis.
Gabarito Exerccio 1
Desenvolva a classe estudante, que deve conter, no mnimo, os atributos de nome, matricula e curso, bem como um
mtodo que imprime esses dados na tela. Faa tambm a classe disciplina, que deve conter um container com todos
os estudantes matriculados na disciplina, um mtodo para matricular novos estudantes e um mtodo para imprimir
os dados dos estudantes matriculados na tela. Faa uma funo main que utilize ambas as classes.
#ifndef ESTUDANTE_H
#define ESTUDANTE_H estudante.h class Estudante{
public:
#include <string> string m_nome;
#include <iostream> Curso m_curso;
unsigned int m_matricula;
using namespace std;
void imprimir_dados(void);
enum Curso{ string
ENGENHARIA_ELETRICA, curso_to_string(Curso);
FISICA, };
ENGENHARIA_DE_REDES,
COMPUTACAO, #endif
ADMINISTRACAO
};
Gabarito Exerccio 1
Desenvolva a classe estudante, que deve conter, no mnimo, os atributos de nome, matricula e curso, bem como um
mtodo que imprime esses dados na tela. Faa tambm a classe disciplina, que deve conter um container com todos
os estudantes matriculados na disciplina, um mtodo para matricular novos estudantes e um mtodo para imprimir
os dados dos estudantes matriculados na tela. Faa uma funo main que utilize ambas as classes.
estudante.cpp
#include <string>
#include <iostream>
#include "estudante.h"
void Estudante::imprimir_dados(void){
cout << m_nome << " " << curso_to_string(m_curso) << " " << m_matricula << endl;
}
Gabarito Exerccio 1
Desenvolva a classe estudante, que deve conter, no mnimo, os atributos de nome, matricula e curso, bem como um
mtodo que imprime esses dados na tela. Faa tambm a classe disciplina, que deve conter um container com todos
os estudantes matriculados na disciplina, um mtodo para matricular novos estudantes e um mtodo para imprimir
os dados dos estudantes matriculados na tela. Faa uma funo main que utilize ambas as classes.
class Disciplina{
public:
vector<Estudante> m_matriculados;
string m_nome;
void matricular(Estudante);
void imprimir_matriculados(void);
};
#endif
Gabarito Exerccio 1
Desenvolva a classe estudante, que deve conter, no mnimo, os atributos de nome, matricula e curso, bem como um
mtodo que imprime esses dados na tela. Faa tambm a classe disciplina, que deve conter um container com todos
os estudantes matriculados na disciplina, um mtodo para matricular novos estudantes e um mtodo para imprimir
os dados dos estudantes matriculados na tela. Faa uma funo main que utilize ambas as classes.
#include <iostream>
#include <string>
#include <vector> disciplina.cpp
#include "estudante.h"
#include "disciplina.h"
void Disciplina::imprimir_matriculados(void){
cout << "Matriculados na disciplina " << m_nome << ":" << endl;
for(int k = 0; k < m_matriculados.size(); ++k){
(m_matriculados[k]).imprimir_dados();
}
}
Gabarito Exerccio 1
Desenvolva a classe estudante, que deve conter, no mnimo, os atributos de nome, matricula e curso, bem como um
mtodo que imprime esses dados na tela. Faa tambm a classe disciplina, que deve conter um container com todos
os estudantes matriculados na disciplina, um mtodo para matricular novos estudantes e um mtodo para imprimir
os dados dos estudantes matriculados na tela. Faa uma funo main que utilize ambas as classes.
#include <iostream> cout << "Registrado o estudante: " << endl;
#include "estudante.h" main.cpp e2.imprimir_dados();
#include "disciplina.h"
cout << endl;
int main() {
Disciplina d1;
Estudante e1; d1.m_nome = "Calculo 1";
e1.m_nome = "John Snow"; d1.matricular(e1);
e1.m_curso = ENGENHARIA_ELETRICA; d1.matricular(e2);
e1.m_matricula = 11111;
d1.imprimir_matriculados();
cout << "Registrado o estudante: " << endl;
e1.imprimir_dados(); return 0;
}
Estudante e2;
e2.m_nome = "Daenerys Targaryen";
e2.m_curso = ADMINISTRACAO;
e2.m_matricula = 22222;
Gabarito Exerccio 2
Faa a classe frao, que deve ter os atributos numerador e denominador, alm de um mtodo que
multiplica duas fraes, retornando uma frao. Faa uma funo main para somar duas fraes pr
definidas.
#ifndef FRACAO_H
#define FRACAO_H fracao.h
class Fracao{
public:
double m_numerador;
double m_denominador;
#endif
Gabarito Exerccio 2
Faa a classe frao, que deve ter os atributos numerador e denominador, alm de um mtodo que
multiplica duas fraes, retornando uma frao. Faa uma funo main para somar duas fraes pr
definidas.
fracao.cpp
#include "fracao.h"
int main() {
fc = fa.multiplicar(fb);
cout << "O resultado e: " << fc.m_numerador << "/" << fc.m_denominador << endl;
return 0;
}
Gabarito Exerccio 3
Faa uma classe que implementa uma funo do segundo grau na forma:
= 2 + +
na qual os parmetros a, b e c devem ser atributos da classe. A classe tambm deve conter um
mtodo que, dado um valor de x, o f(x) correspondente calculado. Faa uma funo principal
(main()) que cria um objeto de funo do segundo grau, inicializa a,b e c com valores fornecido pelo
usurio e imprime na tela f(x) para um x fornecido.
#ifndef FUNC_SEC
#define FUNC_SEC func_sec.h func_sec.cpp
using namespace std; #include <cmath>
class FuncSecond{ #include "func_sec.h"
/*
Funcao na forma:
using namespace std;
f(x) = ax^2 + bx + c
*/ double FuncSecond::calc(double x) {
public:
double f_x;
double a;
double b; f_x = a*(pow(x,2.0)) + b*x + c;
double c;
return f_x;
double calc(double x); };
};
#endif
Gabarito Exerccio 3
Faa uma classe que implementa uma funo do segundo grau na forma:
= 2 + +
na qual os parmetros a, b e c devem ser atributos da classe. A classe tambm deve conter um
mtodo que, dado um valor de x, o f(x) correspondente calculado. Faa uma funo principal
(main()) que cria um objeto de funo do segundo grau, inicializa a,b e c com valores fornecido pelo
usurio e imprime na tela f(x) para um x fornecido.
#include <iostream>
#include <locale.h> cout << "Informe o parmetro b: ";
#include "func_sec.h" cin >> f1.b;
class FuncSecond{ /*
Funcao na forma:
f(x) = ax^2 + bx + c
*/
Gabarito Exerccio 4
Modifique a classe do Exerccio 3 para tambm calcular as razes da funo de segundo grau atravs
da formula de Bhaskara.
second_solve.cpp
pair<complex<double>,complex<double>> polynomial::FuncSecond::roots()
#include <complex> {
#include <utility> pair< complex<double>,complex<double> > rts;
#include "second_solve.h" complex<double> delta;
int main()
{
using namespace polynomial;
FuncSecond f1;
double x1;
pair< complex<double>,complex<double> > rts;
string sig;
rts = f1.roots();
system("pause");
return 0;
}