jueves, 23 de febrero de 2017

Polimorfismo

En programación orientada a objetos, el polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.
La apariencia del código puede ser muy diferente dependiendo del lenguaje que se utilice, más allá de las obvias diferencias sintácticas.
Por ejemplo, en un lenguaje de programación que cuenta con un sistema de tipos dinámico (en los que las variables pueden contener datos de cualquier tipo u objetos de cualquier clase) como Smalltalk no se requiere que los objetos que se utilizan de modo polimórfico sean parte de una jerarquía de clases.

Clase Abstracta Animal.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public abstract class Animal implements IAnimal {
 
 private String nombre;
  
 /**
  * Constructor de la clase Animal
  * @param nombre
  */
 public Animal (String nombre){
  this.nombre=nombre;
  System.out.println("Constructor Animal, " +
    "nombre del animal : "+this.nombre);
 }
  
 /**
  * Retorna el valor de nombre
  * @return
  */
 public String getNombre(){
  return nombre;
 }
 
  
 /**
  * Metodo Abstracto tipoAnimal, la implementación depende
  * de las clases concretas que extiendan la clase Animal
  */
 public abstract void tipoAnimal();
  
}
Como vemos tenemos la clase Abstracta que implementa la Interface IAnimal pero como mencionamos al principio, esta clase no esta obligada a implementar el método comunicarse() ya que también es clase abstracta.
Tenemos el método tipoAnimal() el cual si debe ser declarado como abstracto, evidenciamos también el atributo nombre el cual lo declaramos como private y solo accederemos a el en nuestro árbol de herencia, con el aplicamos un poquito el concepto de Encapsulación (pero no de la forma ideal, podemos ver una pequeña definición en la entrada sobre conceptos Básicos).

No hay comentarios:

Publicar un comentario