POO - Aula 10 - Polimorfismo

6,406 views
6,197 views

Published on

Aula 10 da disciplina de Programação Orientada a Objetos, ministrada pelo Departamento de Computação da Universidade Federal de Sergipe.
Apresenta os conceitos sobre Polimorfismo.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
6,406
On SlideShare
0
From Embeds
0
Number of Embeds
234
Actions
Shares
0
Downloads
140
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

POO - Aula 10 - Polimorfismo

  1. 1. Universidade Federal de SergipeDepartamento de ComputaçãoProgramação Orientada a Objetos PolimorfismoFelipe J. R. Vieira Última Atualização em Novembro de 2011
  2. 2. Recapitulando 103403 – Programação Orientada a Objetos 2
  3. 3. Sumário ➢ Polimorfismo. 103403 – Programação Orientada a Objetos 3
  4. 4. Polimorfismo ➢ Na herança, vimos que todo Gerente é um Funcionario, pois é uma extensão deste. ➢ Podemos nos referir a um Gerente como sendo um Funcionario. ➢ Pois Gerente é um Funcionario. Essa é a semântica da herança. 103403 – Programação Orientada a Objetos 4
  5. 5. Polimorfismo ➢ Na herança, vimos que todo Gerente é um Funcionario, pois é uma extensão deste. ➢ Podemos nos referir a um Gerente como sendo um Funcionario. ➢ Pois Gerente é um Funcionario. Essa é a semântica da herança. 103403 – Programação Orientada a Objetos 5
  6. 6. Polimorfismo ➢ Polimorfismo é a capacidade de um objeto poder ser referenciado de várias formas; ➢ O polimorfismo permite programar no geral em vez de programar no específico. 103403 – Programação Orientada a Objetos 6
  7. 7. Polimorfismo ➢ É a capacidade de tipos mais abstratos representarem comportamentos de tipos mais específicos; ➢ Com polimorfismo, podemos projetar e implementar sistemas que são facilmente extensíveis – novas classes podem ser adicionadas a partes gerais do programa com pouca ou nenhuma modificação, contanto que as novas classes façam parte da hierarquia de herança que o programa processa genericamente. 103403 – Programação Orientada a Objetos 7
  8. 8. Polimorfismo ➢A ideia de polimorfismo só tem sentindo com a existência do paradigma de herança; ➢ Consiste na possibilidade de que uma referência a objetos de uma classe possa se conectar também com objetos descendentes desta. 103403 – Programação Orientada a Objetos 8
  9. 9. Polimorfismo Funcionário Gerente 103403 – Programação Orientada a Objetos 9
  10. 10. Polimorfismo ➢ Deve-se deixar claro que podemos acessar apenas as operações pertencentes a classe associada a referência. O resto das operações do objeto não são acessíveis através desta referência. 103403 – Programação Orientada a Objetos 10
  11. 11. Outros Tipos de Polimorfismo ● Tipo Genérico - ao definir um elemento(que pode ser uma classe, um método ou alguma outra estrutura da linguagem), a definição do tipo sozinha ela é incompleta, ela precisa parametrizar este tipo, ou seja, teoricamente não existiria o tipo sozinho, o que sim existe e o tipo de alguma coisa de alguma coisa; public class Agenda { public static void main(String[] args){ ArrayList<Pessoa> objetos = new ArrayList<Pessoa>(); Objetos.add(new Empregado()); Objetos.add(new Pessoa()); } } Polimorfismo 11
  12. 12. Tipos de Polimorfismo Estáticos ● Polimorfismo estático normalmente é entendido como uma característica da linguagem e não como uma forma de polimorfismo. ●Sobrecarga - é a capacidade de poder definir dois, ou mais métodos, numa mesma classe com o mesmo nome; public class Agenda { public int calculaIdade (int ano , int mes, int dia); public int calculaIdade ( Date data ) ; public int calculaIdade ( Calendar data ) ; } Polimorfismo 12
  13. 13. Tipos de Polimorfismo Estáticos ● Sobrescrita - é a capacidade de poder redefinir a implementação de um método que já foi definido e implementado em uma classe superior na hierarquia de herança. public class Somador { public int calculaSoma ( int inicio, int fim ){ int soma = 0 ; for ( int i = inicio ; i <= fim ; i++ ){ soma += i; } return soma; } } public class SomadorInteligente extends Somador { public int calculaSoma ( int inicio, int fim ){ int umAteInicio = inicio ( inicio+ 1 ) / 2 ; int umAteFim = fim ( fim+ 1 ) / 2 ; return umAteFim – umAteInicio; } } Polimorfismo 13
  14. 14. Tipos de Polimorfismo Estáticos ●Sombreamento - é a capacidade de poder definir duas, ou mais, variáveis com o mesmo nome em escopos diferentes; public class Teste { String nome; // variável no escopo “classe” public void setName ( String nome ){ // variável no escopo “método” this .nome = nome; } } ● Auto-boxing e Auto-unboxing - Em algumas situações é necessário converter valores primitivos para objetos. Isso é conhecido como boxing (colocar em caixas). O processo inverso é chamado unboxing (retirar das caixas). Auto-boxing e Auto-umboxing acontece quando próprio compilador faz essa operação. Polimorfismo 14
  15. 15. Referências ➢ Java: Como Programar 6ª Edição. ➢ Material da Caelum. 103403 – Programação Orientada a Objetos 15

×