Instituto Federal de Santa Catarina – IFSC Campus São José Programação Orientada a Objetos Herança e Polimorfismo Prof. Francisco de Assis S. Santos, Dr. São José, 2015. Instituto Federal de Santa Catarina – IFSC Campus São José Herança em POO • O conceito de herança torna mais rápido o desenvolvimento de softwares complexos • Novas classes são criadas baseadas em classes existentes • Classe filha, subclasse ou classe derivada • A classe que herda os atributos e funções de outra classe • Classe pai, superclasse ou classe base • A classe cujo membros são herdados por outras classes Ideal para casos onde são necessárias classes distintas para atacar problemas específicos. Porém, tais classes necessitam compartilhar um núcleo comum Instituto Federal de Santa Catarina – IFSC Campus São José Herança – Exemplo: Sistema para cadastro de produtos • Uma industria da área de telecomunicações necessita de um sistema para cadastrar os produtos que fabrica • Aparelho telefônico • As informações necessárias para o cadastro são: • código, número de série, modelo, cor, peso, dimensões (AxLxP) Instituto Federal de Santa Catarina – IFSC Campus São José Herança – Exemplo: Sistema para cadastro de produtos • A empresa começou a fabricar também telefones sem fio • Os telefones sem fio compartilham todas as características de um telefone, porém possuem novas características • frequência, quantidade de canais, distância de operação • O atual sistema não permite cadastrar essas novas informações O que fazer? 1 - Criar uma nova classe telefone sem fio e colocar nela tudo o que tem na classe telefone mais as características do telefone sem fio? 2 - Herdar as características comuns da classe telefone e adicionar as particulares do telefone sem fio? Instituto Federal de Santa Catarina – IFSC Campus São José Herança – Exemplo: Sistema para cadastro de produtos Instituto Federal de Santa Catarina – IFSC Campus São José Herança : Superclasse Instituto Federal de Santa Catarina – IFSC Campus São José Herança : Subclasse Instituto Federal de Santa Catarina – IFSC Campus São José Herança: Criando instâncias Instituto Federal de Santa Catarina – IFSC Campus São José Membros públicos, privados e protegidos • Os membros privados de uma classe só podem ser acessados pelos demais membros desta mesma classe • Os membros públicos de uma classe podem ser acessados por qualquer outra classe • O modificador de acesso protected apresenta uma restrição intermediaria entre o private e o public • Membros protegidos podem ser acessados pelos demais membros da classe e pelos membros das classes derivadas Instituto Federal de Santa Catarina – IFSC Campus São José Modificador de acesso protected: exemplo Instituto Federal de Santa Catarina – IFSC Campus São José Modificador de acesso protected: exemplo Instituto Federal de Santa Catarina – IFSC Campus São José Herança múltipla • No desenvolvimento de softwares complexos poderemos nos deparar com situações onde uma nova classe possui características semelhantes com duas ou mais classes existente • A linguagem C++ possui o conceito de herança múltipla permitindo que uma classe seja derivada de varias classes base Em Java uma classe só pode derivar de uma classe. O conceito de herança múltipla pode ser obtido em Java fazendo uso de Interfaces Instituto Federal de Santa Catarina – IFSC Campus São José Exercícios 1) Para um aplicativo que trabalha com desenhos Instituto Federal de Santa Catarina – IFSC Campus São José Polimorfismo Polimorfismo é possível na presença de herança, quando são implementados métodos de mesma assinatura na superclasse e nas subclasses, e necessariamente realizando modificações nos métodos das subclasses para atender suas particularidades. Com o polimorfismo, é possível projetar e implementar sistemas que são mais facilmente extensíveis. Os programas podem ser escritos para processar genericamente, como objetos de todas as classes existentes em uma hierarquia. Podem ser adicionadas classes com pouca modificação da parte genérica do programa. As únicas partes de um programa que requerem modificações são aquelas partes que exigem conhecimento direto da classe particular que é adicionada a hierarquia. Instituto Federal de Santa Catarina – IFSC Campus São José Exemplo de Polimorfismo Instituto Federal de Santa Catarina – IFSC Campus São José Exemplo de Polimorfismo Instituto Federal de Santa Catarina – IFSC Campus São José Polimorfismo Instituto Federal de Santa Catarina – IFSC Campus São José Exercícios 2) Desenvolva em Java classes para um aplicativo bancário. Deve conter as classes de conta bancária, poupança, corrente, pessoa, cliente, bancário e gerente. Identifique os atributos e métodos essenciais para o funcionamento do aplicativo. Deve-se aplicar o conceito de polimorfismo. Na classes principal devem ser instanciados objetos e realizadas as operações convencionais de uma conta poupança, conta corrente e atribuições dos funcionários na manipulação das contas dos clientes do banco. Exemplos: Gerente atribui limites de crédito ao cliente e funcionário realiza operações de empréstimos. Lembrando que as operações básicas das contas são impressões de saldos, extratos, compensação de cheques, depósitos e transferências. Instituto Federal de Santa Catarina – IFSC Campus São José Referências Deitel, H. M. & Deitel, P. J. Java, como programar. 4. ed. Porto Alegre: Bookman, 2003. Notas de aula do Prof. Emerson Ribeiro de Mello, 2014. Apresentação Programação por Objectos Java. Parte 6: Herança e Polimorfismo. LEEC@IST, 2015.