Introducción a POO II: Clases de objetos

instanciasDeClaseCasaEn el mundo real los objetos pueden ser de diferentes tipos. Los objetos del mismo tipo o clase están definidos por los mismos atributos o propiedades y tienen comportamientos y capacidades semejantes.

Estos objetos se forman o se construyen siguiendo diferentes procesos. Pero, dejando de lado los creados por la naturaleza, los creados por el hombre obedecen siempre a un plan. Por ejemplo un edificio parte de la idea de un arquitecto.
El arquitecto plasma con todo detalle esa idea en los planos, y a partir de esos planos se pueden construir muchos edificios. Cada uno de ellos será similar pero diferente a los demás. Puede tener la fachada de de distinto color, los remates más o menos lujosos, calefacción, distinta iluminación,…

Volver al Índice

Clases de objetos

En programación, la creación de objetos exige también la preparación de un plan de construcción. Ese plan se llama en realidad clase. El trabajo de un programador consiste en definir clases que sirvan para crear objetos, muchos o pocos, a partir de ellas.

Igual que un arquitecto define todas y cada una de las características y posibilidades de un edificio, nosotros definiremos en una clase cada una de las propiedades y de los métodos que tendrán los objetos de un cierto tipo.

claseMoldeLa clase es el molde a partir del que se crean objetos, al igual que los planos de un edificio sirven de modelo para construir uno o varios edificios.
Una clase permite crear tantos objetos como se quiera a partir de ella. Clase y tipo son palabras intercambiables. En este sentido, cada clase permite crear una familia o tipo diferente de objetos.

Todos los objetos del mismo tipo comparten estructura y funcionalidad, pero los valores de sus propiedades pueden ser modificados durante o después de su creación.

Imagina que tenemos una clase que sirve para crear piezas de lego. Esta clase especificaría que propiedades tiene cada pieza. Alto, ancho y forma, serían algunas de ellas tendrían un valor prestablecido y serían fijas, ya que todas las piezas de lego tienen un aspecto reconocible y similar.
Lego_Color_Bricks
Sin embargo otras propiedades son variables: color y número de secciones (el número de pares de protuberancias que permiten encajar unas con otras) y hacen que unas piezas sean diferentes de otras, aunque todas pertenezcan a la misma clase de objeto.

Además, la clase definiría lo que se puede hacer con las piezas de lego. En este caso, el único método que definiría sería encajar en otra pieza. Todos los objetos creados a partir de esta clase tendrán ese método, podrán realizar esa acción.
Cuando invoquemos el método encajar en otra pieza habrá que decirle en quepieza deseamos encajar nuestro objeto. A esto se le llama pasar un valor para un parámetro. Hablaremos más tarde de esto en detalle, pero demomento, baste decir que algunos métodos necesitarán que les demos algunos datos para que puedan funcionar correctamente. En este ejemplo se ve claramente esta necesidad.
Este método consistirá un pequeño programa que buscará la pieza que le decimos y colocará la nuestra encima de ella.

Por supuesto nuestra clase podría definir otros métodos, como desencajar de la pieza sobre la cada el objeto esté encajada, si es que lo está,… o como lanzar la pieza sobre la cabeza de nuestro hermano pequeño, pero por ahora nos vamos a conformar con los comportamientos más obvios.

Se dice que las propiedades y objetos pertenecen o son miembros de cada objeto de la clase que los define. Esto es porque, aunqe se definen en la clase, sólo se les puede cambiar el valor o invocar en o desde un objeto concreto (Hay alguna excepción a esta regla, en el siguiente apartado veremos la más importante para nosotros al principio).
Todos los objetos, también llamados instancias, de una clase heredan las propiedades y métodos definidos en ella.

Objetos de una clase
La clase Coche define qué propiedades y qué métodos tendrán sus instancias. Los métodos describen que pueden hacer estos objetos.
Las propiedades, que definen las características que pueden tener los objetos, pueden tomar valores diferentes en cada uno de ellos.

El constructor de una clase

Además, todas las clases tienen un método muy especial, denominado constructor ¡Adivina para que sirve!
Correcto, para crear instancias de la clase, es decir, objetos del tipo definido por la clase. Instancia y objeto también son sinónimos.

Este método es muy especial, porque se suele invocar de un modo especial (en la figura anterior new Coche() crea cada uno de los cohes) y además no se hace a partir de un objeto, como decíamos al final del apartado anterior, pertenece sólo a la clase, y sólo se invoca para crear objetos nuevos.

Al definir el método constructor, también podemos escribir un pequeño programa que configure el nuevo objeto inicialmente, dando valores por defecto a alguna de sus propiedades, por ejemplo.

Clases predefinidas

Si todo lo anterior te parece demasiado abastracto o te asusta, no te preocupes, porque todos los lenguajes de programación tienen ya, de fábrica, un montón de clases predefinidas listas para usar. Y además existen una cantidad enorme de paquetes (librerías) con clases extra que se pueden acoplar a nuestro programa y ser utilizadas como si pertenecieran al propio lenguaje. Así que de momento no tendremos que crear ninguna. Bueno, una sí tendremos que crear, porque necesitaremos crear la clase principal de nuestro programa, pero ya veréis que esto es muy sencillo.

Todos los objetos se definen y se crean utilizando clases. Así, cada objeto pertence a una clase o tipo de objetos.

Las clases definen la estructura (propiedades y métodos) de los objetos. También definen la forma en la que se construyen (método constructor).

Las propiedades definen las características y el estado de un objeto.

Los métodos especifican que se puede hacer con un objeto.

Existen clases predefinidas en todos los lenguajes, que nos permiten crear los objetos clave del mismo.

Para empezar a entender todo esto, lo mejor es empezar a crear algunos objetos utilizando estas clases que ya existen y que son propias del lenguaje. Justo eso es lo que vamos a empezar a hacer en el siguiente tutorial.

Deja un comentario

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