Objetos 2.0

 

Seguimos con los objetos?.
 
Bueno, en la entrada anterior, estuvimos viendo algunas cositas del tema objetos.
 
Es hora de ir metiéndonos un poco más en cuestiones técnicas.
 
Cuando recién entramos al mundo de los objetos, entre los primeros conceptos que aparecen están los de clase de objeto e instancia de objeto.
 
Estos términos, explicados por muchos profesores se convierten en extrañas cosas muy esotéricas, abstractas que han generado los dioses del Olimpo para torturar la mente de los mortales haciendolos sentir poca cosa por no entender a los mismos.
La verdad es que nada tiene de complicado y los que lo complican sólo puede ser porque ellos no lo comprenden en realidad o bien porque les dá status de investigadores serios, mmmmm.

¿Qué es una clase?.

 
La definición formal; define un conjunto de objetos con una comunidad de semántica, de atributos, de comportamiento y de relaciones con otros objetos. ¿Y qué significa esto?. Fácil una clase es la plantilla que define a un conjunto de objetos concretos.
Por ejemplo, la clase Persona define a un conjunto de objetos concretos (Juancito, Pedrito, Ana, etc.) pués ocurre que todos ellos:
  • Representan al mismo concepto (comunidad semántica o de significado) un ser humano.
  • Tienen características comunes (comunidad de atributos) como ser; Apellido, Nombre, Fecha de nacimiento, DNI, etc.
  • Hacen cosas en común (comunidad de comportamiento) como ser; duermen, comen, respiran, etc.
  • Y se relacionan con otras personas, viven en casas, estudian en instituciones, etc (comunidad de relación).

¿Qué es una instancia?.

Más fácil todavía es uno de los elementos del conjunto definido por la clase o sea, un objeto concreto. Esto es, Juancito es una instancia de la clase Persona.

Como vemos, no estamos tratando conceptos tan elevados, un poco locos puede ser eso sí.

En la teoría de objetos, al principio todo parece demasiado abstracto, muy elevado, teórico e irrelevante pero, en poco tiempo estos conceptos comienzan a cerrar entre ellos y tienen una solidez abrumadora.

En las clases se incluyen todas las características comunes que van a tener todas las posibles instancias de la misma. Por ejemplo si la clase Persona la usaremos para representar al ciudadano común no tiene sentido que tenga el atributo (característica) Título.
¿Por qué?. Fácil porque no todas las personas tienen algún título universitario, terciario, etc.

Si nuestra clase representara a profesionales entonces sí deberíamos incluir, al definir la clase, el atributo Título.
Si nuestra clase representara a estudiantes entonces deberíamos incluir atributos que representaran su Estado Académico.

De paso, podemos adelantarnos un poco, y ver que tanto los profesionales como los estudiantes tienen características comunes; Apellido, Nombre, DNI, etc. Entonces podemos definir una clase comun, la clase madre, y definir los atributos particulares en clases derivadas, clases hijas. Esto es lo que se denomina herencia y lo trataremos mas adelante. Que nadie se asuste sólo es un adelanto.

Resumiendo, si usáramos lenguaje matemático, una clase es un conjunto y una instancia sería un elemento de ese conjunto.
Recuerdan los diagramas de Venn?.
 
Y cuando se dice objeto a secas, ¿de qué se está hablando?.

Depende puede ser de una clase o de una instancia pero, el contexto de la conversación o texto seguramente nos permitirá darnos cuenta de cuál de las dos opciones se trata.

¿Y cuando programamos hacemos clases o instancias?.

Ambas, primero definimos la clase para poder usarla después. Más tarde en alguna parte de la aplicación que necesitemos crear un objeto concreto, específico de esa clase entonces las instanciamos, palabrita top que significa que hemos creado una instancia de una clase.

En realidad el desarrollador, en tiempo de desarrollo, escribe la clase. Una instancia “toma vida” sólo en tiempo de ejecución.

Bueno algo más hemos visto, espero que no haya sido una discusión filosófica sino algo entendible.
La seguimos.


2 Responses

  1. victor pincay dice:

    Exelente. muy clara y veraz la explicacion

Deja un comentario

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

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© VB-MUNDO – Visual Basic y mucho más
CyberChimps