viernes, 4 de marzo de 2016

2.2 Instanciación de una clase.

En realidad, un objeto es una instancia de una clase, por lo que se pueden intercambiar los términos objeto o instancia (o incluso evento).

Concepto de clase/Instancia.
Como hemos comentado una clase es el tipo que tendrán nuestros objetos, también llamados instancias de esa clase, es decir, la clase es la forma que tendrán los objetos empleados por nuestra aplicación. Un ejemplo puede ser el plano de una casa, el plano sería nuestra clase, pero con ese mismo plano podremos contruir diversas casas que serían los objetos. El plano en sí no es nada es sólamente la especificación de lo que será una casa una vez construida.
Alcance de los miembros: de instancia o de clase.

Cuando creamos una instancia de la clase en ejecución tendremos las variables de instancia, una por cada atributo, y todas integradas dentro de la misma instancia. Todas las instancias de la misma clase tendrán los mismos atributos (nombre y tipo), pero cada una de ellas irá tomando distintos valores para ellos. Es decir, tendremos una copia de los atributos por cada objeto de una clase que creemos. Por ejemplo, tuCoche sería una instancia de la clase Coche y daremos a la variable de instancia velocidadMaxima el valor 180. Mientras que la instancia cocheDeNigell tiene su propia variable velocidadMaxima con el valor 300.


Hay otro tipo de atributos, las llamadas variables de clase, que son los atributos que sólo existen una vez para cada clase. Es decir este tipo de atributos será compartido por todos los objetos que creemos de una clase, de modo que si cambio el valor del atributo en un objeto se verá reflejado en todos los demás. Por ejemplo, el atributo numDeCoches de nuestra clase Coche, de tipo entero, pensado para contar los coches que vamos teniendo en nuestro sistema, sólo debería existir una vez: no tiene sentido que esta variable sea distinta en tuCoche y en cocheDeNigell. Es la misma (única) variable para toda la clase Coche.
El comportamiento, la funcionalidad de la clase, es la concreción de qué puede hacer cada una de las instancias de la clase, cómo cambian su estado, o cómo se relaciona con otras.
Por ejemplo, en la clase Coche podríamos determinar la siguiente funcionalidad:
•          Arrancar
•          Parar (el motor)
•          Acelerar
•          Decelerar
•          Girar
•          Frenar
•          Cambiar la marcha…
Para definir el comportamiento de los objetos definiremos métodos, que no serán más que funciones o procedimientos definidas dentro de la clase que se ejecutan y operan sobre instancias de esa clase. Notar que estos métodos se encapsulan dentro de la clase, es decir, encapsulamos conjuntamente datos y funcionalidad relativa a un mismo objeto, cada objeto debe proveer el mecanismo de almacenamiento y gestión de sus datos, y la funcionalidad relativa a dicho objeto como una entidad cerrada.

Igual que los atributos, también hay métodos de instancia (se aplican sobre una instancia: son los más comunes, sobre un objeto concreto) y métodos de clase (se aplican sobre la propia clase). Lo veremos.

No hay comentarios:

Publicar un comentario