Curso de C/C++ Avançado

Slides:



Advertisements
Apresentações semelhantes
ABSTRAÇÃO processo de representar um grupo de entidades através de seus atributos comuns feita a abstração, cada entidade particular (instância) do grupo.
Advertisements

Centro Integrado de Tecnologia da Informação
PHPOO Erick Souza. Conceitos de Orientação a Objetos Objeto é um conceito ou item(concreto ou abstrato). Software orientado a objetos Uma classe é uma.
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS CLASSES E OBJETOS – UMA VISÃO MAIS APROFUNDADA Prof. Thiago Pereira Rique
1 Orientação a Objetos: Herança Alcides Calsavara.
Sobrecarga de Operadores
Diagrama de Classes.
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
Aula 8 Polimorfismo.
UNIVERSIDADE ESTADUAL PAULISTA Júlio de Mesquita Filho Faculdade de Filosofia e Ciências – Campus de Marília Universidade Aberta à Terceira Idade Curso.
Curso de extensão em Desenvolvimento Web
Linguagem de Programação II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Programação Orientada a Objetos com Java
Aula prática 13 Orientação a Objetos – C++ Parte 1
+ 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
Linguagens de Programação
Sobrecarga e Encapsulamento
Tópicos avançados em internet A
Linguagem de Programação II
GNU / LICENÇA PÚBLICA GERAL. Quando nós falamos de software livre, nós estamos a referir- nos à liberdade, não ao preço. As nossas Licenças Publicas Gerais.
Linguagem C++ - Introdução
Atributos, Encapsulamento e Interface em Java
Aula 3 CoL, atividade Polimorfismo (late binding) Modificador final Modificador abstract Interfaces Herança múltipla Atribuição, Construtores, Destrutores,
Programação I Aula 2 (Métodos)
+ 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 8 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
Classes, Objetos, Atributos e Métodos JAVA
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
Linguagens de Programação II Aula 04 – Entendendo Classes
Linguagens de Programação II
if669 - Introdução à Programação
Programação orientada a objectos em C++
2002/2003 Programação Orientada para Objectos 1 Aula 6 Classes que reservam recursos externos Problemas comuns Construtores e destrutores Construção por.
Aula prática 14 Orientação a Objetos – C++ Parte 2
Centro Educacional Pioneiro
Orientação a Objetos usando Java
Aula Prática 4 Monitoria IP/CC (~if669).
Programação I Aula 1 Prof. Gilberto Irajá Müller Última atualização 2/3/2009.
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
Herança.
Malu Novo Apresenta Malu Novo Apresenta Maré baixa maré cheia... Maré baixa maré cheia...
Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada.
Maysa Apresenta Contrato Escolha? Acaso? Destino? Não sabemos...
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.
Maysa Apresenta O Grito pede Socorro O grito é uma voz que ecoa... Das montanhas pede socorro... É uma voz sumida...
Módulo II Capítulo 1: Orientação a Objetos
Professor Maurício Maia
Sou de Você E. Book Formatação S ☼ LuNaMaRoSa Textos:
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
INE5408 Estruturas de Dados Gerência de Arquivos -Propriedades de Árvores k-D.
Neusa Staut Apresenta Transição de Slides Automática.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Curso de C/C++ Avançado Aula 6 – this, Membros Estáticos, Friends, Métodos Virtuais, Overload de Operadores Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com 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 Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com O ponteiro this É um atributo que toda classe possui Ele é um ponteiro para o objeto no qual um membro esta sendo executado. Exemplo: Ponto::Ponto(float x, float y) { this->x = x; this->y = y; } Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Membros Estáticos São membros que possuem apenas uma cópia compartilhada por todos os objetos de um tipo Podem ser métodos ou atributos: Atributos estáticos devem ser definidos dentro da própria classe e inicializados fora dela Métodos estáticos só podem fazer referência a atributos estáticos. Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Exemplo exemploStatic.cpp Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Friends Permitem a quebra dos níveis de acesso pelas palavras reservadas private e protected Podemos ter funções, métodos ou classes friends As declarações são feitas através da palavra reservada friend Toda classe é friend dela mesma Exemplo: exemploFriend.cpp Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Métodos Virtuais Poligono Retangulo Triangulo Problema: Método area() Queremos que as classes Retangulo e Triangulo tenham o método area() com implementações diferentes Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Métodos Virtuais Por padrão, C++ não “ativa” dynamic binding Com isto ganhamos muita performance Mas temos que dizer exatamente quais são os métodos que devem possui o dynamic binding Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com 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: " << pp->area() << endl; Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Exemplo exemploMetodosVirtuais.cpp Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Métodos Virtuais Dica importante: Declare os destrutures das suas classes como virtuais Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Classes Abstratas São classes 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; Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com 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 Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Classes Abstratas exemploClassesAbstratas.cpp Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Interfaces C++ não possui o conceito de interface Mas podemos simular uma interface com uma classe abstrata em que todos os métodos são abstratos Usando herança múltipla podemos “implementar” várias interfaces Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Exemplo exemploInterfaces.cpp Allan Lima – http://allanlima.wordpress.com

Overload de Operadores C++ permite a aplicação de alguns operadores aos tipos que nós criamos Operadores como o “=” são criados automaticamente Porém outros devem ser implementados pelo programador Sintaxe: tipo operator símbolo(parâmetros); Allan Lima – http://allanlima.wordpress.com

Overload de Operadores Operadores podem ser sobrecarregados de diversas formas Podemos implementar os operadores como funções ou membros de classes Quando o primeiro parâmetro não é do tipo da própria classe o operador deve ser implementado como uma função Allan Lima – http://allanlima.wordpress.com

Overload de Operadores Podemos implementar várias vezes o mesmo operador para diversos tipos: Ponto operator + (Ponto &v); Ponto operator + (float v); Agora podemos escrever: Ponto p3 = p1 + p2; Ponto p4 = p1 + 15.0f Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Exemplo exemploOperadores1.cpp exemploOperadores2.cpp Allan Lima – http://allanlima.wordpress.com

Overload de Operadores C++ permite a sobrecarga dos seguintes operadores: Unários: + - * ! ~ & ++ -- () -> ->* new delete Binários: / % | ^ << >> = += -= /= %= &= |= ^= <<= >>= = = != < > <= >= && || [] , Allan Lima – http://allanlima.wordpress.com

Overload de Operadores Operadores que não podem ser sobrecarregados: . (Ponto) *, **, *** ... Não podemos criar novos operadores Não podemos modificar a tabela de precedência dos operadores Allan Lima – http://allanlima.wordpress.com

Onde declarar os operadores? Murray, sugere os seguintes guidelines: Operador Implementação Unários Método = () [] -> ->* Deve ser um método += –= /= *= ^= &= |= %= >>= <<= Demais operadores binários Função Rob Murray, C++ Strategies & Tactics, Addison-Wesley, 1993, page 47. Allan Lima – http://allanlima.wordpress.com

Overload de Operadores Overload de operadores pode ser muito bom para tornar o código mais legível Para isto temos que tomar cuidado com a semântica de cada operador sobrecarregado Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Exercícios 1)Crie uma classe ElementoGeometrico com os seguintes métodos públicos virtuais: float virtual perimetro() const = 0; float virtual area() const = 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 Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Exercícios 2) Crie uma classe Ponto e implemente os seguintes operadores: == != + (para dois pontos e um ponto + um float) - (para dois pontos e um ponto - um float) Allan Lima – http://allanlima.wordpress.com

Allan Lima – http://allanlima.wordpress.com Referências Stroustrup, Bjarne. The C++ Programming Language, Special Edition. Eckel, Bruce. Thinking in C++, 2nd ed. Volume 1. Slides de Gustavo (ghpc@cin.ufpe.br)do curso de C/C++ Allan Lima – http://allanlima.wordpress.com