Y seguimos con los 4 pilares de la programacion orientada a objetos:
Herencia
La herencia básicamente consiste en que una clase puede heredar sus variables y métodos a varias subclases (la clase que hereda es llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos y métodos propios, tiene incorporados los atributos y métodos heredados de la superclase. De esta manera se crea una jerarquía de herencia.
Por ejemplo, imaginemos que estamos haciendo el análisis de un Sistema para una tienda que vende y repara equipos celulares.
En el gráfico vemos 2 Clases más que posiblemente necesitemos para crear nuestro Sistema. Esas 2 Clases nuevas se construirán a partir de la Clase Celular existente. De esa forma utilizamos el comportamiento de la SuperClase.
En general, podemos tener una gran jerarquía de Clases tal y como vemos en el siguiente gráfico:
Polimorfismo
Quizá es uno de los pilares de la programación OO, más dificiles de entender. El polimorfismo se aplica en los métodos y se refiere a que el mismo método puede ser usado para diferentes fines según se necesite.
Para explicar mejor este concepto vamos a echar mano de la implementación en
java. En ese lenguaje se tienen dos clases de polimorfismo uno se llama
sobrecarga y el otro se llama sobre
escritura. Esta definición puede variar según la implementación, sin embargo el concepto de polimorfismo es el mismo.
Polimorfismo de Sobrecarga
La sobrecarga se refiere a que un método puede implementarse para varios fines con el mismo nombre en la misma clase, el ejemplo más simple se observa con los métodos constructores que se pueden implementar con varios parámetros diferentes como el constructor vacio y el constructor lleno.
//Ejemplo de polimorfismo de sobrecarga en Java
public class Celular{
int numero;
//dos metodos constructor
public Celular(){
}
public Celular(String numero){
}
}
Polimorfismo de sobre escritura
La sobre escritura se aplica cuando una clase hereda de otra u otras (en java solo existe herencia simple), en ese sentido la clase hija hereda sus atributos y métodos, sin embargo esto no implica que los métodos se tengan que utilizar estrictamente en la forma que lo hace su padre, en caso de haber cambios en la implementación de un método este se escribe de nuevo en la clase hija con sus particularidades.
Ejemplo:
(diagrama de clases de un televisor virtual)Como podemos observar, tenemos la clase TelevisorVirtual que hereda de Televisor, tiene dos metodos que se reescriben, estos son, subirVolumen y bajarVolumen, solo que en televisorVirtual utiliza diferente implementacion