+ Curso de C/C++ Aula 8 Instrutor: Luiz Felipe Sotero Material por: Allan Lima

Slides:



Advertisements
Apresentações semelhantes
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Advertisements

Centro Integrado de Tecnologia da Informação
Classes C++ Class nome da classe { private: membros privados
Prof.: Fabrício M. Melo Bom dia!! Informática para concursos Prof.: Fabrício M. Melo
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
Universidade Federal do Espírito Santo Programação II Estruturas Professora: Norminda Luiza.
Centro Integrado de Tecnologia da Informação
Curso de C/C++ Avançado
Centro Integrado de Tecnologia da Informação
Curso de C/C++ Avançado
Curso de C/C++ Avançado
Centro Integrado de Tecnologia da Informação
Curso de C/C++ Avançado
Centro Integrado de Tecnologia da Informação
Curso de C/C++ Avançado
Aula 8 Polimorfismo.
2002/2003 Programação Orientada para Objectos 1 Aula 4 Memória, unidade básica de memória e conceito de endereço Ponteiros Relação de ponteiros com matrizes.
UNIVERSIDADE ESTADUAL PAULISTA Júlio de Mesquita Filho Faculdade de Filosofia e Ciências – Campus de Marília Universidade Aberta à Terceira Idade Curso.
Tipos Agregados Homogêneos e Listas
Programação Orientada a Objetos com Java
Classes Revisando: –Forma de implementação de estruturas específicas –Atributos (grupos de dados) –Métodos (conjuntos de procedimentos)
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 13 Orientação a Objetos – C++ Parte 1
Aula prática 8 Ponteiros Monitoria de Introdução à Programação.
Aula prática - análise contextual
+ Java Web XIV Jornada de Cursos. Você pode: copiar, distribuir, exibir e executar a obra criar obras derivadas fazer uso comercial da obra Sob as seguintes.
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista
Linguagem de Programação II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Atributos, Encapsulamento e Interface em Java
Programação I Aula 2 (Métodos)
Paradigmas e Ferramentas de Desenvolvimento de Software – Revisão da linguagem C++ Lúbia Vinhas DPI - INPE.
+ Curso de C/C++ Aula 6 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
+ Curso de C/C++ Aula 7 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
Curso de C/C++ Aula 9 Instrutor: Luiz Felipe Sotero
Curso de C/C++ Aula 2 Instrutor: Luiz Felipe Sotero
+ Curso de C/C++ Aula 10 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
Erick Luis Moraes de Sousa
Linguagens de Programação II Aula 04 – Entendendo Classes
Generic Programming Daniel Terzella Leandro Amancio
Orientação a Objetos e Java Graduação em Ciência da Computação
Linguagem II Exceções.
Aula prática 14 Orientação a Objetos – C++ Parte 2
Implementação Orientada a Objetos – Aula 03
Centro Educacional Pioneiro
Orientação a Objetos usando Java
Polimorfismo.
Aula Prática 1 Monitoria IP/CC (~if669). Roteiro 1.Polimorfismo 2.Superclasses Abstratas 3.Dúvidas 4.Exercício.
Programação I Aula 1 Prof. Gilberto Irajá Müller Última atualização 2/3/2009.
Linguagem I Strings.
Gerador de Tabela-Verdade
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Bruno Inojosa MCP .NET Framework
Modificadores Programação II.
Aula Prática 13 Orientação a Objeto Monitoria
Malu Novo Apresenta Malu Novo Apresenta Maré baixa maré cheia... Maré baixa maré cheia...
FELIZ ANIVERSÁRIO Rondel Karla Michelle No céus há muita graça e alegria Bailam no ar lírios multicores.
Malubarni Apresenta Morrer de Amor Morrer de amor Junto ao teu calor.
Linguaguem de Programação II
Professor Maurício Maia
Sou de Você E. Book Formatação S ☼ LuNaMaRoSa Textos:
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista POO para Redes de Computadores.
Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin/ Marcia Bissaco Universidade de Mogi das Cruzes
Visual C# (parte 3) Prof. Igor Conrado Alves de Lima – Orientação a objetos, Modificadores de acesso, Lista (List), e tratamento.
INE5408 Estruturas de Dados Gerência de Arquivos -Propriedades de Árvores k-D.
Neusa Staut Apresenta Transição de Slides Automática.
Strings e Arrays Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Orientação a Objetos - Programação em C++
Transcrição da apresentação:

+ Curso de C/C++ Aula 8 Instrutor: Luiz Felipe Sotero Material por: Allan Lima

Você pode: copiar, distribuir, exibir e executar a obra criar obras derivadas fazer uso comercial da obra Sob as seguintes condições: Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante. Compartilhamento pela mesma Licença. Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta. Para cada novo uso ou distribuição, você deve deixar claro para outros os termos da licença desta obra. Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do autor. Veja aqui a licença completa

+ Roteiro Métodos virtuais Classes abstratas Templates

+ Métodos Virtuais Problema: Método area() Queremos que as classes Retangulo e Triangulo tenham métodos com implementações diferentes Poligono RetanguloTriangulo

+ Métodos Virtuais Solução: Declarar o método area() virtual virtual int area(); O modificador virtual permite que um ponteiro para uma classe básica possa chamar o método correto Exemplo: Triangulo t(45, 10); Poligono *pp = &t; cout << "Area de pp: " area() << endl;

+ Exemplo exemploMetodosVirtuais.cpp

+ Classes Abstratas São classe que não podem ter objetos instanciados Uma classe é dita abstrata quando possui pelo menos um método abstrato Um método abstrato é aquele que não é implementado na classe Usamos “ = 0 ” após o protótipo do método para torná-lo abstrato Exemplo: virtual int area() = 0;

+ Classes Abstratas Toda classe que herda de uma classe abstrata deve implementar os métodos abstratos Exceção: Quando a sub-classe também é abstrata Métodos abstratos podem ser utilizados normalmente em classes abstratas

+ Classes Abstratas exemploClassesAbstratas.cpp

+ Exercícios 1)Crie uma classe abstrata ElementoGeometrico com os seguintes métodos públicos virtuais: virtual float perimetro() = 0; virtual float area() = 0; Crie as classes Circulo e Quadrado que herdam de ElementoGeometrico e implementam os seus métodos Sinta-se a vontade para definir os atributos e construtores necessários para cada classe

+ Templates São mecanismos que permitem a definição genérica de funções e classes sem especificar os tipos de implementação Ajudam a reutilizar o código São muito bons para a construção de bibliotecas

+ Templates de Funções Definem um algoritmo genérico e independente de tipo Exemplo: Busca em um array Maximo entre elementos Ordenação de um array Mínimo entre elementos

+ Templates de Funções Permitem a criação de funções genéricas Recebendo qualquer tipo de dado como parâmetro Retornando qualquer tipo de dado Uma única função criada pode ser aplicada a qualquer tipo Sintaxe: template função;

+ Exemplo template T maximo(T a, T b) { return (a > b) ? a : b; } int a = maximo(10, 45) ; double d = maximo(10.5, 5.06); // como a e b devem ter o mesmo tipo utilizamos double c = maximo (5, 5.06);

+ Exemplo exemploTemplatesFuncoes.cpp

+ Templates de Classes Problema: Queremos criar uma classe Stack que pode ser de inteiros, floats, strings,..., ou qualquer outro tipo definido pelo programador Queremos criar uma classe Stack genérica Solução: Utilizar templates de classes template class Stack {... };

+ Exemplo exemploTemplatesClasses.cpp

+ Especialização de Templates Muitas vezes o comportamento genérico não é capaz resolver todos os problemas Exemplo: Stack sChar(10); E se liberarem a memória da string? Este objeto não cria cópias das strings, faz apenas cada elemento seu apontar para o mesmo endereço da string que foi passada como parâmetro Solução: Especialização de Templates

+ Exemplo // não precisamos mais do template void Stack ::push(char* &element) { if (this->nextIndex != -1) { this->elements[this->nextIndex] = new char[strlen(element) + 1]; strcpy(this->elements[this->nextIndex], element); this->nextIndex--; }

+ Especialização de Templates Também podemos especializar um Template de Classe ou uma função qualquer Assim garantimos o comportamento correto para tipos específicos

+ Exemplo exemploEspecializacaoTemplates.cpp

+ Especialização de Templates Podemos especializar Templates de classes É útil quando os comportamentos são muito diferentes Estas classes devem redefinir todos os membros para o tipo específico Também podemos criar novos membros Sintaxe: template <> class nomedaClasse {... };

+ Exemplo exemploEspecializacaoClasses.cpp

+ Exercícios 2)Crie um template chamado Vetor Esta classe irá guardar um array de elementos genéricos Os seus métodos são: void inserir(T &elemento); int procurarIndice(T &elemento); bool contem(T &elemento); void remover(T &elemento); Desafios: Faça a sua classe funcionar corretamente com char * Implemente o operador []

+ Referências Stroustrup, Bjarne. The C++ Programming Language, Special Edition Eckel, Bruce. Thinking in C++, 2nd ed. Volume 1 Slides de Gustavo do curso de

+ Agradecimentos Allan Lima, Breno do Vale e Francisco Magalhães Pelo material cedido para o curso