Herança e Polimorfismo

Slides:



Advertisements
Apresentações semelhantes
Paulo Marques Hernâni Pedroso
Advertisements

PHPOO Erick Souza. Conceitos de Orientação a Objetos Objeto é um conceito ou item(concreto ou abstrato). Software orientado a objetos Uma classe é uma.
Herança, Polimorfismo e Classes Abstratas em Java
H ERANÇA E P OLIMORFISMO Prof. Thiago Pereira Rique
Orientação a Objetos: Encapsulamento e Classificação
Java: Pacotes e Modificadores de Visibilidade
Modelagem Orientada a Objetos
1 Orientação a Objetos: Herança Alcides Calsavara.
Java: Pacotes e Modificadores de Visibilidade
Orientação a Objetos: Encapsulamento e Classificação
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Iniciação ao Java – Márcio F. Campos
Polimorfismo e Classes Abstratas Profa
Linguagem de Programação II
Linguagem de Programação II
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Interfaces em Java1 Interfaces Prof. Ricardo Linden.
Programação orientada a objetos com Java
JAVA ENUMS © 2009 by Jorge L. de Souza Leão março de 2009 PEE - COPPE/UFRJ.
Capítulo 9 Herança 1.
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Classes Abstractas.
Classes e objetos Arrays e Sobrecarga
Herança P. O. O. Prof. Ângela e Grace.
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação JAVA
JAVA: Conceitos Iniciais
Programação Orientada a Objetos com Java
Linguagens de Programação
Programação orientada a objetos: Polimorfismo
Sobrecarga e Encapsulamento
Programação Orientada à Objetos
Aula 3 CoL, atividade Polimorfismo (late binding) Modificador final Modificador abstract Interfaces Herança múltipla Atribuição, Construtores, Destrutores,
Herança em Java.
Classes, Objetos, Atributos e Métodos JAVA
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng. da Computação IF62C - Fundamentos de Programação Semana 12 – Overloading X Overriding Prof.a.
Herança em POO Importante:
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
Aula prática 14 Orientação a Objetos – C++ Parte 2
Programação I Aula 6 (Herança, Polimorfismo e Encapsulamento)
Programação Orientada à Objetos
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Prof. Gilberto Irajá Müller
Orientação a Objetos usando Java
Classes Abstratas P. O. O. Prof. Ângela e Grace.
Polimorfismo.
POO II JEAN CARLO MENDES
Interfaces POO Avançado.
Classes Abstratas e Interface
Prof.: Bruno Rafael de Oliveira Rodrigues.  Existe para poder servir de molde para outras classes.  Deve ser declarada tal usando-se a palavra chave.
Aula Prática 1 Monitoria IP/CC (~if669). Roteiro 1.Polimorfismo 2.Superclasses Abstratas 3.Dúvidas 4.Exercício.
Classes Abstratas e Interfaces GX – Aula05 1.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Paradigmas de Programação –Aula 7 Lab 2 Professores: Eduardo Mantovani Fábio Paula Santos.
Herança Modelagem e Programação Orientada a Objetos
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Bruno Inojosa MCP .NET Framework
Linguagem II Classes Abstratas Interfaces. Davi Pires Revisão Reuso de código Superclasses e subclasses Composição vs. Herança Construtores.
Herança.
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.
Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour ▐ Polimorfismo ▐ Exemplo ▐ Classes Abstratas.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Prof.: Bruno Rafael de Oliveira Rodrigues. Herança Possibilita a uma classe usar campos ou métodos definidos em outra classe. Assim a classe pai possui.
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
PROGRAMAÇÃO ORIENTADA A OBJETOS
1. 2 Programação Orientada a Objetos Prof. Maurício Rodrigues de Morais
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Jean Carlo mendes
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Herança e Polimorfismo P. O. O. Prof. Ângela e Grace

Exercício – Classe Caminhão Subclasse Caminhao estende Veiculo Atributos específicos Capacidade Número de eixos Métodos Construtor Sets e gets Impressão dos dados do caminhão

Classe Caminhao Atributos específicos construtor da super classe

Classe Caminhao (cont.) Atributos herdados

Teste – Classe Caminhao Reescrito na subclasse: isso é sobrecarga?

Relembrando... O que é Sobrecarga? Recurso que permite que vários métodos sejam definidos com mesmo nome. Obrigatório diferentes parâmetros: quantidade, tipos ou ordem dos argumentos. Define vários métodos semelhantes de acordo com a necessidade, inclusive construtores.

Polimorfismo “Propriedade de se apresentar sob muitas formas” Mesmo método chamado (invocado) pode ter diferentes resultados Depende do tipo do objeto que invocou o método

Polimorfismo Classe veículo possui método imprime() Classes carro/ caminhao herdam método imprime() Redefinição do método (para carro e caminhao) provoca diferentes resultados quando o mesmo método é invocado

Definição de Polimorfismo Princípio pelo várias classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos. É necessária a redefinição de métodos com mesma identificação, porém, não deve ser confundido com o mecanismo de sobrecarga de métodos.

Exemplo – Frota de veículos Algoritmo Solicita quantidade de veículos (n) Leitura de n veículos Solicita tipo de veiculo Solicita dados de acordo com o tipo Armazena em vetor de tamanho n Imprime dados de n veículos armazenados no vetor (polimorfismo) Qual o tipo do vetor? Veículo? Carro? Caminhão?

Ligação tardia Veremos que o método pode ser invocado a partir de uma referência a um objeto do tipo da superclasse, apesar de, na prática, ser uma instância da subclasse. Neste caso, a decisão sobre qual o método que deve ser selecionado, de acordo com o tipo da classe derivada, é tomada em tempo de execução, através do mecanismo de ligação tardia. Ex: Frota de veículos;

Classe Frota (parte 1 de 3) Usa classe Scanner Início da classe Frota Declaração de Variáveis Tamanho da Frota Loop para entrada de dados

Classe Frota (parte 2 de 3) Dados comuns a qualquer veiculo Dados objeto Carro

Classe Frota (parte 3 de 3) Caminhão Tipo não identificado: veículo Polimorfismo

Classe Abstrata Classes demasiadamente gerais para criar objetos reais. Utilizadas somente como superclasses abstratas para subclasses concretas Declara atributos e comportamentos comuns das várias classes em uma hierarquia. Em geral, uma classe abstrata contém um ou mais métodos abstratos Atributos e métodos concretos de uma classe abstrata estão sujeitos às regras normais da herança.

Palavra-chave abstract Utilizada para declarar uma classe abstrata. Utilizada para declarar um método abstrato: Classes abstratas contêm um ou mais métodos abstratos. Todas as subclasses concretas devem sobrescrever todos os métodos abstratos herdados. Tentar instanciar um objeto de uma classe abstrata é um erro de compilação.

Formas geométricas área( ) Formas geométricas área = π x r2 área = (b x h)/2 área = b x h

Classe Abstrata: Forma Geométrica Atributos básicos Número de lados Métodos Set/ get número de lados: métodos não abstratos Área: método abstrato Imprime(): métodos não abstratos Precisa construtor?

Classe FormaGeometrica Atributo protected Método concreto

Classe Circulo public class Circulo extends FormaGeometrica { private double raio; // atributo especifico do circulo public void setRaio (double raio) { if (raio<0) this.raio = 0; else this.raio = raio; } public Circulo (double raio) // construtor { setRaio(raio); } } Compilou?

Classe Circulo com Método Area( ) Usa classe Math Implementa Area( )

Classe TesteFormas Funcionou? public class TesteFormas { public static void main (String args[]) { FormaGeometrica f = new FormaGeometrica(); f.imprime(); Circulo c = new Circulo(5); c.imprime(); } } Funcionou?

Alterações Classes abstratas não podem ser instanciadas. Corrigir código do teste Como imprimir raio junto ao número de lados? Altero em Circulo ou FormaGeometrica? Redefinir método imprime( )

Classe Circulo - Método imprime( ) sobrescreve imprime( )

Mais alterações... Como imprimir área da forma geométrica? Altero na classe Círculo? Ou na FormaGeometrica? Redefinir método imprime( ) incluindo área.

Alterando a superclasse

Exercício – Subclasse Retangulo Atributos básicos Base Altura Métodos Sets/ Gets Construtor (base, altura) area() imprime()

Classe Retangulo

Classe Retangulo (cont.)

Teste Formas

Interfaces São modelos de comportamentos; Definem e padronizam serviços que uma classe pode oferecer; Usadas para classes não relacionadas, mas com alguns comportamentos semelhantes Ex.: classes Fatura e Funcionário Não são relacionadas Ambas podem ter método calculaPagamento Usar interface que defina esse comportamento Usadas implementar herança múltipla

Interface Java Descreve conjunto de métodos para instruir como um objeto deve se comportar Possui apenas métodos abstratos, ou seja, não pode ter nenhum método implementado Todos os membros (atributos e métodos) devem ser public

Implementação de interface Uma classe concreta pode especificar que implementa uma ou mais interfaces; Todos os métodos devem ser codificados; Caso algum método não seja implementado, essa classe deve ser abstrata; Implementar uma interface é como assinar um contrato! Ex: Interfaces gráficas (GUI) => Listener

Exercício para entregar Classe triângulo Classe de teste com as 3 formas