Você está na página 1de 29

Estácio Teresina

Curso de Ciência da Computação

Programação Orientada a Objetos em JAVA

Aula 3 – Herança e Polimorfismo

Joselito Mendes de Sousa Junior


Situação-Problema

 Sistemas computacionais muitas vezes acabam reutilizando


componentes em vários pontos do programa. Por exemplo,
interfaces gráficas utilizam muitos botões, os quais
possuem atributos e características muito parecidas, como
forma retangular, método de execução quando clicado
entre outros. Supondo que em um ambiente específico seja
necessário utilizar um botão de formar circular para
representar o botão de um elevador. Notamos que todos os
outros comportamentos e atributos do botão retangular
serão utilizadas pelo botão circular.
 Então, não seria interessante que o botão circular
herdasse as características do botão retangular realizando
apenas as alterações necessárias ou acréscimo de atributos
e métodos? Esse mecanismo traria que tipos de vantagens
no desenvolvimento de sistemas?

2
Princípios do Paradigma OO

3
Princípios do Paradigma OO

A representação
computacional do
objeto real deve
se concentrar nas
características que
são relevantes
para o problema

4
Princípios do Paradigma OO

O objeto deve
esconder seus dados
e os detalhes de sua
implementação

5
Princípios do Paradigma OO

O sistema deve ser


composto de objetos
altamente coesos e
fracamente acoplados

6
Princípios do Paradigma OO

Objetos herdam atributos


e métodos dos seus
ancestrais na hierarquia

7
Herança

 Para viabilizar a hierarquia entre objetos, as classes


são organizadas em estruturas hierárquicas:

 A classe que forneceu os elementos herdados é chamada de


superclasse

 A classe herdeira é chamada de subclasse


 A subclasse pode herdar os métodos e atributos de suas
superclasses
 A subclasse pode definir novos atributos e métodos específicos

8
Herança

Exemplos: carro é um automóvel; trator é um veículo

9
Exemplo de Herança

10
Exemplo de Herança

Responsáveis por criar o


objeto em memória, ou
seja, um método utilizado
por uma classe para criar
objetos dela

Mais sobre construtores, clica aqui! Super importante!


11
Exemplo de Herança

Atributos do carro

Métodos do carro

12
Exemplo de Herança
Criação de um tipo diferente de carro: o Carro Inteligente

13
Exemplo de Herança

Essa palavra reservada permite acesso a métodos e construtores da superclasse

Na utilização da herança é necessário a fim de chamar o construtor da superclasse,


sempre que a superclasse não possui um construtor default
Construtor default é aquele que não possui parâmetros
Esta chamada deve ser a primeira dentro do construtor da classe
O construtor da classe imediatamente superior será chamado

14
Exemplo de Herança
Uso do carro inteligente:

Uai, de onde veio isso?

15
Herança: Compatibilidade de Tipos
 Qualquer subclasse é compatível com sua superclasse
 Ou seja, todos os atributos e métodos da superclasse
podem ser facilmente usados na subclasse
 Porém, a recíproca não é verdadeira!!
Não podemos criar as superclasses herdando as
subclasses...

16
Herança
 Capacidade de uma subclasse de ter acesso as
propriedades da superclasse
 Atributos e métodos de uma classe são propagados de
cima para baixo em um “diagrama de classes”
 Neste caso, dizemos que a subclasse herda as propriedades
e métodos da superclasse
 O uso da herança é um importante fator para o reuso
do código

 Quanto mais alto na hierarquia de classe, mais geral é


a classe

17
Herança

Geral

Específico

18
Polimorfismo

 Uma subclasse pode redefinir um método herdado!

 Esse mecanismo é chamado de polimorfismo

 Se realiza por meio da recodificação de um ou mais


métodos herdados por uma subclasse

 E como o Java sabe qual implementação usar?


 Em tempo de execução

19
Exemplo 1 de Polimorfismo

O método acelera() tá diferente aqui...

20
Exemplo 2 de Polimorfismo

Importante: salvem o arquivo com o mesmo nome da classe!

21
Exemplo 2 de Polimorfismo

22
Exemplo 2 de Polimorfismo

Qual a saída desse teste?

23
Exemplo 2 de Polimorfismo

24
Atividade Verificadora de Aprendizagem

1. Apresente uma situação na qual seria possível e


vantajoso a utilização do mecanismo de herança.
Faça a sua implementação.

2. Apresente uma situação em que o polimorfismo


poderia ser aplicado. Faça a sua implementação.

25
Vídeo de Fixação

 https://www.youtube.com/watch?v=MOXLCjL4Ik4

26
Atividade Autônoma Aura
 Questão 1:
A empresa de desenvolvimento de software "Atlas Development"
foi contratada por uma empresa de seguros para desenvolver um
software na Linguagem Java que irá avaliar o perfil de dos
contratantes de seguro para automóveis. A Atlas já desenvolveu
sistemas parecidos para duas outras empresas. Em um dos
módulos do sistema, um desenvolvedor verificou que se herdasse
métodos e atributos de duas outras classes, poderia então
desenvolver a classe necessária para ser utilizada em parte do
módulo em questão. Nesse caso, que tipo de herança está sendo
realizada e se Java suportaria esse mecanismo.
a) Herança por prototipagem, Java implementa
b) Herança múltipla, Java implementa
c) Herança simples, Java implementa
d) Herança múltipla, Java não implementa
e) Herança por prototipagem, Java não implementa

27
Atividade Autônoma Aura
 Questão 2:
Um programador está desenvolvendo um software que irá controlar
aceleradores de motores de forma automática, evitando por exemplo,
que o motorista acelere se houver um objeto próximo ao veículo. O
software deve ser adaptado para diversos tipos de veículos como
automóveis, caminhões e motos. No entanto, sabemos que esses
veículos possuem características distintas, mesmo apresentando o
comportamento de aceleração do motor. Nesse caso, o programador
deverá implementar o método acelerar() para todos os veículos,
utilizando o mesmo nome mas com implementações distintas. Que
conceito de orientação a objetos o problema acima está se referindo.

a) Herança
b) Abstração
c) Polimorfismo
d) Encapsulamento
e) Construtor

28
Fontes da Aula
 Dúvidas?

 Prof. Leonardo Murta. Notas de Aula. UFF.


 http://www.ic.uff.br/~leomurta/courses/poo/aula8.pdf
 Prof. Flávio Silva. Notas de Aula.
 https://www.facom.ufu.br/~flavio/poo/files/2004-01/POO-
JAVA%20HERANCA.pdf
 Prof. Guillermo Cámara-Chavez. Notas de Aula. UFOP.
 http://www.decom.ufop.br/guillermo/BCC221/slides/Java___Polimorfis
mo___POO.pdf

29

Você também pode gostar