0% acharam este documento útil (0 voto)
29 visualizações8 páginas

POOP Polimorfismo MOD 03 UD 03

O documento discute o conceito de polimorfismo em programação orientada a objetos, que permite que métodos com o mesmo nome possam ter implementações diferentes dependendo dos parâmetros passados. Isso é útil para situações onde objetos derivados de uma classe podem ser usados de forma genérica, como um método de reprodução de mídia que funciona tanto para filmes quanto para documentários.

Enviado por

joao
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
29 visualizações8 páginas

POOP Polimorfismo MOD 03 UD 03

O documento discute o conceito de polimorfismo em programação orientada a objetos, que permite que métodos com o mesmo nome possam ter implementações diferentes dependendo dos parâmetros passados. Isso é útil para situações onde objetos derivados de uma classe podem ser usados de forma genérica, como um método de reprodução de mídia que funciona tanto para filmes quanto para documentários.

Enviado por

joao
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 8

3

MÓDULO 3
Conceitos básicos II
Iniciação à Programação orientada a Objetos

Polimorfismo
3 Polimorfismo

Conteúdo
3.1 Polimorfismo 04
3. Polimorfismo

3.1 Polimorfismo
“O polimorfismo é um abrandamento do sistema de tipos, de tal forma que uma referência a uma classe (atributo,
parâmetro ou declaração local ou elemento de um vetor) aceita direções de objetos dessa classe e das suas classes
derivadas (filhas, netas…)”.

O polimorfismo permite que objetos distintos disponham de métodos com o mesmo nome ou inclusivamente
que um mesmo objeto possa apresentar nomes de métodos idênticos, mas com distintos parâmetros. Trata-se,
praticamente, do conceito de sobrecarga de métodos. Por outras palavras, refere-se à possibilidade de existirem
vários métodos dentro de uma classe, que se chamem de forma igual, mas que recebam distintos tipos ou
números de parâmetros:

Exemplo:

soma (int x , int y)


soma (int x , int y , int z)
soma (int x , float y)

Este conceito será complicado de entender inicialmente, mas será mais fácil uma vez que se tenham definido
todos os tipos de dados Java como a herança. O polimorfismo e a herança são dois conceitos intimamente ligados.
Conseguimos implementar polimorfismo em hierarquias de classificação, que ocorrem através da herança. Por
exemplo, temos uma classe veículo e dela dependem várias classes filhas, como carro, mota, autocarro, etc.

Em Java existem inúmeros métodos polimórficos, ou seja, várias versões do mesmo método, que usaremos
quando considerarmos oportuno num programa, a única condição, é não receberem o mesmo número ou tipo
de parâmetros.

Exemplo:

class Teste{

public void pintar( int x , int y){


System.outr.println( x+y);
}

public void pintar( String a , String b){


System.outr.println( a+b);
}

public void pintar( int x , int y,String z){


System.outr.println( (x+y) + “<>” + z);
}

04 MÓDULO 3 • Iniciação à Programação orientada a Objetos


3. Polimorfismo

Apresenta três métodos com o mesmo nome, mas parâmetros distintos. Contudo, não poderemos dispor de
dois métodos pintar que recebam o mesmo número e tipo de parâmetros, pois a sua implementação dentro da
classe Teste geraria um erro:

public void pintar( int c , int m){


System.outr.println( x+y);
}

Tal como funcionam as linguagens fortemente tipadas, uma variável deverá sempre apontar a um objeto da classe
que se indicou nesse momento da declaração. Uma função cujo parâmetro tenha sido declarado de uma classe,
apenas aceitará receber objetos dessa classe. Um array que se tenha declarado, que seja de elementos de uma
determinada classe, apenas aceitará que preenchamos os seus campos com objetos dessa classe declarada.

Veículo[] meusVeículos = new Veículo[3];

Essa variável meusVeículos é um array e nela foi declarado que o conteúdo dos campos será objeto da classe
Veículo. O polimorfismo é o mecanismo pelo qual podemos “relaxar o sistema de tipos”, de modo que nos aceite
também os objetos das classes filhas ou derivadas.

Logo, o “relaxamento” do sistema de tipos não é total, mas tem que ver com as classificações de herança que
tenhamos nos nossos sistemas de classes. Se definirmos um array com campos de uma determinada classe,
o compilador também aceitará que coloquemos nesses campos objetos de uma classe filha da qual tenha sido
declarada. Se declararmos que uma função recebe como parâmetros objetos de uma determinada classe, o
compilador também aceitará que sejam enviados, na invocação, objetos de uma classe derivada daquela que
foi declarada.

No nosso array de veículos, em concreto, devido ao polimorfismo, podemos ter, nos elementos do array, não
só veículos genéricos, mas também todos os objetos de classes filhas ou derivadas da classe Veículo, ou seja,
objetos da classe Carro, Mota, Autocarro ou qualquer filha que tenha sido definida.

PARA QUE NOS SERVE NA PRÁTICA?

No cinema são reproduzidas longas-metragens. Podemos, porém, ter vários tipos de longas-metragens, como
filmes ou documentários, etc. Talvez os filmes e os documentários tenham diferentes características, distintos
horários de audiência, diferentes preços para os espectadores e por isso decidimos que a classe Longa-metragem
tenha classes filhas ou derivadas como Filme ou Documentário.

Imaginemos que na classe Cinema se cria um método denominado reproduzir(). Este método poderá receber
como parâmetro aquele que se quer emitir numa sala de cinema e poderão chegar, por vezes, objetos da classe
Filme e outras vezes objetos da classe Documentário.

reproduzir(Filme filmeParaReproduzir)

Contudo, se tivermos de reproduzir documentários, terão de ser declarados:

reproduzir(Documentário documentaParaReproduzir)

Iniciação à Programação orientada a Objetos • MÓDULO 3 05


3. Polimorfismo

Provavelmente o código de ambos os métodos é exatamente o mesmo. Colocar o filme no projetor, clicar em
play, criar um registo com o número de bilhetes vendidos, parar o filme quando terminar, etc. É realmente
necessário realizar dois métodos? Aqui é onde o polimorfismo nos ajuda. Poderíamos criar perfeitamente um
método reproduzir() que recebe a longa-metragem e onde poderemos receber todo o tipo de elementos, filmes,
documentários e qualquer outra coisa semelhante, que seja criada futuramente.

Então o que permite fazer, é declarar o método reproduzir() indicando que o parâmetro que vamos receber é um
objeto da classe pai Longa-metragem, mas onde realmente a linguagem e o compilador aceitam qualquer objeto
da classe filha ou derivada Filme, Documentário, etc.

reproduzir(Longa-metragem elementoParaReproduzir)

06 MÓDULO 3 • Iniciação à Programação orientada a Objetos


3. Polimorfismo

Iniciação à Programação orientada a Objetos • MÓDULO 3 07

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy