Para describir un paradigma es importante conocer sus fundamentos. En la Programación Orientada a Objetos el principal concepto a entender es el de objeto, así que pensemos en objetos.
Es momento de imaginar, describir entidades y sus comportamientos. Es tan simple como inventar personajes de un cuento:
- Se describen las características del personaje
- Su apariencia (cómo es físicamente)
- Su personalidad (cómo podría comportarse o qué tiende a hacer y cómo lo hace)
- Incluso podemos hablar sobre su familia, sus amigos y , en general, sus relaciones con otros personajes
- Se describe un contexto, un problema o una situación en la cual los personajes interactúen
- Pensemos si están en un bosque, o en la ciudad, tal vez están en una fiesta
- Qué hacen en ese momento, cómo se comportan
El cuento se escribe solo
Una vez que hemos definido a los personajes y el contexto en que interactúan, simplemente podemos verlos actuar y todo fluirá naturalmente. Inténtenlo, definan algunos personajes y con esto bastará para construir una buena historia. Si lo prefieren analicen una historia ya hecha y verán que ésta se define, en gran medida, gracias a sus personajes.
Detrás del cuento
Lo que acabamos de hacer, al definir algunos personajes, es abstraer entidades, personas, animales, cosas… objetos. Si bien la descripción de uno de nuestros personajes es un objeto, ahora pensemos que tiene características que puede compartir con otros y que lo definen como lo que es y entonces podemos crear clases. Una clase es la especificación de un tipo de objetos, sin más, solo nos dice qué propiedades suelen tener esos objetos comunes entre sí, nos informa sobre su comportamiento, nos dice qué pueden hacer y cómo lo hacen. Un ejemplo simple es la clase Persona, los objetos de este tipo suelen tener algunas propiedades que podemos listar:
- Sexo
- Nombre
- Edad
- Peso
- Estatura
- Energía
También pueden tener algunas acciones que definen su comportamiento:
- Dormir
- Comer
- Caminar
- Hablar
En general esto puede describir, aunque muy vagamente, a las personas. Recordemos que abstraemos entidades, muchas de las cuales existen fuera de un programa, por lo tanto debemos atenuar algunos aspectos de la realidad para poder hacerlo, es decir, quitarles complejidad para que sean representables computacionalmente. Sin embargo, no hay que limitarnos tanto. Una clase puede ser tan compleja como se requiera, basta con definir más características y hacer más complejo su comportamiento.
De regreso a los objetos
Una vez que tenemos definidas a las personas hagamos un objeto de esta clase, una persona en particular.
De acuerdo a las propiedades que hemos dado a las personas (nuestra lista), debemos especificar los valores de éstas para nuestra persona. Las propiedades son llamadas atributos de la clase.
- Nuestra persona será una mujer
- Se llamará Verónica, bonito nombre ¿no lo creen?
- Tendrá 22 años de edad
- Pesará unos 60 kg
- Su estatura será 1.65 mts
- Su nivel de energía es muy bajo (por ahora)
Su comportamiento es definido en la clase, por lo que no es necesario especificarlo por objeto, hay que recordar que las clases definen a objetos que se comportan de igual manera.
Estos comportamientos se llaman métodos y aparte de indicarnos lo que pueden hacer las personas ¡nos indican también cómo lo hacen! Una persona duerme igual que cualquier otra, es decir, la acción de dormir es la misma: todas las personas respiran al dormir, recuperan energía mientras duermen y mantienen cerrados sus ojos mientras están dormidas.
¡Aquí está Verónica!
Verónica es un objeto de la clase Persona. Podemos decir, que de hecho, es una instancia de la clase Persona por lo tanto posee los atributos y los métodos de las personas. Ahora podemos colocarla en su casa con su familia (más personas), de noche y cansada (con su nivel de energía muy bajo) ¡A dormir, Verónica, que sabes hacerlo!
Es lógico pensar que al dormir nuestra persona recuperará energía, también es cierto que energía es un atributo de ella y sí, así es: ¡Verónica puede modificar sus atributos mediante sus métodos! Por cierto, eso es algo de lo que pueden hacer los métodos de una clase: modificar los atributos en un objeto y no sólo eso, también pueden dar información sobre estos a otros objetos, solo basta pensarlo un poco para darnos cuenta de que así sucede en la vida real, como personas tenemos el método de hablar y dependiendo lo que hable nuestro interlocutor podemos recibir o emitir información sobre nuestros atributos:
PersonaX: Hola, ¿cuál es tu nombre?
Verónica: Hola, mi nombre es Verónica.
Verónica sabe su nombre porque es uno de sus atributos, simplemente por medio de un método puede dar esa información a la persona x.
Construyendo a los Personajes
Así como hemos creado a Verónica podemos instanciar a otra persona, al hacerlo decimos que hemos construido una persona y que para ello se ha usado un constructor. Un constructor es un método especial que sirve para eso mismo, construir un objeto (en este caso una persona). El constructor tiene la particularidad de ser el primer método que se invoca (dentro del periodo de vida del objeto) y en él se pueden inicializar los atributos de nuestro objeto recién creado. Es aquí donde le asignamos sexo, nombre, edad, peso, etc. a nuestra persona. Una vez creado está listo para interactuar con otros objetos.
Ahora Verónica tiene un amigo que puede hablar con ella. Los dos interactúan dentro de un espacio y un contexto determinado, en sus métodos está definido cómo responder ante el entorno y no hace falta escribir el guión que dé paso a una gran historia.
Reblogueó esto en Gustavo Herrera.