Programação em Linguagem C++

Documentos relacionados
[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama]

Daniel Wildt

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno

Notas de Aula 04: Herança e polimorfismo.

C com introdução a OO

Aula 2 Princípios Básicos da Orientação a Objetos (Parte II)

Python Orientação a Objetos. Introdução à Programação SI2

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Linguagem de Programação III

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Classes e Objetos. Sintaxe de classe em Java

Laboratório de programação II

Linguagem de Programação III

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

Conceitos de Programação Orientada a Objetos

Linguagens de Programação Aula 12

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27

Classe Abstrata e Interface

POO e C++: Herança e Polimorfismo

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 6: Polimorfismo

Programação Java (nível intermediário) 4. Polimorfismo

Programação C# + ASP.NET

Programação por Objectos. Java

Suporte a programação orientada a objetos

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Quinta aula

Aula 6 POO 1 Construtores. Profa. Elaine Faria UFU

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Linguagem de Programação Introdução a Orientação a Objetos

Programação C# + ASP.NET

Computação II Orientação a Objetos

Linguagem de Programação I Apresentação da Disciplina

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Linguagem de Programação I

UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

COMPORTAMENTOS - Observações

Sobrecarga, Sobreposição e Polimorfismo

1 Introdução e Conceitos básicos

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

Aula 9 POO 1 Polimorfismo. Profa. Elaine Faria UFU

Programação Orientada a Objetos

UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA

Aprendendo. Java 2. Rodrigo Mello Ramon Chiara Renato Villela. Novatec Editora Ltda.

Introdução ao Java. Prof. Herbert Rausch Fernandes

Introdução à Programação. Encapsulamento e Herança

Programação Orientada a Objetos II

Aula 7 POO 1 Herança. Profa. Elaine Faria UFU

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Declaração de Construtores em Java

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

CONTEÚDO PROGRAMÁTICO

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Linguagem de Programação IV Introdução

Classes, Métodos e Propriedades

Modelo de plano analitico

Unidade: sobrecarga, construtores e herança

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

Paradigmas de Linguagens de Programação. Tipos de Dados Abstratos

Orientação a Objetos AULA 06

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Programação orientada a objetos

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

Modelo do Mundo Real. Abstração. Interpretação

Programação Orientada a Objetos

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Transcrição:

Programação em Linguagem C++ Igor Kondrasovas Especialista em Computação Aplicada UDESC Sócio e Desenvolvedor na Inovativa Tecnologia igor@inovativatec.com www.inovativatec.com

Agenda Herança e Polimorfismo Herança Funções Virtuais Polimorfismo

Mas antes... Sobre a última aula Utilizando a classe string Inicializando vetores no heap 3

Generalização / Especialização Um cão é um canino; Um canino é um mamífero; Taxinomistas dividem os seres vivos em Reinos, filos, classes, ordens, famílias, gêneros e espécies 4

Exemplo 5

Porque Utilizamos os Animais? Facilita a discussão sobre herança; Imagem que estamos fazendo um jogo que simula uma fazenda; Por agora, os métodos fazem coisas simples; 6

7

Demo 1: Classe Cão derivada da classe Mamífero Referência: Figura 12.2 8

Private x Protected Visível para a classe e para as classes derivadas 9

Construtores e Destrutores Quando um objeto Cão é criado, o seu construtor base é chamado primeiramente, criando um Mamífero. Então o construtor de Cão é chamado, completando a construção do objeto. Quando o objeto é destruído, primeiro o destrutor de Cão é chamado e posteriormente o destrutor de Mamífero. 10

Demo 2: Verificar construtores e destrutores da classe cão; Referência: Figura 12.3 11

Construtores e Destrutores Como podemos inicializar valores no construtor base? Inicialização da classe base pode ser feita durante a inicialização da classe escrevendo o nome da classe base, seguido dos parâmetros esperados por ela. 12

Demo 3: Verificar inicialização de construtores da classe base; Referência: Figura 12.4 13

Sobrescrita de Métodos Um objeto Cao tem acesso a todos os dados membros e métodos (funções) da classe Mamifero, assim como todos os seus próprios membros e métodos. Uma classe derivada pode também sobrescrever (override) um método da classe base; 14

Sobrescrita de Métodos Quando uma classe derivada cria um método com o mesmo tipo de retorno e assinatura de um método de uma classe base, mas com uma nova implementação, dizemos que ela esta sobrescrevendo o método. OBS: O tipo de retorno pode ser diferente; 15

Demo 4: Verificar sobrescrita de método da classe Cao; Referência: Figura 12.5 16

Importante! Sobrecarga vs Sobrescrita Overload vs Overriding 17

Ocultando Métodos Após sobrescrever um método sobrecarregado, todos as outras sobrecargas são escondidas (hidden). Se você quer evitar isto, sobrescreva todos os métodos; 18

Demo 5: Demonstrar hidding de métodos; Referência: Figura 12.6 19

Chamando Métodos da Base 20

Demo 6: Demonstrar chamada ao método da base; Referência: Figura 12.7 21

Polimorfismo C++ permite que ponteiros para classes base sejam inicializados com objetos de classes derivadas: Ex: Mamifero* panimal = new Cao; É possível utilizar este ponteiro para chamar qualquer método de Mamífero. E se quisermos chamar os métodos da classe Cao? 22

Funções Virtuais Para criar um método virtual, basta adicionar a palavra virtual na frente da declaração do método; 23

Demo 7: Utilizar o método Falar para demonstrar métodos virtuais; Referência: Figura 12.7 24

Perguntas e Respostas Se Cão deriva de Mamífero, e Mamífero deriva de Animal, a classe Cão herdará os métodos e atributos de Animal? Sim. A medida que a derivação continua, as classes derivadas herdam a soma de todos os métodos e atributos de suas classes bases, mas podem acessar apenas aqueles que são públicos ou protegidos. 25

Perguntas e Respostas Se, na pergunta anterior, Mamífero sobrescrever um método de Animal, qual destes métodos estará disponível para Cão, a versão original ou a sobrescrita? Se Cão deriva de Mamífero, ele obtém a versão sobrescrita. 26

Programação em Linguagem C++ Igor Kondrasovas Especialista em Computação Aplicada UDESC Sócio e Desenvolvedor na Inovativa Tecnologia igor@inovativatec.com www.inovativatec.com