Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

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
2
 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?
Princípios do Paradigma OO
3
Princípios do Paradigma OO
4
A representação
computacional do
objeto real deve
se concentrar nas
características que
são relevantes
para o problema
Princípios do Paradigma OO
5
O objeto deve
esconder seus dados
e os detalhes de sua
implementação
Princípios do Paradigma OO
6
O sistema deve ser
composto de objetos
altamente coesos e
fracamente acoplados
Princípios do Paradigma OO
7
Objetos herdam atributos
e métodos dos seus
ancestrais na hierarquia
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
9
Exemplos: carro é um automóvel; trator é um veículo
Exemplo de Herança
10
Exemplo de Herança
11
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!
https://www.devmedia.com.br/construtores-em-java-primeiros-passos/28618
Exemplo de Herança
12
Atributos do carro
Métodos do carro
Exemplo de Herança
13
Criação de um tipo diferente de carro: o Carro Inteligente
Exemplo de Herança
14
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
Exemplo de Herança
15
Uso do carro inteligente:
Uai, de onde veio isso?
Herança: Compatibilidade de Tipos
16
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...
Herança
17
 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
Herança
18
Geral
Específico
Polimorfismo
19
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
Exemplo 1 de Polimorfismo
20
O método acelera() tá diferente aqui...
Exemplo 2 de Polimorfismo
21
Importante: salvem o arquivo com o mesmo nome da classe!
Exemplo 2 de Polimorfismo
22
Exemplo 2 de Polimorfismo
23
Qual a saída desse teste?
Exemplo 2 de Polimorfismo
24
Atividade Verificadora de Aprendizagem
25
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.
Vídeo de Fixação
26
 https://www.youtube.com/watch?v=MOXLCjL4Ik4
https://www.youtube.com/watch?v=MOXLCjL4Ik4
Atividade Autônoma Aura
27
 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
Atividade Autônoma Aura
28
 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
Fontes da Aula
29
 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
http://www.ic.uff.br/~leomurta/courses/poo/aula8.pdf
https://www.facom.ufu.br/~flavio/poo/files/2004-01/POO-JAVA HERANCA.pdf
http://www.decom.ufop.br/guillermo/BCC221/slides/Java___Polimorfismo___POO.pdf

Mais conteúdos dessa disciplina