{joseana, rangel}@dsc.ufcg.edu.br
DSC/CCT/UFCG
Prof.: José Eustáquio Rangel de Queiroz
[email protected]
[email protected]
Carga Horária: 60 horas
Classes
DSC/CCT/UFCG

Classe  Similar a um tipo Struct, porém
contendo variáveis-membros e funções-membros
 Structs

Definição de variáveis

Criação de funções “globais” para manipulação
das variáveis
{joseana, rangel}@dsc.ufcg.edu.br
 Classes

Definição de variáveis e funções para manipulação
dessas variáveis
2
Classes
DSC/CCT/UFCG

Struct x Class
{joseana, rangel}@dsc.ufcg.edu.br
struct Data{
int dia;
int mes;
int ano;
};
class Data{
public:
int dia;
int mes;
int ano;
};
3
DSC/CCT/UFCG
Estruturas e Funções Globais
#include <iostream>
using namespace std;
struct Data{
int dia;
int mes;
int ano;
};
void lerData(Data &d){
cout << "Informe o dia: ";
cout << "Informe o mes: ";
cout << "Informe o ano: ";
}
cin >> d.dia;
cin >> d.mes;
cin >> d.ano;
{joseana, rangel}@dsc.ufcg.edu.br
void exibirData(Data &d){
cout << "Dia: " << d.dia << "\n";
cout << "Mes: " << d.mes << "\n";
cout << "Ano: " << d.ano << "\n";
}
int main(){
Data d1;
Acesso aos membros da
estrutura
a
partir
do
operador ponto (.)
variavelEstrutura.variavel
lerData(d1);
exibirData(d1);
}
system("PAUSE");
return 0;
4
DSC/CCT/UFCG
Classes com Variáveis e
Funções
#include <iostream>
using namespace std;
{joseana, rangel}@dsc.ufcg.edu.br
//Interface
class Data{
public:
int dia;
int mes;
int ano;
void lerData();
void exibirData();
};
Acesso
às
funçõesmembros da classe a partir
do operador ponto (.)
Objeto.funcao-membro()
//Aplicacao
int main(){
//Funções-membros (ou metodos)
void Data::lerData(){
cout << "Informe o dia: ";
cin >> dia;
cout << "Informe o mes: ";
cin >> mes;
cout << "Informe o ano: ";
cin >> ano;
}
void Data::exibirData(){
cout << "Dia: " << dia << "\n";
cout << "Mes: " << mes << "\n";
cout << "Ano: " << ano << "\n";
}
Data d1;
d1.lerData();
d1.exibirData();
}
system("PAUSE");
return 0;
Acesso direto às variáveis
da
classe
por
suas
funções-membros
5
DSC/CCT/UFCG

Definição de Classes
Definição de Classes
{joseana, rangel}@dsc.ufcg.edu.br
class Data{
public:
int dia;
int mes;
int ano;
void lerData();
void exibirData();
};
6
DSC/CCT/UFCG

Criação de e Acesso a Objetos
Criação de objetos (instância de classes):
Data d1, d2, d3;

Acesso a dados de um objeto:
{joseana, rangel}@dsc.ufcg.edu.br
d1.dia = 30;
d1.mes= 15;
d1.ano = 2007;
d1.lerData();
d1.exibirData();
7
DSC/CCT/UFCG

Implementação de funçõesmembros
Definição dos protótipos de funções-membros
dentro da classe
class Data{
public:
..
.
{joseana, rangel}@dsc.ufcg.edu.br
};
void lerData();
void exibirData();
8
Implementação de funçõesmembros
DSC/CCT/UFCG

Implementar das funções-membros da classe
 Uso do operador de resolução de escopo ou
qualificador de tipo (::)

Associação da implementação da função a uma
determinada classe

Sintaxe:
{joseana, rangel}@dsc.ufcg.edu.br
tipo_retorno Classe::funcao-membro(){
..
.
}
void Data::lerData(){
..
.
}
void Data::
exibirData(){
..
.
}
9
DSC/CCT/UFCG

Acesso a Variáveis da Classe
Funções-membros da classe acessam diretamente
variáveis da classe
 Cada objeto tem seu próprio “estado”  Valores
assumidos pelas variáveis em um dado instante
{joseana, rangel}@dsc.ufcg.edu.br
void Data::exibirData(){
cout << "Dia: " << dia << "\n";
cout << "Mes: " << mes << "\n";
cout << "Ano: " << ano << "\n";
}
 Objetos acessam as variáveis e os métodos
utilizando o operador ponto (.)
Data d1;
d1.dia = 30;
d1.exibirData();
10
Exercício 01
DSC/CCT/UFCG
Dada a definição da classe DiaDoAno, implementar
as funções-membro (métodos) e testar a classe.
{joseana, rangel}@dsc.ufcg.edu.br
class DiaDoAno{
public:
int dia;
int mes;
void entrada();
void saida();
};
Entrada de dados  Informação numérica, e.g., Digite o
dia: 04, Digite o mês: 11
Saída de dados  Apresentação em modo texto, e.g., Dia
digitado: 04 de novembro
11
DSC/CCT/UFCG
Exercício 02
Dada a definição da classe Temperatura, escrever
uma definição apropriada para a função-membro
converteTemp e testar a classe.
{joseana, rangel}@dsc.ufcg.edu.br
class Temp{
public:
double graus;
char escala;
void converteTemp(double grau, char escala);
};
12
DSC/CCT/UFCG
Exercício 03
Seja a classe Aluno com 4 variáveis de instância e 3
métodos:
{joseana, rangel}@dsc.ufcg.edu.br
 Método lerDados()  Lê os dados do aluno
 Método exibirDados()  Apresenta em tela os dados
do aluno
 Método
computarMedia()

Recebe
como
parâmetros 3 notas e retorna a média do aluno,
acompanhada do status aprovado por média,
reprovado por média ou na final.
Implementar a classe e seus métodos e testar a
classe.
13
Membros públicos e
privados
DSC/CCT/UFCG

Criação de uma classe  Possibilidade de
definição de membros (variáveis e funções)
públicos e privados
 Membros públicos

Todas as variáveis e funções são visíveis aos
objetos
{joseana, rangel}@dsc.ufcg.edu.br


Exemplo:
d1.mes = 10;
d1.lerData();
Acesso às variáveis e funções e possibilidade
de alteração de seus valores

Exemplo: Fornecimento
(d1.mes = 15)
de
um
dia
inválido
14
Membros públicos e
privados
DSC/CCT/UFCG

Criação de uma classe  Possibilidade de
definição de membros (variáveis e funções)
públicos e privados
{joseana, rangel}@dsc.ufcg.edu.br
 Membros privados

Visibilidade das variáveis apenas dentro das
funções da mesma classe

Tratamento dos dados pelas funções

Exemplo: Impedir a entrada de um mês
inválido
15
Membros públicos e
privados
DSC/CCT/UFCG

Exemplo 01 – Uso de membros públicos
 Acesso total a todos os campos e métodos
 Visibilidade
{joseana, rangel}@dsc.ufcg.edu.br
dos
programadores
class Data{
public:
int dia;
int mes;
int ano;
void lerData();
void exibirData();
};
campos
da
classe
aos
Data d1;
d1.dia = 30;
d1.mes = 15;
d1.ano = 2007;
d1.lerData();
d1.exibirData();
16
DSC/CCT/UFCG

Membros públicos e
privados
Exemplo 02 – Uso de membros privados
 Impossibilidade de acesso dos campos e funções
na região privada da classe
 Acesso de todas as funções da classe aos
campos e funções privados da classe
 Ocultação dos detalhes de implementação de uma
{joseana, rangel}@dsc.ufcg.edu.br
classe do programador que utiliza a classe 
Encapsulação dos dados
class Data{
int dia;
int mes;
int ano;
public:
void lerData();
void exibirData();
};
Data d1;
d1.dia = 30;
d1.mes = 15;
d1.ano = 2007;
d1.lerData();
d1.exibirData();
17
DSC/CCT/UFCG
Joseana Macêdo Fechine
José Eustáquio Rangel de Queiroz
{joseana, rangel}@dsc.ufcg.edu.br
{joseana, rangel}@dsc.ufcg.edu.br
UNIVERSIDADE FEDERAL DE CAMPINA GRANDE
CENTRO DE CIÊNCIAS E TECNOLOGIA
DEPARTAMENTO DE SISTEMAS E
COMPUTAÇÃO
Download

d1.exibirData() - Computação UFCG