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