A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Técnicas de Programação

Apresentações semelhantes


Apresentação em tema: "Técnicas de Programação"— Transcrição da apresentação:

1 Técnicas de Programação
Revisão e Exercícios Prof.: José Eustáquio Rangel de Queiroz Carga Horária: 60 horas

2 Classes 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 Classes Definição de variáveis e funções para manipulação dessas variáveis

3 Classes Struct x Class struct Data{ class Data{ int dia; public:
int mes; int ano; }; class Data{ public: int dia; int mes; int ano; };

4 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: "; cin >> d.dia; cout << "Informe o mes: "; cin >> d.mes; cout << "Informe o ano: "; cin >> d.ano; } void exibirData(Data &d){ cout << "Dia: " << d.dia << "\n"; cout << "Mes: " << d.mes << "\n"; cout << "Ano: " << d.ano << "\n"; int main(){ Data d1; lerData(d1); exibirData(d1); system("PAUSE"); return 0; Acesso aos membros da estrutura a partir do operador ponto (.) variavelEstrutura.variavel

5 Classes com Variáveis e Funções
#include <iostream> using namespace std; //Interface class Data{ public: int dia; int mes; int ano; void lerData(); void exibirData(); }; //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::exibirDados(){ cout << "Dia: " << dia << "\n"; cout << "Mes: " << mes << "\n"; cout << "Ano: " << ano << "\n"; Acesso às funções-membros da classe a partir do operador ponto (.) Objeto.funcao-membro() //Aplicacao int main(){ Data d1; d1.lerData(); d1.exibirData(); system("PAUSE"); return 0; } Acesso direto às variáveis da classe por suas funções-membros

6 Definição de Classes Definição de Classes class Data{ public: int dia;
int mes; int ano; void lerData(); void exibirDados(); };

7 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: d1.dia = 30; d1.mes = 15; d1.ano = 2007; d1.lerData(); d1.exibirData();

8 Implementação de funções-membros
Definição dos protótipos de funções-membros dentro da classe class Data{ public: . void lerData(); void exibirDados(); };

9 Implementação de funções-membros
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: tipo_retorno Classe::funcao-membro(){ . } void Data::lerData(){ . } void Data:: exibirDados(){

10 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 Objetos acessam as variáveis e os métodos utilizando o operador ponto (.) void Data::exibirData(){ cout << "Dia: " << dia << "\n"; cout << "Mes: " << mes << "\n"; cout << "Ano: " << ano << "\n"; } Data d1; d1.dia = 30; d1.exibirData();

11 Exercício 01 Dada a definição da classe DiaDoAno, implementar as funções-membro (métodos) e testar a classe. 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 #include <iostream> using namespace std; class DiaDoAno{ public: int dia; int mes; void entrada(); void saida(); }; void DiaDoAno::entrada(){ cout << "Informe o dia: "; cin >> dia; cout << "Informe o mes: "; cin >> mes; } void DiaDoAno::saida(){ cout << "Dia informado: "; cout << dia << " de "; switch(mes){ case 1: cout << "Janeiro"; break; case 2: cout << "Fevereiro"; break; case 3: cout << "Marco"; break; case 4: cout << "Abril"; break; case 5: cout << "Maio"; break; case 6: cout << "Junho"; break; case 7: cout << "Julho"; break; case 8: cout << "Agosto"; break; case 9: cout << "Setembro"; break; case 10: cout << "Outubro"; break; case 11: cout << "Novembro"; break; case 12: cout << "Dezembro"; break; default: cout << " ---- "; int main(){ DiaDoAno d1; d1.entrada(); cout << endl; d1.saida(); system("PAUSE"); return 0;

12 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. class Temp{ public: double graus; char escala; void converteTemp(double grau, char escala); }; #include <iostream> using namespace std; class Temperatura{ public: double graus; //um número representando uma temperatura char escala; //'F' para graus Fahrenheit ou 'C' para graus Celcius void set(double novoGrau, char novaEscala); }; void Temperatura::set(double novoGrau, char novaEscala){ graus = novoGrau; escala = toupper(novaEscala); } void exibirTemperatura(Temperatura t1){ cout << "Graus: " << t1.graus; if (t1.escala == 'C') cout << " C"; else cout << " F"; cout << endl; int main(){ Temperatura t; t.graus = 50; t.escala = toupper('c'); exibirTemperatura(t); t.set(100, 'f'); system("PAUSE"); return 0; class DiaDoAno{ int dia; int mes; void entrada(); void saida(); void DiaDoAno::entrada(){ cout << "Informe o dia: "; cin >> dia; cout << "Informe o mes: "; cin >> mes; void DiaDoAno::saida(){ cout << "Dia informado: "; cout << dia << " de "; switch(mes){ case 1: cout << "Janeiro"; break; case 2: cout << "Fevereiro"; break; case 3: cout << "Marco"; break; case 4: cout << "Abril"; break; case 5: cout << "Maio"; break; case 6: cout << "Junho"; break; case 7: cout << "Julho"; break; case 8: cout << "Agosto"; break; case 9: cout << "Setembro"; break; case 10: cout << "Outubro"; break; case 11: cout << "Novembro"; break; case 12: cout << "Dezembro"; break; default: cout << " ---- "; DiaDoAno d1; d1.entrada(); d1.saida();

13 Exercício 03 Seja a classe Aluno com 4 variáveis de instância e 3 métodos: 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. #include <iostream> #include <string> using namespace std; class Funcionario{ public: int codigo; string nome; string endereco; double salario; void lerDados(); void exibirDados(); double calcularSalario(double porcentagem); }; void Funcionario::lerDados(){ cout << "LENDO DADOS DO FUNCIONARIO" << endl; cout << "Codigo: "; cin >> codigo; fflush(stdin); cout << "Nome: "; getline(cin, nome); fflush(stdin); cout << "Endereco: "; getline(cin, endereco); fflush(stdin); cout << "Salario: "; cin >> salario; fflush(stdin); cout << endl; } void Funcionario::exibirDados(){ cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(2); cout << "DADOS DO FUNCIONARIO" << endl; cout << "Codigo: " << codigo << endl; cout << "Nome: " << nome << endl; cout << "Endereco: " << endereco << endl; cout << "Salario: " << salario << endl; double Funcionario::calcularSalario(double porcentagem){ double valor; valor = (salario / porcentagem) + salario; return valor; int main(){ Funcionario f; f.lerDados(); f.exibirDados(); cout << "\n Salario com 10% de acrescimo: " << f.calcularSalario(10); system("PAUSE"); return 0; class Temperatura{ double graus; //um número representando uma temperatura char escala; //'F' para graus Fahrenheit ou 'C' para graus Celcius void set(double novoGrau, char novaEscala); void Temperatura::set(double novoGrau, char novaEscala){ graus = novoGrau; escala = toupper(novaEscala); void exibirTemperatura(Temperatura t1){ cout << "Graus: " << t1.graus; if (t1.escala == 'C') cout << " C"; else cout << " F"; Temperatura t; t.graus = 50; t.escala = toupper('c'); exibirTemperatura(t); t.set(100, 'f'); class DiaDoAno{ int dia; int mes; void entrada(); void saida(); void DiaDoAno::entrada(){ cout << "Informe o dia: "; cin >> dia; cout << "Informe o mes: "; cin >> mes; void DiaDoAno::saida(){ cout << "Dia informado: "; cout << dia << " de "; switch(mes){ case 1: cout << "Janeiro"; break; case 2: cout << "Fevereiro"; break; case 3: cout << "Marco"; break; case 4: cout << "Abril"; break; case 5: cout << "Maio"; break; case 6: cout << "Junho"; break; case 7: cout << "Julho"; break; case 8: cout << "Agosto"; break; case 9: cout << "Setembro"; break; case 10: cout << "Outubro"; break; case 11: cout << "Novembro"; break; case 12: cout << "Dezembro"; break; default: cout << " ---- "; DiaDoAno d1; d1.entrada(); d1.saida();

14 Membros públicos e privados
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 Exemplo: d1.mes = 10; d1.lerDados(); Acesso às variáveis e funções e possibilidade de alteração de seus valores Exemplo: Fornecimento de um dia inválido (d1.mes = 15)

15 Membros públicos e privados
Criação de uma classe  Possibilidade de definição de membros (variáveis e funções) públicos e privados 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

16 Membros públicos e privados
Exemplo 01 – Uso de membros públicos Acesso total a todos os campos e métodos Visibilidade dos campos da classe aos programadores class Data{ public: int dia; int mes; int ano; void lerData(); void exibirData(); }; Data d1; d1.dia = 30; d1.mes = 15; d1.ano = 2007; d1.lerDados(); d1.exibirDados();

17 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 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.lerDados(); d1.exibirDados();

18 {joseana, rangel}@dsc.ufcg.edu.br
Joseana Macêdo Fechine José Eustáquio Rangel de Queiroz {joseana, UNIVERSIDADE FEDERAL DE CAMPINA GRANDE CENTRO DE CIÊNCIAS E TECNOLOGIA DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO


Carregar ppt "Técnicas de Programação"

Apresentações semelhantes


Anúncios Google