Escolar Documentos
Profissional Documentos
Cultura Documentos
Herança
Herança:
• Estrutura hierárquica e modular para reutilização de código.
Símbolo da UML
Classe especialista,
subclasse, filha, derivada
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Herança:
• A classe que especializa, estende ou herda de uma
superclasse, não precisa fornecer uma nova implementação
para métodos genéricos.
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
}
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Herança Múltiplas:
• Uma classe pode herdar ao mesmo tempo, código de
diferentes classes.
• A linguagem Java não permite tal recurso.
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Atividade prática:
• Desenvolva as classes do diagrama UML, crie um objeto de
cada classe e chame o método testar.
2) Tipos de Herança
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Tipos de Herança:
• As duas formas básicas de usar herança são: extensão e
especialização.
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Tipos de Herança:
• Especialização: Refinamento de uma classe genérica em
subclasses específicas.
• Métodos são sobrecarregados para obter uma funcionalidade
correta para a subclasse.
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Tipos de Herança:
• Especialização:
Método reimplementado
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Tipos de Herança:
• Extensão: Adição de novos métodos que não existem na
superclasse.
Método adicionado
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Atividade prática:
• Desenvolva uma nova classe que extende as funcionalidades
da calculadora.
3) Tipos de sobrecarga de
métodos
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Atividade prática:
• Desenvolva as classes Retangulo e Círculo estendendo a
classe Figura. Realize a sobrecarga do método obterArea().
4) Encadeamento de
construtores
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Encadeamento de construtores:
• Técnica de sobrecarga por refinamento de métodos aplicado
nos construtores.
• Na linguagem Java pode ser de maneira implícita ou
explícita.
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Encadeamento de construtores:
• Forma implícita. Execute o código e
analise o resultado.
public class Base {
public Base() {
System.out.println("Construtor da Base.");
}
}
public class Derivada extends Base{
public Derivada() {
System.out.println("Construtor da derivada.");
}
}
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Encadeamento de construtores:
• Forma explícita.
Deve estar na primeira
public class Base { linha do construtor
public Base() {
System.out.println("Construtor da Base.");
}
}
public class Derivada extends Base{
public Derivada() {
Chamada do construtor da superclasse super();
}
}
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Atividade prática:
• Desenvolva a classe PontoXY estendendo a classe PontoX.
Adicione o atributo y na classe. Realize o encadeamento de
construtor.
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Atividade prática:
• Desenvolva a classe Base com um construtor que recebe por
parâmetro uma String. Crie a classe Derivada sem construtor
que extende a classe Base. Analise o erro que ocorre.
5) Sobrecarga final de
método
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Atividade prática:
• Crie uma classe com um método final. Realize uma herança
dessa classe e realize a sobrecarga do método. Identifique o
erro que ocorre.
6) Visibilidade de atributos
e métodos na Herança
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Atividade prática:
• Crie uma classe com um método público. Realize uma herança
dessa classe e implemente a sobrecarga do método
modificando a sua visibilidade para protegido. Identifique o erro
que ocorre.
7) Leitura adicional
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Leitura Adicional:
• Seção 7.11 Herança
• Sérgio, FURGERI,. Java 8 - Ensino Didático - Desenvolvimento
e Implementação de Aplicações. Editora Saraiva, 2015. [Minha
Biblioteca].
• Capítulo 7 – Herança
• Herbert, SCHILDT,. Java para iniciantes. Grupo A, 2015.
[Minha Biblioteca].
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Leitura Adicional:
• Capítulo 7 – Herança
• Edward, Finegan,. OCA Java SE 8: Guia de Estudos para o
Exame 1Z0-808. Grupo A, 2018. [Minha Biblioteca].
8) Exercícios
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Exercício 01:
• Modele um diagrama de classe UML para representar os
diferentes tipos de mouse (óptico, wireless, bluetooth, etc).
• Crie uma classe chamada Mouse para ser a superclasse.
Nessa classe adicione apenas os método e atributos que se
aplica a todos tipos de mouses.
• Crie novas classes extendendo a classe Mouse representando
os diferentes tipos específicos de Mouse.
• Desenvolva o código Java com base no diagrama de classe.
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Exercício 02:
• Crie um glossário para os conceitos chaves sobre Herança.
• Exemplo
• Superclasse: Classe que é extendida por uma subclasse.
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Exercício 03:
• Encontre uma solução para a implementação de uma classe
com múltipla herança na linguagem Java.
• Implemente o código.
Bacharel em Engenharia de Software
Programação Orientada à Objetos Sistemas de Informação
Desafio:
• Aplique os conceitos de Herança em uma outra linguagem de
programação de sua preferência. Exemplo: Python, C#,
TypeScript, JavaScript, Kotlin, Swift, PHP.
Universidade da Região de Joinville - UNIVILLE