Polimorfismoemjavaeokitdesoquetes-23slides

  • Uploaded by: Braz Leonardo
  • 0
  • 0
  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Polimorfismoemjavaeokitdesoquetes-23slides as PDF for free.

More details

  • Words: 1,028
  • Pages: 23
Polimorfismo em JavaTM

por Jorge H C Fernandes ([email protected]) CESAR-DI-UFPE Recife, 1999

Polimorfismo Técnica para criação de código adaptável a mudanças, o que reduz o esforço de manutenção de código Baseia-se na separação entre a interface e a implementação de métodos, e no uso de herança

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Ferramentas Convencionais

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Um Kit de Soquetes

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Polimorfismo e o Kit de Soquetes Usando ferramentas convencionais Vantagens do Kit de Soquetes Uma definição polimórfica para o “Kit” Uma interpretação orientada a objetos para o “Kit” Uma implementação em Java do “Kit” Avaliando o impacto de alterações no “Kit”

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Uma Definição Polimórfica para o “Kit” O ato de girar uma chave de torção acoplada a um soquete pode ser usado em várias situações distintas Todos os soquetes tem uma mesma interface com a chave, que neste caso é um orifício quadrado Sem conhecimento da chave de torção, cada soquete tem um acoplador especial, adaptado a porcas de tamanho diferente Para usar a mesma chave e método de torção ao se criar um novo formato de porca é preciso apenas criar um novo soquete Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Uma Interpretação Orientada a Objetos para o “Kit”  porca = objeto  caixa de porcas de mesmo tamanho = classe  soquete = método  cada soquete (método) se aplica a uma única caixa de porca (classe)  torçer a chave = método polimórfico

 todos os soquetes tem a mesma interface (assinatura de método) com a chave de torção (método polimótfico)  cada soquete (método) tem um acoplador (implementação de méotodo) diferente que se adapta a uma classe de porcas

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Uma Implementação em Java do “Kit de Soquetes” (1) Criar uma classe (abstrata) chamada Porca, para agrupar todas as classes de porca. abstract class Porca { int faces; /* Método abstrato (sem implementação) */ abstract void acopleETorca(); }

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Uma Implementação em Java do “Kit de Soquetes” (2) Uma classe chamada ChaveDeTorcao, que implementa um método polimórfico. class ChaveDeTorcao { /* Aperta qualquer porca */ void aperte(Porca porca) { porca.acopleETorca(); } } Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Uma Implementação em Java do “Kit de Soquetes” (3) Criar uma subclasse Porca de porca para cada tamanho de porca diferente Cada classe deve Porca10mm Porca8mm fornecer sua Porca12mm implementação específica para o método acopleETorca. Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Uma Implementação em Java do “Kit de Soquetes” (4) class Porca8mm extends Porca { void acopleETorca(){ if (...) ... } } class Porca10mm extends Porca { void acopleETorca(){ for (...) ... } } Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Interfaces: Solucionando Problemas na Evolução de Código Polimórfico

O Kit de Soquetes ContraAtaca

Novos Usos para o “Kit”: Apertando Parafusos

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Onde Colocar os Parafusos? class ChaveDeTorcao { /* Aperta qualquer porca */ void aperte(Porca porca) { porca.acopleETorca(); } }

Porca

Porca10mm

Porca8mm Porca12mm

Parafuso

Parafuso8mm

Parafuso10mm Parafuso12mm

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Parafuso é uma Porca? Porca

Porca10mm

Porca8mm Porca12mm

Parafuso Parafuso8mm

Parafuso10mm Parafuso12mm

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Porcas e Parafusos são Primos? Roscável

Porca

abstract class Roscável { abstract void acopleETorca(); }

Parafuso Parafuso8mm

Porca10mm

Porca8mm Parafuso10mm Parafuso12mm Porca12mm

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Reescrevendo o Cliente do Método Polimórfico class ChaveDeTorcao { /* Aperta qualquer porca */ void aperte(Porca porca) { porca.acopleETorca(); } } class ChaveDeTorcao { /* Aperta qualquer roscável */ void aperte(Roscável r) { r.acopleETorca(); } } Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Que Outros Parentescos? ItemEstoque Reciclável

Oxidável Roscável

Porca

Parafuso Parafuso8mm

Porca10mm

Porca8mm Parafuso10mm Parafuso12mm Porca12mm

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Problemas com Herança Múltipla são solucionados em Java através do uso de interfaces Separação entre subclasses e subtipos Classe Descreve as propriedades fundamentais de um objeto

Interface Descrevem papéis desempenhados por um objeto em determinadas situações Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Roscável (Interface ou Classe?) abstract class Roscável { abstract void acopleETorca(); } interface Roscável { void acopleETorca(); }

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Classes e Interfaces ItemEstoque Interfaces Reciclável

Rebite

Porca

Roscável

Oxidável

Parafuso

Esfera

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Interfaces Roscável, Oxidável e Reciclável abstract class Roscável { abstract void acopleETorca(); } interface Roscável { void acopleETorca(); }

interface Oxidável { String índiceOxidação(); }

interface Reciclável { String categoriaReciclagem(); }

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

Implementação de Interfaces abstract class Porca extends ItemEstoque implements Roscável, Oxidável, Reciclável { int faces; abstract void acopleETorca(); abstract String índiceOxidação(); String categoriaReciclagem() {return “Metal”;} } class Porca6mm extends Porca { Porca6mm() { faces = 6; } void acopleETorca() {..} String índiceOxidação() {..} }

Java e Modelo de Objetos. Copyright © 1999, by Jorge H. C. Fernandes. Todos os Direitos Reservados.

More Documents from "Braz Leonardo"

June 2020 14
June 2020 3
Ecg Tutorial
June 2020 21
Ejercicio Monograma 2.docx
October 2019 29