230 likes | 455 Views
Programação Orientada à Objetos. Aula 11 – Polimorfismo. Polimorfismo. ♦ Origem da palavra? O termo polimorfismo é originário do grego e significa “muitas formas”. Poli = muitas Morphos = formas. Polimorfismo – O que é?.
E N D
Programação Orientada à Objetos Aula 11 – Polimorfismo
Polimorfismo ♦ Origem da palavra? O termo polimorfismo é originário do grego e significa “muitas formas”. Poli = muitas Morphos = formas
Polimorfismo – O que é? ♦ A POO diz que Polimorfismo nada mais é que uma referência de uma classe abstrata a uma classe concreta, também é a capacidade de um operador executar a ação operada dependendo do tipo do operando. ♦ Em outras palavras, várias formas de fazer várias coisas.
Polimorfismo • Conceito chave de polimorfismo: • Cada objeto sabe fazer a coisa certa em resposta à mesma chamada de método!
Vantagens do Polimorfismo • Projeto e implementação de sistemas que são facilmente extensíveis • Novas classes podem ser adicionadas a partes gerais do programa com pouca ou nenhuma modificação • Através da utilização do Polimorfismo é possível trazer clareza ao código, diminuir linhas do mesmo e ainda é possível inserir aplicações flexíveis. • O que é necessário alterar no programa quando uma nova classe é gerada?
Vantagens do Polimorfismo • Resposta: • As partes do programa que exige conhecimento direto das novas classes adicionadas
Mais de Polimorfismo • Para utilizar polimorfismo, os objetos devem executar as mesmas ações (métodos), mesmo que com comportamento diferente
Mais de Polimorfismo • OO oferece uma capacidade que exige que classes não relacionadas implementem um conjunto de métodos comuns? • Em outras palavras: • Há como forçar que a implementação de uma ação comum a classes de objetos diferentes sejam implementadas nessas classes? • Ex: mover para Macaco, Pássaro e Peixe
Formas de Polimorfismos • Sobrescrita (overriding): mesma função mas comportamentos diferentes. • Sobrecarga(overloading): nome de uma função usado mais de uma vez com diferentes tipos de parâmetros.Ex: operação soma com dois parâmetros reais e outra com parâmetros inteiros.
Sobrescrita (overriding) • Recurso da linguagem onde uma impleemntação específica é provida pela subclasse de algum método já provido pela superclasse. • A implementação da subclasse substitui a implementação da classe pai. • Métodos sobrescritos DEVEM possuir a mesma assinatura (tipo de retorno, nome do método, tipos e quantidade de parâmetros).
Sobrescritas de função Capacidade de um objeto responder com diferentes comportamentos uma mesma solicitação Exemplo: • Suponha um método que receba um objeto ContaEmBanco e • que neste método seja solicitado a ativação do método Sacar. • O comportamento do objeto vai ser diferente em função do • objeto real: • 1 - ContaEspecial permite que o saldo fique negativo • 2 - ContaComum não O comportamento do objeto será relativo ao objeto real a qual é feita a referência
Sobrecarga(overloading) • Em orientação a objetos, uma sobrecarga refere-se aos métodos de uma classe, sendo que os mesmos podem ser sobrecarregados em relação aos seus nomes, podendo diversos métodos possuir o mesmo nome, porém a os tipos de dados da lista de parâmetros deve ser divergente, conforme pode ser observado na Figura 3.
Sobrecarga(overloading) • No exemplo presente na Figura 3, pode-se observar a repetição da declaração do método escreverNome(), porém nota-se também a diferenciação de seus parâmetros (ora sem parâmetros, ora um texto, ora um número). • Esta situação deixa clara a existência de comportamentos diferentes para um único serviço. • Esta diferenciação deve ser controlada na classe que implementa os métodos, podendo ainda o método invocado chamar outro método de mesmo nome (porém com lista de parâmetros diferente).
Sobrecarga de função Atribui a um único operador a capacidade de agir de diferentes formas em função dos parâmetros recebidos Exemplo: • Na classe ContaEmBanco, o método Depositar possui • duas implementações diferentes: • 1 - uma para depósitos em dinheiro • 2 - outra para depósitos em cheque O serviço escolhido depende do parâmetro enviado junto à ativação do serviço (cheque ou dinheiro)
Sobrecarga de Construtores: • Podemos definir mais de que um construtor seguindo as mesmas regras de sobrecarga de métodos. • A partir do momento em que definimos um construtor diferente do default, o compilador não irá mais aceitar o construtor default.
Resumo (Sobrecarga x Sobreposição) • Sobrecarga • Métodos com mesmo nome, mas assinaturas diferentes • Não necessita herança • Sobreposição (sobrescrita) • Métodos com mesmo nome e assinatura • Necessita de herança
Exercícios • O que é polimorfismo em POO? Quais são seus benefícios? • Qual a diferença entre herança e polimorfismo? • Qual a diferença entre sobrecarga e sobrescrita? • De exemplos práticos (reais) de aplicação de uma sobrecarga e de uma sobrescrita.