¿Qué es un objeto en el mundo de la programación? ¿Qué son la herencia y el polimorfismo?

En la vida real, todo lo que nos rodea son objetos. Ahora mismo estoy sentado frente a una mesa, escribiendo en el teclado de mi ordenador, y me acompaña una taza de té. Cada objeto tiene unas características, y sirve para algo. Imaginemos la taza. Es una taza roja, su base es redonda, contiene té, y tiene un asa semicircular. La taza puedo llenarla, beber de ella o lavarla. Lo primero, son sus características. Lo segundo, son sus funcionalidades, y sirven para describir su comportamiento.

La programación orienada a objetos (POO), pretende llevar el mundo real (con sus objetos) a la resolución de problemas mediante software. De esta forma, un objeto es un elemento software que posee una serie de características (conocidas como atributos o propiedades) y una serie de funcionalidades (conocidas como métodos). En la POO, todo es un objeto. Un programa no es más que un conjunto de objetos, con unos atributos concretos, que se comunican entre sí utilizando los métodos.

Una clase, es la definición de un objeto. Contiene la definición de sus atributos y métodos. Para poder utilizarla, dicha clase debe instanciarse. Al instanciar la clase, obtenemos el objeto.

En la mayoría de lenguajes de programación POO, los objetos tienen 2 características principales:

  • Herencia: un objeto puede heredar atributos y métodos de otros objetos. Por ejemplo, imaginemos un objeto genérico "coche". Puede tener unas características como 4 ruedas, un volante, un pedal para acelerar y un pedal para frenar. Puede tener unos métodos como acelerar y frenar. Imaginemos ahora los objetos "coche con cambio manual" y "coche con cambio automático". Ambos son coches, por lo tanto, podemos decir que tienen 4 ruedas, un volante, un pedal para acelerar y un pedal para frenar, y aceleran y frenan. Pero el coche con cambio manual tiene pedal de embrague, y necesita un método para cambiar de marcha; sin embargo, el coche con cambio automático tiene una caja de cambios automática, y no precisa del método "cambiar de marcha". Ambos heredan todas las propiedades y métodos de "coche", pero añaden sus características particulares.
  • Polimorfismo:es la capacidad de que distintos objetos respondan a un mismo método. Volvamos al ejemplo de mi taza, ahora vacía. Un método soportado por mi taza es "llenar". Pero, si lo pensamos bien, un vaso se llenaría de la misma forma que una taza, ¿verdad? La única diferencia es que una taza tiene asa, y un vaso no, pero la mecánica de llenado es exactamente la misma. Pues eso es el polimorfismo.