Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes

Slides:



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

H ERANÇA E P OLIMORFISMO Prof. Thiago Pereira Rique
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
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
Diagrama de Classes.
Linguagem de Programação II
Linguagem de Programação II
Herança e Polimorfismo
Classes e objetos P. O. O. Prof. Grace.
Curso de extensão em Desenvolvimento Web
Introdução a programação (if669cc)
Polimorfismo em C#.
Programação Orientada a Objetos com Java
Aula prática 13 Orientação a Objetos – C++ Parte 1
Aula Prática If669 – Introdução à Programação
Conceitos básicos de orientação a objetos
Singleton e Adapter Professor: Nazareno Andrade
Sobrecarga e Encapsulamento
Programação Orientada à Objetos
Oberdan B. Ferreira Polimorfismo Oberdan B. Ferreira
Tópicos avançados em internet A
Programação I Aula 2 (Métodos)
Linguagem de Programação JAVA
Herança em Java.
Professora Lucélia Oliveira
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This.
Programação Orientada à Objetos
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Membro Static.
Programação Orientada a Objetos - Java
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Como criar uma Classe e.
UML Diagrama de classes.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Classes e Objetos em Java.
Programação Orientada à Objetos
Aula prática 14 Orientação a Objetos – C++ Parte 2
Análise Orientado aos Objetos Prof. Wolley W. Silva
Programação Orientada à Objetos
Curso de Aprendizado Industrial Desenvolvedor WEB
Prof. Gilberto Irajá Müller
Classes Abstratas P. O. O. Prof. Ângela e Grace.
Aula Prática 4 Monitoria IP/CC (~if669).
Decorator POO - Avançado.
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Aula Prática 1 Monitoria IP/CC (~if669). Roteiro 1.Polimorfismo 2.Superclasses Abstratas 3.Dúvidas 4.Exercício.
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Classes Abstratas e Interfaces GX – Aula05 1.
Paradigmas de Programação –Aula 7 Lab 2 Professores: Eduardo Mantovani Fábio Paula Santos.
Herança Modelagem e Programação Orientada a Objetos
Clique para editar o estilo do subtítulo mestre POO Utilizando PHP5 Prof. André Rabelo.
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.
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
OO com Java Luiz Carlos d´Oleron Roteiro de aula.
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.
Módulo II Capítulo 1: Orientação a Objetos
Relacionamentos UML e Polimorfismo
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Paradigmas da Programação – Semestre 1 – Aula 7 Professor: Eduardo Mantovani )
Array e ArrayList LPOO – 01/09/14.
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
Java Como Programar, 8/E Deitel/Deitel, 8e. Java – Como programar Copyright © 2010 Pearson Education Slide 1.
Engenharia de Software Orientada a Objetos Professor: Guilherme Timóteo Aula 3: – Modelagem de Classes (parte 2)
1. 2 Programação Orientada a Objetos II Prof. Maurício Rodrigues de Morais
HERANÇA Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)
AULA Mais Herança Curso: Informática (Subseqüente) Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Herança e Polimorfismo Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
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.
Transcrição da apresentação:

Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes

Herança - Conceito Quando estudamos biologia aprendemos que herança genética é quando um indivíduo filho recebe características que estão presentes em seus pais, tornando-se “parecido” com seu progenitor, porém podendo apresentar características novas. O mesmo conceito é aplicado à Orientação a Objetos.

Herança - Exemplo Digamos que seja necessário criar um sistema para controlar uma coleção de CDs e DVDs. Observe as classes abaixo inicialmente definidas:

Herança - Exemplo Observe que existem métodos e atributos que são comuns a ambas as classes.

Herança - Exemplo Isso significa que o código que for escrito para a o método setComentario() na classe CD deverá ser repetido na classe DVD. E caso seja necessário realizar alguma alteração, as duas classes precisam ser modificadas. Na classe gerenciadora, será necessário criar duas listas, uma para gerenciar os CDs, outra para gerenciar os DVDs, pois os objetos são diferentes. O mesmo acontece com os métodos adicionar ou excluir.

Herança - Exemplo

Herança O uso de herança nos ajudará a:  Evitar a duplicação de código;  Reutilizar o código;  Facilitar a manutenção;  Estender as funcionalidades da classe; Para usar herança, devemos agrupar todas as características em comum às classes (atributos e métodos) em uma superclasse e colocar as diferenças em subclasses.

Herança Para o exemplo do CD e DVD, agrupamos os elementos semelhantes na classe Item e colocamos os detalhes nas classes DVD e CD. Assim, os elementos em comum são descritos apenas uma vez.

Herança Dizemos que CD herda da classe Item, o mesmo com a classe DVD. Algumas vezes também ouvimos CD estende Item. O diagrama de herança é representado com setas de ponta vazada.

Herança A classe Item (da qual as outras herdam) é chamada classe pai ou superclasse. As classes CD e DVD, que herdam de Item, são chamadas classes filhas ou subclasses. Também podemos nos referir à herança com o termo “é um” como em CD é um Item. Isso é usado para denotar uma especialização da superclasse.

Herança Na herança, tudo o que está definido na superclasse também está presente na subclasse. Ou seja, a classe DVD que herda de Item é idêntica a mostrada na figura a direita. =

Herança DVD tem tudo o que Item tem e muito mais. A vantagem é que o código só precisará ser implementado uma única vez para qualquer se seja o tipo de item que for adicionado.

Exercício 1 Transforme as classes abaixo num modelo de herança.

Hierarquias de herança A herança pode ser usada de maneira muito mais geral. Diversas subclasses podem herdar de uma classe, uma subclasse pode herdar de outra subclasse e assim por diante, formando uma hierarquia de heranças. Observe a figura a seguir.

Hierarquias de herança

Se pegarmos uma instância de Poodle, vamos observar que ele possui algumas características que são comuns a outro tipo de Cão (como latir, farejar, etc.). Veremos também que possui características que nos lembram os mamíferos (ex. pêlos),e outras que nos estão presentes nos animais em geral (dormir, comer, etc.). Isso por que Poodle é um Cão, que é um Mamífero, que é um Animal. Ou seja, Poodle herda de todas essas classes.

Exercício 2 Desenhe uma hierarquia de classes para representar as pessoas que fazem parte desta escola (alunos, professores, servidores, calouros, veteranos, mestres, doutores, especialistas, pedagogos, zeladores, porteiros, etc...)

Implementando herança em Java Observe os trechos de código abaixo: Para criar uma subclasse, basta adicionar a palavra extends e o nome da superclasse.

Exercício 3 Implemente o código Java do Exercício 1.

Direitos de Acesso na Herança Atributos e métodos definidos como private na superclasse NÃO PODERÃO SER ACESSADOS pela subclasse. O código ao lado irá gerar um erro de compilação na linha 7, pois DVD está tentando modificar o valor de titulo definido como privado em Item.

Direitos de Acesso na Herança Para fazer esta modificação é preciso usar os métodos set da superclasse ou definir os métodos e atributos como protected.

Direitos de Acesso na Herança O modificador protected permite que subclasses tenham acesso aos atributos e métodos de sua superclasse como se estivessem definidos nela própria.

Inicialização Ao criarmos um objeto, o construtor desse objeto é usado para inicializar os valores de suas variáveis. Nas classes que usam herança precisamos ter um pouco de cuidado ao escrever o código. Nesse exemplo estamos passando dois parâmetros no construtor.

Inicialização Ao criar um objeto da subclasse, o construtor deve incorporar o construtor da superclasse, pois não temos acesso direto às variáveis private da superclasse. Ficaria assim: Chamada ao construtor com a palavra super e seus respectivos parâmetros.

Inicialização Neste exemplo, o construtor de CD primeiro chama o construtor da classe Item para inicializar suas variáveis, só depois retorna a seu escopo e inicializa suas próprias variáveis. Imagine que um objeto CD fosse como a figura ao lado: (possui um objeto item dentro dele) CD ATRIBUTO1; ATRIBUTO2; METODO1( ); METODO2( ); Obj Item

Inicialização No construtor de toda subclasse, a primeira instrução deve ser uma chamada ao construtor da superclasse: super( ). Se você esquecer de colocá-lo, o compilador irá inserir automaticamente essa instrução para garantir a correta inicialização dos atributos da superclasse. Mas só funcionará se o construtor não tiver parâmetros.

Adicionando mais elementos Usando a mesma superclasse Item, podemos adicionar outros elementos ao sistema, por exemplo colocando um novo tipo de mídia chamado VideoGame.

Adicionando mais elementos Poderíamos ainda modificar a estrutura para representar qualquer tipo de jogo (videogame ou tabuleiro).

Adicionando mais elementos As classes Item e Jogo, das quais não temos interesse em criar objetos, ou seja, existem apenas com o propósito de fornecer elementos para herança, são chamadas de classes abstratas. Usamos a palavra abstract antes do nome da classe para defini-la como classe abstrata.

Subtipos Uma coisa interessante ao usarmos herança, é que uma variável do tipo da Super classe pode ser usada para referenciar um objeto do tipo de uma subclasse. Chamamos este princípio de Substituição. Veja o exemplo: Item coisa1 = new Item(); CD coisa2 = new CD(); DVD coisa3 = new DVD();

Subtipos Também funcionaria se fosse escrito assim: Item coisa1 = new Item(); Item coisa2 = new CD(); Item coisa3 = new DVD(); Porém o inversão não funciona: CD coisa1 = new Item(); //DÁ ERRO! CD coisa2 = new DVD(); //OUTRO ERRO!

Suptipos O uso de subtipos nos permitirá passar objetos de um subtipo em métodos que requerem objetos do tipo da superclasse. Como no exemplo abaixo:

Exercício 4 Implemente um sistema quer permita catalogar cds, dvds, jogos de videogames e jogos de tabuleiros (cadastrar e exibir). Use os conceitos de herança aprendidos nesta aula.

Referências BARNES. KOLLING. Programação orientada a objetos com Java. Uma introdução prática usando o BlueJ. 4ed. Pearson, SIERRA, Kathy. BATES, Bert. Use a Cabeça! Java. 2ed. Alta Books, 2007.