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

Slides:



Advertisements
Apresentações semelhantes
Curso de aprofundamento na linguagem C
Advertisements

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.
Programação Orientada a Objetos*
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Centro Integrado de Tecnologia da Informação
Paulo Marques Hernâni Pedroso
Algoritmos e Programação Linguagens de Programação Teoria Aula (09/06)
Programação Básica em Java
INF Computação Gráfica
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
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
Classes e objetos P. O. O. Prof. Grace.
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
CRIANDO OBJETOS EM JAVA
Programação Orientada a Objetos com Java
Aula prática 13 Orientação a Objetos – C++ Parte 1
Aula prática 8 Ponteiros Monitoria de Introdução à Programação.
+ 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
PROGRAMAÇÃO ESTRUTURADA II
JAVA Orientação a Objetos
Programação I Aula 2 (Métodos)
+ 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
Tipos Abstratos de Dados
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
Técnicas de Desenvolvimento de Programas
Aula Prática 1 Monitoria IP/CC (~if669). Verificação Dinâmica de Tipos Métodos de superclasses e subclasses: Uso de métodos de subclasses quando se é.
Aula prática 14 Orientação a Objetos – C++ Parte 2
Modularização Dividir um problema em subproblemas Módulos menores facilita a depuração Dividir o desenvolvimento entre vários programadores “Reutilização”
Estruturas de Dados Aula 17: Estruturas Genéricas
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Prof.: Bruno Rafael de Oliveira Rodrigues. Construtor é bloco declarado que é chamado no momento em que o Objeto é criado (instanciado). Todas as classes.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Programação I Aula 1 Prof. Gilberto Irajá Müller Última atualização 2/3/2009.
Linguagem I Strings.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Linguagens de Programação
Aula Prática 3 Funções Monitoria Introdução à Programação.
Construtores e Destrutores
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
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.
Modificadores Programação II.
Introdução ao C++ para programadores OO Instrutores: Francisco Carvalho, João Paulo do Monte, Renato Viana Ferreira {fcfl, jpsml,
Conceitos de OO em Java Parte I
Módulo II Capítulo 1: Orientação a Objetos
Estrutura de Dados Revisão Professor Luiz José Hoffmann Filho
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Linguagem de Programação
Tipo Abstrato de Dados (TAD) Estrutura de Dados Professor: Rodrigo Alves Sarmento Professor: André Cypriano.
Estrutura de Dados Prof. André Cypriano M. Costa
Felipe Nunes Flores – Programa de Educação Tutorial.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
Transcrição da apresentação:

+ Curso de C/C++ Aula 6 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 História da linguagem C++ Diferenças entre C e C++ Declaração de Classes Ponteiros para Classes

+ O Surgimento de C++ Criada no Bell Labs em 1983 Por Bjarne StroustrupBjarne Stroustrup Possui a performance de C E as funcionalidades de outras linguagens como Simula e Algol Padronizada apenas em 1997 Bjarne Stroustrup

+ Comparativo entre C e C++ Foi criada para ser C++ é uma extensão de C Mas não é 100% compatível com C C++ C

+ Comparativo entre C e C++ CC++ EstruturadaOrientada a Objetos malloc e calloc new freedelete Passagem por valorPassagem por valor ou referência stdioiostream Variáveis declaradas no início de um bloco Variáveis declaradas em qualquer parte do bloco

+ Comparativo entre C e C++ CC++ Inteiro como valor booleanoTipo bool Duas funções não podem ter o mesmo nomeDuas funções não podem ter o mesmo protótipo Argumentos são sempre necessáriosValor defaut para os argumentos Casts simplesNovos tipos de cast string como array de caracteresTipo string

+ Exemplos hello.cpp comparativo.cpp

+ Modelando um Retângulo em C struct Retangulo { int altura; int largura; }; int area(struct Retangulo *r) { return r->altura * r->largura; } int perimetro(struct Retangulo *r) { return 2 * (r->largura + r->altura); }

+ Orientação a Objetos Objeto Retângulo Largura: 10 Altura: 5 ÁreaPerímetro MétodosAtributos Analogia:

+ Orientação a Objetos Objetos são tipos definidos pelo usuário Eles podem ter: Atributos - são as informações que um objeto guarda Métodos - são as funções que determinam o seu comportamento

+ Classes São definições a partir das quais os objetos podem ser criados As classes determinam quais são os atributos e métodos de um objeto Sintaxe: class nomeDaClasse { corpoDaClasse; } listaDeObjetos;

+ Modelando um Retângulo em C++  Exemplo: class Retangulo { int largura; int altura; int area() { return largura * altura; } int perimetro() { return 2 *(largura + altura); } } ret1; // declara uma vari á vel do tipo Retangulo

+ Diferença entre Classe e Objeto Classe é apenas a descrição de um tipo de objeto (“receita do bolo”) Objetos são as instâncias de uma classe (“bolos feitos com a receita”) Objeto retângulo2 Largura: 13 Altura: 115 ÁreaPerímetro Classe Retângulo Largura Altura ÁreaPerímetro Objeto retângulo1 Largura: 10 Altura: 5 ÁreaPerímetro Uma classe, vários objetos

+ Categorias de permissão Membros de uma classe podem ser: public Podem ser acessados em qualquer lugar private Só podem ser acessados pelos membros da própria classe protected Podem ser acessados apenas por membros da própria classe ou das suas sub-classes

+ Exemplo class Retangulo { int largura; private: int altura; public: int area() { return largura * altura; } protected: int perimetro() { return 2 * (largura + altura); } }; // Exemplo de acesso: int main() { Retangulo r; // Errado: r.altura = 10; // Errado: r.largura = 40; // OK: int a = r.area(); // Errado: a = r.perimetro(); } Obs.: Por default todo membro de uma classe é considerado private

+ Classes Quando implementamos um método dentro de uma classe o compilador copia e cola o código toda vez que o método é chamado! O método é dito inline Isto torna o executável mais rápido Mas deixa o executável bem maior Só é bom para métodos muito curtos Qual a solução? Utilizar o operador ::

+ O Operador :: Permite a implementação de métodos fora da classe A classe passa a possuir apenas o protótipo do método O corpo pode ficar no mesmo arquivo ou em outro Sintaxe: nomeDaClasse::nomeDoMembro Também podemos usar o modificador inline para que mesmo assim o método seja inline

+ Exemplo class Retangulo { private: int largura; int altura; public: int area(); int perimetro(); }; // força o método a ser inline int inline Retangulo::area() { return largura * altura; } int Retangulo::perimetro() { return 2 *(largura + altura); }

+ Métodos get e set get() Serve para se ter acesso aos atributos encapsulados de uma classe Exemplo: int getLargura() { return largura; } set() Útil para permitir a modificação dos atributos da classe encapsulados Exemplo: void setLargura(int l) { largura = l; }

+ Exemplo class Retangulo { private: int largura; int altura; public: int getAltura() { return altura;} protected: void setAltura(int a) { // evita um valor inválido if (a > 0) altura = a; } };

+ Construtor É um método especial que é chamado quando criamos um novo objeto Deve possuir o mesmo nome da classe Não possui retorno É utilizado para inicializar os atributos da classe

+ Destrutor Método especial que é chamado automaticamente quando um objeto está prestes a ser apagado da memória Deve ter o mesmo nome da classe mas precedido por um ~ Assim como o construtor ele não possui retorno Além disso, ele não pode ter parâmetros

+ Exemplo class Retangulo { private: int largura; int altura; public: Retangulo(int a, int l); ~Retangulo() { } // destrutor padrão }; Retangulo::Retangulo(int a, int l) { altura = a; largura = l; }

+ Alocação de Memória new Aloca memória para um objeto Retorna um ponteiro para a posição alocada Exemplo: Retangulo *r = new Retangulo(10, 15); Retangulo *array = new Retangulo[10]; delete Libera uma região de memória alocada previamente Exemplo: delete r; delete[] array;

+ Erros Comuns //... Retangulo r = new Retangulo(10, 15); // Errado: r não é um ponteiro!!! delete r; // Errado: r não é um ponteiro!!! //...

+ Classe e Estruturas C++ permite a criação de estruturas com métodos Estas são praticamente idênticas às classes Porém todos os seu membros são public por default

+ Exemplo struct Retangulo { int getAltura() {// public por default return altura; } void setAltura(int a) { // public por default if (a > 0) altura = a; } private: int largura; int altura; };

+ Modularizando o seu programa Quando queremos criar um projeto com diversas classes fazemos uso de algumas convenções: Criamos um arquivo “.h” só com a definição da classe e os métodos inline E um arquivo “.cpp” só com a implementação dos seus métodos

+ Exemplos Retangulo.h Retangulo.cpp main.cpp

+ Exercícios 1) Crie um classe chamada Ponto: Seus atributos são as suas coordenadas x e y Implemente um construtor que recebe estes dois parâmetros Defina os métodos gets inline e os sets normalmente Escreva um método chamado equals que recebe um outro ponto como argumento retornando true se as coordenadas de ambos forem iguais e false caso contrário. Implemente um método chamado distancia que recebe um outro ponto como argumento e calcula a distância entre os dois 2) Implemente uma classe chamada Circulo Seus atributos são o ponto que determina o seu centro e o tamanho do raio Defina um construtor que recebe estes dois argumentos Defina os métodos gets e set inline Implemente um método chamado equals que recebe um outro círculo como argumento retornado true se as coordenadas e o raio de ambos forem iguais e false caso contrário. Escreva um método chamado área que calcula a área do círculo Crie um método chamado perimetro que calcula o perímetro do círculo

+ Referências Slides da cadeira de Introdução à Programação do CIn: Arnaut: Oficina de Programação Programação orientada a objectos em PHP Slides de Gustavo do Curso de

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