Programación Orientada a Objetos – Clase e Instancia

Este post es parte de una serie de artículos sobre POO y viene a continuación de Características de la P.O.O.

¿Qué es una Clase?

Cuando decimos «ave», sabemos que nos referimos a «algo» con plumas, pico, dos patas, etc. No importa realmente si hemos visto un ave o no, o si tenemos un ave frente a nosotros; entendemos claramente que la palabra «ave» se refiere a alguna cosa que cumple con unas características específicas, se comporta de una forma concreta, etc, etc. No es más que una palabra, pero nos permite clasificar las cosas. Por ejemplo, sabemos que una gallina es un ave y que un perro no es un ave.

La clasificación es algo que hacemos todos los días, a cada momento (entre otras cosas, nos libra de utilizar medias como guantes o bañarnos en el comedor en vez de en la ducha). Cada vez que decimos que algo es alguna cosa, estamos clasificándolo, asociándolo a una clase.

Sin embargo, sabemos que la palabra ave no se refiere a un animal concreto, sino a una serie de animales. Ave es la palabra que usamos para identificarlos en un grupo, pero no podemos decir hoy haré volar la palabra «ave» (bueno, puedes decirlo, pero estarás cada vez más cerca del manicomio), en tal caso siempre nos referiremos a esta o aquella ave, siempre hablaremos de un animal concreto. La palabra es lo que conocemos como un concepto, una abstracción.

En la POO ocurre igual, una clase no es más que una serie de código que define a todos los elementos relacionados con ella. Así, podríamos escribir la clase ave colocando en ella todas las características que tienen las aves (pico, color, alto, ancho, patas,…) esas características las llamaremos en lenguaje de programadores, propiedades.

Pero la cosa no termina allí, resulta que las aves tienen también ciertos mecanismos específicos, como comer, dormir, reproducirse (¡aléjate Pertvertvaz! 😛 ), etc. Estos mecanismos los llamamos métodos.

Por último, también sabemos que las aves reaccionan ante ciertos sucesos, como peligro, atracción, defensa… A esto lo llamaremos eventos.

Entonces, vemos que una clase es algo así como el concepto de lo que queremos hacer, es como la idea (concebida al detalle) de la cosa, del objeto; pero igual que con las ideas, no puedo hacer nada directamente con una clase (puedes sentarte en una silla, pero no en tu idea de una silla). Sin embargo, esta idea será la que dé forma al objeto que crearemos (que tendrá las características, mecanismos y comportamientos que habíamos pensado en nuestra idea).

Comparación Clase - Concepto

¿Qué es una Instancia?

Bien, decíamos que una clase es como la definición de un objeto, pero no es el objeto en sí, del modo como una idea no es una cosa física (el ejemplo de la silla). Así que para sentarnos necesitaremos convertir esa idea en algo, en un objeto real; a ese objeto lo llamamos instancia.

En un mismo proyecto puedo tener una o más instancias de una misma clase sin problemas.

Cada vez que creamos una nueva instancia, ésta adquiere las propiedades, métodos y eventos de la clase a la que pertenece (es lo que permite la relación es un), sin embargo, cada instancia es independiente de las otras; esto nos da dos ventajas:

  1. Si hago algún cambio en la clase, todas las instancias de esta clase se actualizarán automáticamente; esto nos permite hacer cambios sin tener que ir a cada una de las instancias (se aplica el mismo principio de herencia, aunque a un nivel diferente).
  2. Al ser independientes de las otras instancias, puedo darles valores diferentes sin que afecten a las demás (como tener una silla negra, una roja, una más alta, etc.). Aunque comparten la misma estructura, pueden programarse individualmente, dando versatilidad y flexibilidad al código.

Ahora que tenemos la base teórica, debemos dar un paso más práctico, en el siguiente post aprenderemos Cómo Escribir una Clase

Technorati Tags: , ,


52 respuestas a “Programación Orientada a Objetos – Clase e Instancia

  1. Todo me queda claro, vaya que si conoces mucho sobre POO… y eso se nota por la forma como lo explica… con parábolas… mmm… recuerdo vagamente que alguien hace más de 2000 años atrás hizo lo mismo… 🙂

  2. Eres Magnifico de veraz deberias ser quien me diera clases!!! xD
    La Forma En Que Explicas Todo Esto Lo Hace Parecer Sumamente Facil, Sinceramente Con Mi Actual Maestro Me Costaba Mucho Enterder Las Cosas!!
    De Veras Gracias!!! Sigue asi.

    Un Saludo Desde Merida Yuc Mex

  3. Man dejame decirte que he leido varios cursos y/o manuales de poo, java, c++, desde las tipicos «Aprenda poo como si estuviera en primero» o «Java para principiantes» hasta los cursos avanzados y en ninguno habia encontrado una explicacion tan clara de los que es una clase y una instancia y el porque de diferentes instancias. Muchas felicidades por esa facilidad para darte a entender

  4. Fricky, me satisface ver como tus cyber alumnos se expresan de la forma como le explicas. Muchos comentarios positivos que parecen genuinos, ciertamente.

    Bueno, a lo que vine… Un amigo tuyo me dice que puedes diseñar maravillas y estoy trabajando en un blog social (de tendencia social y de cooperar con los mas desposeidos) que requiere de la creatividad de un buen diseñador web.

    Perdona que me entrometa aca en tu clase, pero como hago para contactarte?

    Saludos,

    Armando

  5. Es genial la forma como transmites los conocimientos concerniertes a la POO solo queria felicitarte. seria bueno que pudieras dar clases mas adelante en un colegio. segui asi de humilde y no cambies y si cambias hazlo para bien.

  6. De la misma forma que todo el grupo de hinchas, te estoy agradecido pues ya era hora de encontrar información más detallada para poder comprender rápidamente este nuevo mundo.
    Gracias.

  7. oooooooh!!! Mis respetos hermano! que manera de transmitir un conocimiento de manera mas natural y amigable! Muchas felicidades y gracias por compartir!

  8. FELICITACIONES, yo soy NUEVO en java y digo nuevo porque es la primera vez que la uso como lenguaje de programación, e tu explicacion me hiso entender esta parte que no tenia sentido para mi, continuare leendo tus post y espero que todos sean asi de didacticos.

  9. Qué buena explicación, pero qué buena. Soy un programador de la vieja escuela (Cobol), y en mis intentos por entender la poo, nunca he leído algo tan escueto y bien explicado. Como decía Góngora «lo bueno, si breve, dos veces bueno». Y ahora he entendido la diferencia entre clase y objeto. MIL GRACIAS!!!!

    1. Hola Alberto. Entiendo lo que dices, pero debes entender lo que digo acá fuera del léxico común de la programación, mi intención acá es «traducir» estos términos a un contexto comprensible por no programadores. Fuera de la programación los términos «atributo» y «propiedad» son intercambiables casi siempre

Deja un comentario