Objetos En La Programación Orientada A Objetos

Objetos en la programación orientada a objetos

Ya hemos visto en artículos anteriores que son los objetos en la programación orientada a objetos pero en este artículo quiero entrar en detalle con una definición bastante aproximada de qué es un objeto y ver diferentes acciones que podemos hacer con ellos como la clonación o la comparación entre ellos, así que… vamos allá.

¿Qué son los objetos en la programación orientada a objetos?

Pues bueno, si eres nuevo y llegas a este tipo de programación lo primero que pensarás es que deben de ser algo importante dentro de este paradigma y así es ya que dentro de la POO son el pilar fundamental y los utilizamos para representar objetos cotidianos de la vida real. Pero antes de entrar mas en el barro vamos a ver qué es lo que dice la wikipedia

En el paradigma de programación orientada a objetos (POO, o bien OOP en inglés), un objeto es una unidad dentro de un programa de computadora que consta de un estado y de un comportamiento, que a su vez constan respectivamente de datos almacenados y de tareas realizables durante el tiempo de ejecución. Un objeto puede ser creado instanciando una clase, como ocurre en la programación orientada a objetos, o mediante escritura directa de código y la replicación otros objetos, como ocurre en la programación basada en prototipos.

Así es, imagínate a un objeto como una estructura no como un valor. Una estructura como un conjunto de valores y de posibles acciones que puede realizar encapsuladas en una única unidad. Para que lo visualices piensa en el número 5. Imagínate que por el hecho de ser un número contiene por si mismo su símbolo, positivo en este caso, y puede sumarse una unidad y restarse una unidad.

Por lo cual el objeto del número que hemos descrito sería tal que así:

Lo interesante de los objetos es que cuando los utilizamos en funciones y los pasamos como argumento, no estamos pasando su valor como si se tratase de un tipo de dato como un integer por ejemplo. Un objeto no es un valor. Al pasarlos a una función como argumento estamos pasando su referencia.

Si recuerdas post anteriores, pasar un argumento por referencia significa que lo que modifiquemos dentro de la función se verá afectado fuera de la función también y esto es así porque la referencia es el identificador que indica donde se encuentra ese valor u objeto en memoria. No se hace una copia vaya…

Con los objetos todos son referencias, cuando los pasamos a una función o los devolvemos o se asigna a otra variable, todas las distintas variables guardan una copia de ese identificador que apunta al mismo objeto.

Pero… ¿y qué cosas podemos hacer con los objetos?

Comparación de objetos

Si tenemos dos objetos, podemos evaluar que estos sean iguales o no. Cuando comparamos dos instancias, se realiza una comparación de bajo nivel mirando que todos los valores y atributos sean iguales y que pertenezcan a la misma clase. Podemos realizar dos tipos de comparaciones utilizando diferentes operadores:

  • Operador de comparación: se comparan de forma sencilla las variables y que ambas instancias pertenezca a la misma clase. Para ello utilizamos el operador doble igual (==)
  • Operador de identidad: dos objetos son iguales si sus variables son idénticas sí y sólo sí hacen referencia a la misma instancia de la misma clase. . Para ello utilizamos el operador triple igual (===)
Offtopic:

En Java tenemos los métodos mágicos __equals(),__compareTo() y __compare() para comparar objetos. Aquí mas información


Clonación de objetos

Otra acción que podemos hacer con ellos es clonarlos. A veces no nos interesa hacer una copia de un objeto realizando una replicación completa de sus propiedades sino que nos interesa hacer una replica que genere una nueva instancia de ese primer objeto y aquí es donde entra la clonación.

Si queremos hacerlo tenemos que utilizar la palabra reservada clone que internamente hace una llamada al método mágico __clone() del objeto. Si en lugar de utilizar la palabra reservada intentas hacer una llamada al método mágico no te va a dejar realizarlo.

Serialización de objetos

Te estarás preguntando que qué coño es la serialización ¿no? Pues no es otra cosa que el proceso de representar mediante un string, texto vamos, un objeto. Cuando serializamos uno de ellos lo que pasa es que obtenemos en formato texto el nombre de la clase junto con los valores de ese objeto.

Podemos llevarlo a cabo mediante la función serialize() que tal y como indica su documentación genera una representación almacenable de un valor que no pierde ni su tipo ni su estructura.

Por otro lado, si ya tenemos en un string la representación de un objeto y queremos volver a convertir esa representación a objeto podemos hacerlo mediante la función unserialize() que realiza el proceso contrario a serialize()

Todo este proceso de serializar y deserializar un objeto forma parte del sistema de sesiones de php. Cuando registramos un objeto en la sesión este se serializa automáticamente y automáticamente también se deserializa para cada petición.

Iteración de objetos

La iteración de objetos es el proceso que permite recorrer e iterar cada una de las propiedades de un objeto. Imagina que tienes el objeto de una clase y quieres saber que valores tienen sus propiedades, podrías hacerlo con la función serialize() claro pero no sería una buena practica, lo haríamos a través de un bucle foreach, aunque únicamente devolverá todas las propiedades public si no lo implementamos en una función dentro de la clase.

Ejemplo:

Como se ve en el script, el bucle que se encuentra fuera de la clase únicamente tendrá acceso a las propiedades públicas y sin embargo mediante la función iterar() podemos acceder a todas las propiedades, públicas, protegidas y privadas.

También podemos hacer uso de interfaces para realizar este propósito e implementar la interfaz Iterator. Esta interfaz nos da la herramientas para poder decidir y definir como ha de iterarse un objeto y que valores serán utilizados.

Pues nada chachos, con este post hemos definido qué son los objetos en la programación orientada a objetos y qué acciones podemos hacer con y sobre ellos. Se que el tema es duro y espesito así que si tienes alguna pregunta no dudes en hacérmela a través de los comentarios o poniéndome un tweet mediante el siguiente banner y te prometo que te responderé lo antes posible.

@gorkakatua #faqsGorkamu pregúntame por twitter cualquier cosa y vemos cómo lo solucionamos.

 

Hala a mamarla!

¿Te ha parecido este un artículo de 5 estrellas? Dame tu valoración:
Review Date
Reviewed Item
Objetos en la programación orientada a objetos
Author Rating
51star1star1star1star1star

Gorka Muñoz Andrés

Me llamo Gorka Muñoz y soy un desarrollador melómano. Combino a la perfección la búsqueda de nuevos grupos con la pasión por la tecnología. Desde chiquitito me ha gustado la programación, ahora que soy mayor estoy metido en el mundo del SEO sin olvidarme del /Dev.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *