martes, 20 de noviembre de 2012

¡Programando, que es gerundio! (I) - Clases, objetos... ¿qué es eso?

En informática se suele decir que hoy en día casi todo el software se programa "orientado a objetos".

- ¿Pero señor, qué es eso de orientación a objetos?
Pues dicho así suena a... a... a algo tan sencillo como es "traducir" el mundo real al digital. ¿Y qué hay en el mundo real? Objetos (y también personas, animales, árboles, etc. pero vamos a hacer un esfuerzo y consideraremos todo como cosas :P). Y los objetos interactúan entre sí.

- ¿Y un objeto qué es, qué tiene, qué hace?
Un objeto lo podemos definir por algunas características físicas, como puede ser su peso, altura, grosor, forma... pero también por "qué puede hacer". El ejemplo clásico se suele hacer con un perro: A la derecha tenemos a uno muy adorable (antaño, ahora ya ha crecido y ha perdido encanto). De este animalico (que vamos a llamar Ataca) podemos decir que es pequeño, que tiene el pelo marrón y blanco, 4 patas que le llegan hasta el suelo, una cara de quedarse dormido en breve... siendo éstas sus características físicas; pero también podemos decir que respira, camina, come, duerme... y eso es a lo que nos referimos con el "qué puede hacer".



Éstas características son las que, en los objetos, definimos como variables y funciones (o métodos). Las primeras serían las características "físicas" o, dicho de otra forma, las que describirían a ese objeto y su estado. Las segundas harían referencia a las funciones que puede realizar, que pueden verse afectadas (o no) por el estado del objeto.

Perfecto, ya sabemos lo que es un objeto y lo tenemos descrito. Pero ahora bien, en el mundo hay más perros, ¿no? ¿Y por qué a todos esos los llamamos "perros"? Por una razón tan sencilla como es el compartir algunas características. Sin meterme en temas de ADN y demás, podemos afirmar que todos los perros tienen 4 patas, ladran, corren, se mueven... Y es lo que nos lleva a definir una clase.

- ¿Una clase? Yo ya me he perdido hace rato :(
 Una clase es la "abstracción" de varios objetos, es decir, es agrupar las características comunes que tienen varios objetos entre sí e ignorar las diferencias. Agarrándonos a eso, la clase Perro la podemos definir con las características: color de pelo, número de patas, raza... y las funciones de correr, andar, sentarse, dar la pata, correr...

- Mucha chapa y poca chicha... ¿a dónde quieres llegar?
Llegados a este punto hemos definido a nuestro amigo y lo que es un Perro. Ahora que ya distinguimos entre Perro (clase) y el pequeñajo de arriba (objeto) podemos decir que un objeto es una instancia de una clase, es decir, Ataca es un objeto concreto que define las propiedades de la clase Perro haciéndolo único entre otros perros (otros objetos). Esta propiedad es lo que se define como identidad de un objeto (todo objeto ha de ser único, puede haber varios muy iguales, pero tienen algo que los distingue siempre del resto, como 2 gemelos y sus huellas dactilares).

Afianzad la idea, porque en la próxima entrada veremos un ejemplo práctico de esto en Java. Los que no conozcáis el lenguaje de programación os costará adaptaros un poco, pero se puede ir aprendiendo sobre la marcha.

No hay comentarios:

Publicar un comentario

Las "disonancias gramaticales" no son bien recibidas en este blog así que, por favor, respeta la ortografía.
Nuestros ojos lo agradecerán.