¿Qué es un objeto en programación?

publicado en: BlitzMax, Programación | 1

Un objeto en programación es un grupo de terminado de datos que se asocian a un único identificador. En consecuencia, para entender esto, en el mundo real tratamos con objetos en todo momento. Por ejemplo podemos pensar en el objeto pelota, su identificador forma un bosquejo mental de lo que es una pelota, una esfera. Pero un conjunto de cualidades se asocian a ese elemento, un color, un material, un tamaño.

Creando un objeto en programación

Teniendo el mismo ejemplo de una pelota, que en el mundo real se puede crear en base a un molde o clase, que permite crear muchos objetos pelota. Implica esto que cada objeto se diferencia uno de otro, en su color, en su material o en su tamaño.

En el mundo de la programación, antes de crear un objeto, es necesario crear ese molde del cual salen muchos objetos. Este molde se conoce como una Clase, pero en BlitzMax se establece como un Tipo.

El tiempo define las cualidades que tendrá el objeto, sus propiedades exclusivas que al crear un objeto pueden tener diferentes valores y esto hace que se diferencien unos objetos de otros.

Para definir un tipo, usamos la palabra reservada “Type“, seguido del nombre de la clase. Este nombre opcionalmente se recomienda escribirlo con la letra “C” al comienzo. De esta forma identificamos a primera vista que se trata de una clase. Ya su clausula de cierre es un “End Type”.

Type CPelota


End Type

Ya posteriormente, dentro de el cuerpo de la clase o molde que estamos creando. Se establecen variables miembros, estás definen las características que debe tener el objeto como tal cuando sea creado. Estas variables se declaran con la palabra reservada “Field”.

Type CPelota
     Field color:String
     Field material:String
End Type

Lo anterior define una clase o molde. Piense en ello como el molde que se usa para hacer galletas, se pueden hacer muchas, sin embargo cada una se diferencia por su sabor, su textura y su color. Ahora bien, para crear un objeto como tal en base a la clase “CPelota” Se procede creando una variable con ese tipo de dato y se usa la palabra reservada “New” para crearlo.

Type CPelota
     Field color:String
     Field material:String
End Type

Local pelotaNegra:CPelota = New CPelota

Local pelotaAmarilla:CPelota = New CPelota

Como puede ver, tenemos dos objetos pelota, imagínelos en su mente, así podrá lidiar con esos datos cuando programa.

El constructor al crear un Objeto

El anterior ejemplo no es que sea muy práctico, pues se limita a crear dos objetos, pero no tienen datos que procesar. Es aquí donde usamos el constructor, y es el que usamos para crear el objeto, es la palabra reservada “New”. Así que teniendo en cuenta esto, dentro de la estructura del la clase o tipo, establecemos un método llamado “New“.

Type CPelota
     Field color:String
     Field material:String

     Method New()

     End Method
End Type

Local pelotaNegra:CPelota = New CPelota

Local pelotaAmarilla:CPelota = New CPelota

Los métodos, son totalmente iguales a las funciones personalizadas, solo que su uso es exclusivo en la definición de las clases o tipos. Repito esto de clases, debido a que en otros lenguajes encontrara ese termino, pero es totalmente igual.

Continuando con esto, dentro del constructor, iniciamos las propiedades por defecto que debe tener un objeto. Es allí donde se inician los valores de sus propiedades miembro.

Type CPelota
     Field color:String
     Field material:String

     Method New()
           self.color = "Blanco"
           self.material = "Goma"
     End Method
End Type

Local pelotaNegra:CPelota = New CPelota
Print ( pelota.color )
Print ( pelota.material )

Local pelotaAmarilla:CPelota = New CPelota
Print ( pelota.color )
Print ( pelota.material )

La palabra reservada “Self” es opcional y hace referencia al objeto como tal donde hace referencia a su respectiva propiedad o método. Por defecto toda pelota creada será de color blanca y de material de goma. Es por eso que en ambos objetos se presente el mismo dato, aunque no tienen el mismo identificador.

Como se puede observar, en primera instancia nos dirigimos al identificador del objeto como pelotaAmarilla luego mediante un punto nos dirigimos a su propiedad. Esto se hace sea para mostrar el dato o asignar un nuevo.

Type CPelota
     Field color:String
     Field material:String

     Method New()
           self.color = "Blanco"
           self.material = "Goma"
     End Method
End Type

Local pelotaNegra:CPelota = New CPelota
pelotaNegra.color = "Negro"

Print ( pelota.color )
Print ( pelota.material )

Local pelotaAmarilla:CPelota = New CPelota
pelotaAmarilla.color = "Amarillo"

Print ( pelota.color )
Print ( pelota.material )

Destruyendo objetos en programación

Ya para finalizar, un objeto cuando ya no es usado mas debe ser eliminado de memoria de la computadora. Sea por que ya no lo usamos o por que necesitamos que sea destruido. Pensando en la pelota, puede ser que un perro se la lleva en la boca y la destruye. Entonces cuando esto sucede ya no es posible acceder al objeto como tal ni a sus propiedades.

Esto puede suceder de dos maneras, una es que en el entorno de desarrollo de BlitzMax existe un recolector de basura. Se entiende por basura algo que ya no usamos y que no tiene valor para nosotros. Este recolector pasa cuando el programa finaliza y elimina todo el contenido de la memoria. Otra es que nosotros podríamos llamar ese recolector de basura de forma manual indicando que se lleve todo eso y limpie la memoria. Pero la forma mas sencilla es usando la palabra reservada “Null”.

Cuando usamos “Null” el objeto como tal continua en la memoria, solo que ya no tenemos acceso al mismo, es como si estuviera en el fondo del basurero de nuestra ciudad y en cualquier momento cuando pase el recolector lo va a eliminar.

pelotaNegra = Null

Lo anterior implica que ya no es posible recuperar sus datos, pues el objeto no esta a nuestro alcance y posiblemente ya no exista, es irrecuperable.

Sobre la programación orientada a objetos queda pendiente muchas otras cosas más que profundizaremos en otras entradas.

Deja una respuesta

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