Matéria de PSI

Posted by Paulo Ramos & João Martins | Posted in | Posted on 07:36

0

¢Polimorfismo
Um dos conceitos mais complicados de se entender, e também um dos mais importantes, é o Polimorfismo.
O termo polimorfismo é originário do grego e significa "muitas formas".
Na orientação a objectos, isto significa que um mesmo tipo de objecto, sob certas condições, pode realizar acções diferentes ao receber uma mesma mensagem.
Ou seja, apenas olhando o código fonte não sabemos exactamente qual será a acção tomada pelo sistema, sendo que o próprio sistema é que decide qual o método que será executado, dependendo do contexto durante a execução do programa.



¢Desta forma, a mensagem "fale" enviada a um objecto da classe Animal pode ser interpretada de formas diferentes, dependendo do objecto em questão.
¢Para que isto ocorra, é necessário que duas condições sejam satisfeitas:
1.Exista herança de uma classe abstracta.
2.E o casting.
3Herança já definimos previamente, mas o que é uma classe abstracta? E o que é o casting?
Uma classe abstracta é uma classe que representa uma colecção de características presentes em vários tipos de objectos, mas que não existe e não pode existir isoladamente.



¢Por exemplo, podemos criar uma classe abstracta chamada Animal.
¢Um Animal tem diversas características (atributos) e podem realizar diversas acções (métodos) mas não existe a possibilidade de criarmos objectos do tipo Animal.
¢O que existem são objectos das classes Cachorro, Gato, Papagaio, etc. Essas classes, estendem a classe Animal herdando todas as suas características, e adicionando algumas coisas a mais. "Animal" é só uma entidade abstracta, apenas um conjunto de características em comum, nada mais.
 
¢Podemos olhar para um objecto da classe Cachorro e falar "isto é um animal, pois estende a classe Animal", mas nunca vamos ver um objecto que seja apenas da classe Animal, pois isso não existe!
¢É como olharmos para uma pessoa e dizer "você é um objecto da classe SerVivo".
 Essa afirmação está correcta, mas na verdade é um objecto da classe SerHumano, que por sua vez herda todas as características da classe SerVivo (que por sua vez é uma classe abstracta, já que não podemos criar algo que seja apenas classificado como "SerVivo“.


¢Resumindo:
Uma classe abstracta é um conjunto de informações a respeito de uma colecção de outras classes.
Uma classe abstracta sozinha é completamente inútil, já que não podemos instanciar um objecto desta classe, apenas podemos instanciar objectos de classes que estendem a classe abstracta inicial.
Ela serve apenas para simplificar o sistema, juntando num único local diversas características que são comuns a um grupo de classes.
Não esquecer : Nunca poderemos criar um objecto do tipo de uma classe abstracta.
Crie sempre objectos das classes que estendem esta classe abstracta.

Comments Posted (0)

Enviar um comentário