A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng

Apresentações semelhantes


Apresentação em tema: "UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng"— Transcrição da apresentação:

1 UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng. da Computação IF62C - Fundamentos de Programação Semana 10 – parte III: Polimorfismo Prof.a Tânia Preto / Prof. Robinson Vida

2 Polimorfismo – Características (i/ii)
Polimorfismo é um termo proveniente do grego e significa "muitas formas“; O polimorfismo não é um pensamento novo para o ser humano pois está contido no dia a dia, principalmente na linguagem. Exemplos: Seja o termo “abrir” e as seguintes situações: Abrir uma porta; Abrir uma caixa; Abrir uma janela; Abrir uma conta bancária. Obs.: A ação de abrir vai ser executada de diferentes formas de acordo com a situação. O termo abrir é polimórfico, ou seja, possui várias formas ou “facetas”, cada uma executada de uma maneira.

3 Polimorfismo – Características (ii/ii)
No contexto da programação, o polimorfismo permite a existência de métodos de mesmo nome contendo códigos diferente selecionado por algum mecanismo automático; Ideia básica: “Um nome e vários comportamentos”; Vantagens: É possível controlar todas as formas de uma maneira mais simples e geral, sem ter que se preocupar com cada objeto especificamente; Independência da implementação, enxerga-se apenas uma o nome do método; O polimorfismo permite a adaptação e compreensão de um sistema sem existir a necessidade de alterar substancialmente o que já existe.

4 Polimorfismo – Tipos (i/ix)
Vários tipos (taxonomias) para polimorfismo:

5 Polimorfismo – Tipos (ii/ix)
O polimorfismo pode ocorrer das seguintes formas: Polimorfismo ad-hoc - sobrecarga: Métodos com mesmo nome, funcionalidades similares na mesma classe; Para sobrecarregar um método é necessário criar diferentes definições de métodos na sua classe, todos com o mesmo nome, mas com diferentes parâmetros (número de argumentos ou tipos); A utilização será de acordo com o tipo dos parâmetros que lhes são passados; Ex.: diferentes métodos  adição() : int addition (int, int):  soma de inteiros float addition (float, float): soma de reais char addition (char, char): concatenação

6 Polimorfismo – Tipos (iii/ix)
Polimorfismo ad-hoc – sobrecarga – Ex.: O método atualizarDivida pode ter várias formas, de acordo com o parâmetro utilizado, um determinado método é executado. Métodos de mesmo nome estão dentro da mesma classe;

7 Polimorfismo – Tipos (iv/ix)
O polimorfismo pode ocorrer das seguintes formas: Polimorfismo ad-hoc – sobrecarga – Ex.: Tipos de parâmetros diferentes

8 Polimorfismo – Tipos (v/ix)
O polimorfismo pode ocorrer das seguintes formas: Polimorfismo ad-hoc – sobrecarga – Ex.: Tipos e números de parâmetros diferentes

9 Polimorfismo – Tipos (vi/ix)
Polimorfismo ad-hoc - coerção: Meio para contornar a rigidez dos tipos monomórficos; Existe um mapeamento interno entre tipos; Exemplo: Se o operador soma é definido como tendo 2 parâmetros reais e ocorre a passagem de um inteiro e um real são como parâmetros, o inteiro é “coargido” ou “convertido” para um real; Java permite a coerção.

10 Polimorfismo – Tipos (vii/ix)
Polimorfismo Universal - herança ( ou inclusão): Redefinição de métodos uma subclasse filha; A redefinição de um método em subclasses herdeiras de uma classe base chama-se especialização; Permite ocultar detalhes das classes especializadas de uma família de um objeto, através de interface comum (classe básica); Ex.: Jogo de xadrez com subclasses  rei, rainha, louco, cavaleiro, torre e peão, filhas da classe peça; É possível ter vários métodos  movimento (), um em cada classe,  realizando o movimento de acordo com a classe do objeto invocado no momento da chamada.

11 Polimorfismo – Tipos (viii/ix)
Polimorfismo Universal - herança ( ou inclusão) – Exemplo:

12 Polimorfismo – Tipos (ix/ix)
Polimorfismo Universal - paramétrico: Uma única função pode ser aplicada a um conjunto de tipos (sem qualquer relação entre si); Métodos paramétricos também são chamadas de métodos genéricos; Exemplo: Tamanho de um objeto, sendo este objeto de qualquer tipo; Algumas linguagens, como C++, permitem definir templates de funções, usando tipos de dados como parâmetros, como no exemplo seguinte: template <class T> void troca(T& a, T& b) { T temp = a; a = b; b = temp; } T é um tipo genérico, permitindo várias formas de objetos.

13 Polimorfismo – Mais exemplos - 1
O método área pode ser redefinido em cada subclasse; Dependendo de qual classe invoca o método área, será calculado a área do objeto correto; Métodos de mesmo nome podem estar em classes diferentes;

14 Polimorfismo – Mais exemplos - 2
O método área pode ser redefinido em cada subclasse; Dependendo de quem invoca o método área, será calculado a área do objeto correto; Métodos de mesmo nome podem estar em classes diferentes;

15 Polimorfismo – Mais exemplos - 3
Exemplo de sobrecarga do método construaRetang em Java com duas diferentes implementações.

16 Polimorfismo – Mais exemplos - 4
Exemplo de sobrecarga do método construaRetang em Java com mais uma implementação e formas de uso.

17 Polimorfismo – Mais exemplos - 5
Exemplo de sobrecarga do método construaRetang em Java e diferentes formas de uso.

18 Polimorfismo – Mais exemplos - 6
class MinhaClasse { void metodo (short i, short j) { System.out.println("metodo1 - i="+i+" j="+j); } void metodo (int i, int j) { System.out.println("metodo2 - i="+i+" j="+j); void metodo (long i, long j) { System.out.println("metodo3 - i="+i+" j="+j); Exemplo de coerção em Java – métodos com tipos diferentes

19 Polimorfismo – Mais exemplos - 7
Class testaCoercao { static public void main (String Arg[ ]) { MinhaClasse o=new MinhaClasse( ); short s1=1, s2=2; int i1=3, i2=4; long l1=5, l2=6; o.metodo(s1,s2); // não há conversão -> 1o. método o.metodo(s1,i2); // s1 para int -> 2o. método o.metodo(s1,l2); // s1 para long -> 3o. método o.metodo(i1,i2); // não há conversão -> 2o. método o.metodo(i1,l2); // i1 para long -> 3o. método o.metodo(l1,s2); // s2 para long -> 3o. método o.metodo(l1,l2); // não há conversão -> 3o. método } } Exemplo de coerção – conversão de tipos


Carregar ppt "UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng"

Apresentações semelhantes


Anúncios Google