+ All Categories
Home > Documents > Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de...

Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de...

Date post: 13-Aug-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
35
Herança e Polimorfismo Leonardo Gresta Paulino Murta [email protected]
Transcript
Page 1: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Herança e Polimorfismo

Leonardo Gresta Paulino [email protected]

Page 2: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Aula de hoje

• Princípios do paradigma OO• Herança• Polimorfismo• Interfaces• Classes Abstratas

Leonardo Murta Herança e Polimorfismo 2

Page 3: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Princípios do Paradigma OO

Abstração Encapsulamento

Modularidade Hierarquia

Leonardo Murta Herança e Polimorfismo 3

Page 4: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Abstração• A representação computacional do objeto real deve se concentrar

nas características que são relevantes para o problema

Leonardo Murta Herança e Polimorfismo 4

Fonte: livro “Object-Oriented Analysis and Design with Applications”

Page 5: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Abstração• São criados somente os atributos e métodos necessários para o

problema em mãos• Quais seriam os atributos e métodos para o objeto Carro em cada

uma das situações seguintes?– Sistema de uma locadora de carros– Sistema de uma revendedora de carros– Sistema de uma oficina mecânica– Sistema do DETRAN

Leonardo Murta Herança e Polimorfismo 5

Page 6: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Encapsulamento• O objeto deve esconder seus dados e os detalhes de sua

implementação

Leonardo Murta Herança e Polimorfismo 6

Fonte: livro “Object-Oriented Analysis and Design with Applications”

Page 7: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Leonardo Murta Herança e Polimorfismo 7

• Atributos e Métodos– Os métodos formam uma “cerca” em torno dos atributos– Os atributos não devem ser manipulados diretamente– Os atributos somente devem ser alterados ou consultados através

dos métodos do objeto

Encapsulamento

Page 8: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Encapsulamento

Chamadas de Métodos

Métodos Públicos

Métodos e Atributos privadosLeonardo Murta Herança e Polimorfismo 8

Page 9: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Encapsulamento

• Em uma classe Quadrado, quais métodos devem ser públicos e quais devem ser privados?– Transladar– Ampliar– Mover ponto– Girar– Adicionar ponto– Calcular área

Leonardo Murta Herança e Polimorfismo 9

Page 10: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Modularidade• O sistema deve ser composto de objetos altamente coesos e

fracamente acoplados

Leonardo Murta Herança e Polimorfismo 10

Fonte: livro “Object-Oriented Analysis and Design with Applications”

Page 11: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Leonardo Murta Herança e Polimorfismo 11

• Um programa OO é um conjunto de objetos que colaboram entre si para a solução de um problema

• Objetos colaboram através de chamadas de métodos uns dos outros

Motorista

CarroFreia

Modularidade

Page 12: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Modularidade

• Em um sistema acadêmico, há conceitos aluno, professor, disciplina, turma e inscrição. Onde colocar cada um dos métodos a seguir:– Exibição do histórico do aluno– Cálculo da média do aluno em uma turma– Obtenção do horário de uma aula– Descrição da ementa de uma disciplina– Cálculo do CR de um aluno

Leonardo Murta Herança e Polimorfismo 12

Page 13: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Hierarquia• Os objetos devem ser organizados no sistema de forma hierárquica

Leonardo Murta Herança e Polimorfismo 13

Fonte: livro “Object-Oriented Analysis and Design with Applications”

Page 14: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Hierarquia• Objetos herdam atributos e métodos dos seus ancestrais na

hierarquia

Leonardo Murta Herança e Polimorfismo 14

Fonte: livro “Object-Oriented Analysis and Design with Applications”

Page 15: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Leonardo Murta Herança e Polimorfismo 15

• 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

Herança

Page 16: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Leonardo Murta Herança e Polimorfismo 16

Veículo

Bicicleta Automóvel Navio Avião

Furgão Carro Caminhão Trator

Exemplo de herança

Teste da Leitura: “subclasse é um superclasse”Ex.: Carro é um Automóvel; Trator é um Veículo; ...

Page 17: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Exemplo de herança(relembrando a classe Carro)

public class Carro {private int velocidade;

public Carro(int velocidadeInicial) {velocidade = velocidadeInicial;

}

public void acelera() {velocidade++;

}

public void freia() {velocidade--;

}}

Leonardo Murta Herança e Polimorfismo 17

Page 18: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Exemplo de herança(criando um carro inteligente)

• Declaração:public class CarroInteligente extends Carro {

public CarroInteligente(int velocidadeInicial) {super(velocidadeInicial);

}

public void estaciona() {// código mágico para estacionar sozinho

}}

• Uso:CarroInteligente tiguan = new CarroInteligente(10);for (int i = 10; i > 0; i--) {

tiguan.freia();}tiguan.estaciona();

Leonardo Murta Herança e Polimorfismo 18

De onde veio isso?

Page 19: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Compatibilidade de tipos• Qualquer subclasse é compatível com a sua superclasse

– Contudo, a reciproca não é verdadeira

Leonardo Murta Herança e Polimorfismo 19

Carro

CarroInteligente

Carro c = new CarroInteligente(20);c.acelera();c.freia();

CarroInteligente c = new Carro(20);c.acelera();c.freia();c.estaciona();

Page 20: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Polimorfismo

• Uma subclasse pode redefinir (sobrescrever) um método herdado– Este mecanismo é chamado de polimorfismo– O polimorfismo se realiza através da recodificação de

um ou mais métodos herdados por uma subclasse– Em tempo de execução, o Java saberá qual

implementação deve ser usada

Leonardo Murta Herança e Polimorfismo 20

Page 21: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Exemplo de polimorfismo(criando um carro de corrida)

• Declaração:public class CarroCorrida extends Carro {public CarroCorrida(int velocidadeInicial) {super(velocidadeInicial);

}

public void acelera() {velocidade+=5;

}}

• Uso:CarroCorrida f1 = new CarroCorrida(10);f1.acelera();

Leonardo Murta Herança e Polimorfismo 21

Qual a velocidade agora?

Page 22: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Herança em Java• Uma classe só pode herdar de uma outra classe

(herança simples)• Caso não seja declarada herança, a classe herda da

classe Object– Ela define o método toString(), que retorna a

representação em String do objeto– Qualquer subclasse pode sobrescrever o método toString()

para retornar o que ela deseja. • Veja os demais métodos da classe Object em

https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html

Leonardo Murta Herança e Polimorfismo 22

Page 23: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Exercício de herança

• Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome e senha. O cliente possui, além do nome e senha, outros dados cadastrais. O funcionário possui métodos relacionados a venda de produtos. O gerente pode fazer tudo que o funcionário pode e também fechamento do caixa. Como é a hierarquia de herança desse sistema no que se refere a controle de usuários?

Leonardo Murta Herança e Polimorfismo 23

Page 24: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Interfaces• Tipo especial de classe, que não tem implementação

– Uma interface define um protocolo– Classes podem implementar uma ou mais interfaces

• Uma interface é um contrato assinado por uma classe– A interface define as responsabilidades da classe– As responsabilidades são mapeadas em métodos– A classe que implementa a interface implementa os métodos– A interface contém somente assinatura de métodos e

constantes

Leonardo Murta Herança e Polimorfismo 24

Page 25: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Interfaces• A definição de uma interface é similar a de uma classe

– Utilizamos a palavra reservada interface– A palavra reservada deve ser seguida do nome da interface– Uma interface pode herdar de outras interfaces (extends)– A interface possui apenas métodos sem implementação

(abstratos) e constantes

public interface Taxavel{

int ANO_INICIO = 1996;double calculaTaxa ();

}

Leonardo Murta Herança e Polimorfismo 25

Fica implícito que é public, static e final

Page 26: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Exemplopublic class CarroImportado extends Carro implements Taxavel

{

<atributos da CarroImportado>

<métodos da CarroImportado>

<métodos implementados da interface Taxavel>}

Leonardo Murta Herança e Polimorfismo 26

Page 27: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Programação orientada a interfaces

Leonardo Murta Herança e Polimorfismo 27

public interface Stack {public Object pop();public void push(Object o);public int size();

}

Implementação

Uso

Page 28: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Programação orientada a interfaces

Leonardo Murta Herança e Polimorfismo 28

public interface Stack {public Object pop();public void push(Object o);public int size();

}

Implementação

adicionaPedido(Stack s) {Pedido p = new Pedido(...);s.push(p);

} Desconhece a implementação

Page 29: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Programação orientada a interfaces

Leonardo Murta Herança e Polimorfismo 29

public interface Stack {public Object pop();public void push(Object o);public int size();

}

Uso

public class MyStack implements Stack {public void push(Object o) {...

Desconhece o uso

Page 30: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Classes Abstratas• Se uma classe possui algum método sem

implementação (abstrato), o modificador abstract deve preceder sua declaração

abstract class Carro{

<atributos da classe Carro><métodos comuns da classe Carro><métodos abstratos da classe Carro>

}

Leonardo Murta Herança e Polimorfismo 30

Page 31: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Classes Abstratas• Não podem ser usadas para instanciar objetos• Devem ser vistas como templates para subclasses

que irão dar uma implementação aos métodos abstratos

• Exemplo:– Classe abstrata Pagamento tem um método abstrato

paga(...)– Classes concretas PagamentoVisa, PagamentoCheque,

PagamentoDinheiro dão comportamento ao método paga(...)

Leonardo Murta Herança e Polimorfismo 31

Page 32: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Classes Abstratas

Leonardo Murta Herança e Polimorfismo 32

public abstract class Pagamento {...public abstract void paga(...);

}

public class PagamentoVisa extends Pagamento {...public void paga(...) {// código de pagamento com cartão Visa

}}

Page 33: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Exercício• Refazer o exercício da Agenda, que lista os

contatos ordenados por nome e por idade– Fazer uma classe abstrata Ordenador com a lógica de

ordenação, porém chamando um método abstrato compara(Pessoa, Pessoa)

– Criar duas classes extras, OrdenadorNome e OrdenadorIdade, que herdam de Ordenador e implementam o método abstrato compara(Pessoa, Pessoa)

– Instanciar o ordenador apropriado para listar os contatos por nome e por idade

Leonardo Murta Herança e Polimorfismo 33

Page 34: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Exercício• Faça uma classe Animal com

um método abstrato “fala”• Faça as classes Homem, Cão

e Gato, herdando de animal, redefinindo o método “fala” para retornar “Oi”, “Au au” e “Miau”, respectivamente

• Crie um vetor de 10 Animais e instancie Homens, Cães e Gatos nesse vetor

• Faça um loop por todos os animais do vetor, pedindo para eles falarem

Leonardo Murta Herança e Polimorfismo 34

Animal

Homem Cão Gato

Page 35: Herança e Polimorfismoleomurta/courses/poo/aula8.pdfExercício de herança •Em um sistema de loja, há 3 tipos de usuário: gerente, funcionário e cliente. Todo usuário tem nome

Herança e Polimorfismo

Leonardo Gresta Paulino [email protected]


Recommended