Clases y objetos

Etiquetas:

Si hablamos de un objeto de la vida real, como una puerta, diremos que tiene una serie de caracteristicas (color, tamaño, tipo de visagra, etc…) y puede hacer una serie de funciones (abrirse, cerrarse, romperse).
En los lenguajes de programación (hay algunos orientados a objetos, es decir, especificos para esto) también podemos crear objetos con características propias, pero funciona algo distinto.

Para poder crear objetos (que veremos su utilidad mas adelante) primero debemos crear una clase. Una clase es como un modelo, una estructura, un guión que deberá seguir nuestro objeto. La clase de puerta sería color, tamaño, estado. A la hora de crear un objeto nos basaremos en ese guión.


NOTA: A los objetos se les suele llamar instancias.
Para inicializar un objeto el tipo de variable que pondremos será el nombre de la clase:
Coche seat500;
y para establecer que esa variable corresponda al objeto en cuestión usamos:
seat500 = new Coche();

Vamos a ver un ejemplo:

class Coche() { // Esto sería la clase, el modelo del objeto
String tipoDeCoche, marca;
color ColorDeLaPintura;
int numeroDePuertas;
}

void setup() {
Coche seatIbiza = new Coche();
}

Con esto hemos conseguido almacenar un objeto en una variable, pero la verdad que no nos es muy util así, asi que vamos a seguir explicando.
Dentro de la clase (que por organización se suelen poner en una nueva ventana) podemos iniciar funciones.
Codigo:

class Coche() { // Esto sería la clase, el modelo del objeto
String tipoDeCoche, marca;
color ColorDeLaPintura;
int numeroDePuertas;

void aparcar() {
println(«Coche aparcado»);
}

void arrancar() {
println(«Arrancas el coche»);
}
}

¿Que conseguimos con esto?
Que ahora si nosotros usamos seatIbiza.arrancar(); vamos a conseguir que nuestro objeto realice esa función. Si lo escribimos en processing podremos ver el resultado, mostrará en consola «Arrancas el coche».

Con esto ya tenemos lo básico, pero… hemos dicho que los objetos podían tener atributos, pero no los hemos ajustando en ningún momento (a pesar de haberlos definido en la clase), para esto usamos una función constructor. La función constructor va dentro de la clase, como una función mas, sin poner void ni ningún prefijo, y tiene la siguiente sintaxis:

Coche(PARAMETROS) {
variableDelObjeto = parametroDeseado;
}

Donde los parámetros los definiremos como variables nuevas, de acorde a lo que le vamos a pasar. Ejemplo:

Coche(String tipoCochePasado, String marcaPasada, color colorPasado, int nDePuertasPasado)

Y dentro de la función podemos establecer cada variable del objeto con las pasadas por nuestra creación del objeto:

Coche(String tipoCochePasado, String marcaPasada, color colorPasado, int nDePuertasPasado) {
tipoDeCoche = tipoCochePasado;
marca = marcaPasada;
ColorDeLaPintura = colorPasado;
numeroDePuertas = nDePuertasPasado;
}

Y a la hora de crear el objeto ahora tendremos que iniciarlo acorde a los parametros.

Coche seatIbiza = new Coche(«Camioneta», «BMW», new color(255,10,20), 6);

Codigo hasta el momento:

class Coche() { // Esto sería la clase, el modelo del objeto

String tipoDeCoche, marca; // Las variables del objeto
color ColorDeLaPintura;
int numeroDePuertas;

Coche(String tipoCochePasado, String marcaPasada, color colorPasado, int nDePuertasPasado) {
tipoDeCoche = tipoCochePasado;
marca = marcaPasada;
ColorDeLaPintura = colorPasado;
numeroDePuertas = nDePuertasPasado;
} // La clase constructora

void aparcar() {
println(«Coche aparcado»);
}

void arrancar() {
println(«Arrancas el coche»);
}
}

void setup() {
Coche seatIbiza = new Coche(«Camioneta», «BMW», new color(255,10,20), 6);
}

Entonces, si ahora en arrancar ponemos («Arrancas el coche de marca «+marca);
El resultado de usar seatIbiza.arrancar(); será «Arrancas el coche de marca BMW»


De momento esto es bastante, y quizás lo mas complejo sea la clase constructora, así que lo mejor para aprender es practicar. Con los objetos se pueden hacer grandes cosas. Ejemplo del coche fantastico:



Recomiendo ver el codigo y tratar de entenderlo, lo mas complicado es la función update de la clase LED, pero lo importante es la estructura de clases.

Hasta la proxima.

Deja un comentario

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