Hace días hablé de lo que son las clases y ejemplifiqué su uso con C++ (Paradigmas de Programación y muchos objetos en C++), sin embargo las cosas son un poquitito diferentes para Java y eso quiero exponer en este mensaje.
Antes de hablar de sintaxis, solo quiero "traducir" los términos Java. Un objeto es una instancia de una clase. Donde escribo tipo, me refiero a un tipo de dato como int, double, String, etc. Las funciones o subrutinas se conocen como métodos. En esta sintaxis pongo algunos comentarios (los que empiezan con //) con puntos suspensivos para indicar que allí puede o debe ir más código. Aclarado esto, la sintaxis de una clase en Java sería algo así:
Veamos un ejemplo:
En este caso, estoy declarando dos variables (instancias) de tipo entero (int). También estoy definiendo una función (método) llamado suma que devuelve un número de tipo int (el resultado de la operación a+b) por medio de la instrucción return.
Ok. Así defino la clase pero, ¿cómo #%¡* lo uso? Fácil. Este ejemplo crea un objeto llamado X de tipo Ejemplo (el de la clase que acabamos de crear):
Ejemplo X;
X = new Ejemplo();
La primera línea le dice a Java que va a haber un objeto de tipo Ejemplo que se llama X. Las segunda línea hace la operación de apartar memoria para el objeto e inicializarlo. Podría resumir las dos instrucciones en una sola que haga lo mismo, como se ve aquí:
Ejemplo X = new Ejemplo();
Para poder acceder a un miembro de una clase, se usa el operador . (punto): objeto.instancia, como ejemplifico aquí:
X.a=3; // Asigna 3 a la variable 'a' que está en el objeto X
No me refiero al personaje Bob que tiene este oficio, sino a una método de una clase en Java que se encarga de inicializar a un objeto en cuando es creada (con la instrucción new). Estos métodos no devuelven valores (por eso son de tipo void aunque no se escriba) y tiene que tener el mismo nombre de la clase. Aquí voy a escribir una versión de la clase Ejemplo con un constructor:
Si la clase no tiene un constructor definido, Java crea un constructor por default que inicializa todas las variables de instancia en cero.
La siguiente clase va a crear un objeto de tipo Ejemplo, le pasa los valores -78 y 64. Esto significa que a recibirá el valor -78 y b tendrá 88.
El programa desplegará en la pantalla el valor -14. Pero antes de terminar con esta explicación de clases, quiero analizar un poco esta última clase. Algo que es obvio es que en la clase Ejemplo2 se está declarando un método main que no devuelve valores (por eso es de tipo void). Sin embargo, ¿para qué sirve el public y el static? El public indica que todo el mundo puede acceder a él y cuando se declara como static a un miembro de la clase, puede ser accesado antes de que cualquier objeto de su clase y sin hacer referencia a ningún objeto (su uso más común es para declarar el método main, aunque también puedes crear un bloque de código que sea static para que se ejecute una sola vez cuando se carga la clase por primera vez a la memoria). El String args[] es el argumento que recibe la función main() desde la línea de comando.
Antes de hablar de sintaxis, solo quiero "traducir" los términos Java. Un objeto es una instancia de una clase. Donde escribo tipo, me refiero a un tipo de dato como int, double, String, etc. Las funciones o subrutinas se conocen como métodos. En esta sintaxis pongo algunos comentarios (los que empiezan con //) con puntos suspensivos para indicar que allí puede o debe ir más código. Aclarado esto, la sintaxis de una clase en Java sería algo así:
Veamos un ejemplo:
En este caso, estoy declarando dos variables (instancias) de tipo entero (int). También estoy definiendo una función (método) llamado suma que devuelve un número de tipo int (el resultado de la operación a+b) por medio de la instrucción return.
Ok. Así defino la clase pero, ¿cómo #%¡* lo uso? Fácil. Este ejemplo crea un objeto llamado X de tipo Ejemplo (el de la clase que acabamos de crear):
Ejemplo X;
X = new Ejemplo();
La primera línea le dice a Java que va a haber un objeto de tipo Ejemplo que se llama X. Las segunda línea hace la operación de apartar memoria para el objeto e inicializarlo. Podría resumir las dos instrucciones en una sola que haga lo mismo, como se ve aquí:
Ejemplo X = new Ejemplo();
Para poder acceder a un miembro de una clase, se usa el operador . (punto): objeto.instancia, como ejemplifico aquí:
X.a=3; // Asigna 3 a la variable 'a' que está en el objeto X
Constructor
No me refiero al personaje Bob que tiene este oficio, sino a una método de una clase en Java que se encarga de inicializar a un objeto en cuando es creada (con la instrucción new). Estos métodos no devuelven valores (por eso son de tipo void aunque no se escriba) y tiene que tener el mismo nombre de la clase. Aquí voy a escribir una versión de la clase Ejemplo con un constructor:
Si la clase no tiene un constructor definido, Java crea un constructor por default que inicializa todas las variables de instancia en cero.
La siguiente clase va a crear un objeto de tipo Ejemplo, le pasa los valores -78 y 64. Esto significa que a recibirá el valor -78 y b tendrá 88.
El programa desplegará en la pantalla el valor -14. Pero antes de terminar con esta explicación de clases, quiero analizar un poco esta última clase. Algo que es obvio es que en la clase Ejemplo2 se está declarando un método main que no devuelve valores (por eso es de tipo void). Sin embargo, ¿para qué sirve el public y el static? El public indica que todo el mundo puede acceder a él y cuando se declara como static a un miembro de la clase, puede ser accesado antes de que cualquier objeto de su clase y sin hacer referencia a ningún objeto (su uso más común es para declarar el método main, aunque también puedes crear un bloque de código que sea static para que se ejecute una sola vez cuando se carga la clase por primera vez a la memoria). El String args[] es el argumento que recibe la función main() desde la línea de comando.
Aquí dejo otro ejemplo de una clase, una versión un poquito diferente al choteado programa Hola mundo que aparece en todos los libros de programación. Aproveché para usar objetos de la clase String. La ventana que ves es la de Notepad++.
Un libro que es buena de referencia, pero pésima para aprender, que me sirvió para este mensaje es Java Programmer's Reference de Herbert Schildt y Joe O'Neil (abajo pongo la liga a Amazon por si te interesa conseguirlo).
Espero que todo esto te haya servido. Si tienes cualquier duda o comentario, deja un comentario (valga la redundancia, jeje).
Un libro que es buena de referencia, pero pésima para aprender, que me sirvió para este mensaje es Java Programmer's Reference de Herbert Schildt y Joe O'Neil (abajo pongo la liga a Amazon por si te interesa conseguirlo).
Espero que todo esto te haya servido. Si tienes cualquier duda o comentario, deja un comentario (valga la redundancia, jeje).
No hay comentarios.:
Publicar un comentario