Programación orientada a objetos

 

Taller 1

Introducción a la POO con java

 

En el desarrollo de este taller nos familiarizaremos un poco con el lenguaje de programación orientada a objetos Java. Veremos los conceptos básicos para comenzar a desarrollar aplicaciones 100% orientadas a objetos bajo esta plataforma.

Comenzamos con una aplicación que nos enseña una línea de texto. Una aplicación es un programa que se ejecuta usando el interpretador java.

1.Digitemos el codigo que se encuentra a continuación, el cual declara la clase Aplicación, sin ninguna clase de contenido por dentro.

// Nuestro primer programa en java.

public class Aplicación {
...
}

Observemos mas en detalle nuestro primer programa. La primera línea del programa empieza con //, lo cual indica que el resto de la línea es un comentario. Los comentarios ayudan al programador a documentar la aplicación. Estos tambien ayudan a que otras personas puedan "leer" y entender los programas. Estos comentarios no hacen realizar ninguna función al computador. Antes de cualquier clase, es imprescindible un comentario que aclare su objetivo.

Ojo con lo siguiente: Todo programa en Java consiste de al menos una clase definida por el programador. La palabra class, introduce a una clase definida por el programador, seguida de el nombre de la clase, en nuestro caso Aplicación. Por convención, todas las clases comienzan con mayuscula. Así, nuestra clase debe llamarse Aplicación y no aplicación. Ojo que Java distingue entre mayúsculas y minúsculas, de tal modo que Aplicación y aplicación no son iguales. Por ahora, toda clase que definamos, debe estar antecedida por la palabra clave public.

Una llave izquierda "{" precede al cuerpo de la clase. Para una llave izquierda "{", siempre debe haber una llave derecha, con la que en este caso termina conla definición de la clase..

Cuando grabemos nuestro archivo, este debe tener como extensión .java. El nombre del archivo debe tener el mismo nombre de la clase que definimos. Así, nuestra aplicación debe quedar guardada en un archivo con nombre Aplicación.java.

2. Creamos un directorio llamado POO en c:\temp\, y guardamos en archivo de nuestra aplicación.

3. Bajo la llave izquierda "{" ingrecemos el siguiente código:

{
...

public static void main( String args[] )
{
}

Este código hace parte de toda aplicación en Java. Las aplicaciones en Java comienzan por main. Bloques como este main, son llamados métodos (análogo a las llamadas funciones en el lenguaje c). La palabra clave void nos indica que este método despues de realizar su procesamiento no nos va a devolver nada. Luego veremos que muchos métodos nos retornan información después de haber realizado sus procesamientos.

4. Ingresemos en el cuerpo del método main, el siguiente código:

System.out.println("Hello World !!");

Esta instrucción le indica al computador que imprima la cadena de caracteres contenida entre comillas, en este caso Hello World !! . System.out es conocido como el objeto estandar de salida. Este le permite a las aplicaciones en Java enseñar cadenas de caracteres y otro tipo de información en la consola de comandos. El método System.out.println imprime una nueva línea de texto en la consola de comandos. Toda instrucción como la anterior, debe terminar en punto y coma";".

Ya estamos lístos para compilar y ejecutar nuestra primera aplicación.

5. Para compilar el programa, abrimos una consola de comandos, cambiamos al directorio donde se encuentra nuestra aplicación y digitamos:

javac Aplicación.java

Si el programa no contiene errores de sintaxis, el comando anterior crea un archivo llamado Aplicación.class. El interpretador de Java utilizara este archivo para ejecutar nuestra aplicación.

6. Para ejecutar nuestra aplicación, ingresemos lo siguiente:

java Aplicación

Con esto, le indicamos al interpretador de java que debe cargar el archivo .class de la clase Aplicacion. Notese que la extensión .class es omitida. El interpretador automáticamente llama el método main.

Con esto hemos terminado la primera parte del taller. Ahora nos dispondremos a realizar algunas modificaciones a nuestra grandiosa aplicación.

Vamos a mirar la clase Circulo. Veremos como creamos un tipo de dato nuevo con métodos y atributos propios de esta. Más adelante nos quedará todo esto muy claro.

1. Creemos un archivo nuevo y definamos una nueva clase llamada Circulo que no tenga ningun contenido por ahora. El código debe ser similar al siguiente:

public class Circulo
{
}

Ahora pensemos, ¿ Cuales son las propiedades inherentes de cualquier círculo ? Una propiedad vital es su radio. o ¿ Conocen algún círculo que no tenga radio ?. Estas propiedades se reflejan en la definición de la clase como atributos. Este atributo es del tipo double que nos permite representar números reales ( numeros con punto decimal, tal como 3.1416 ), de tal forma que podamos representar el radio de nuestro círculo con este tipo de datos. Ingresemos el siguiente código que define el atributo radio dentro del cuerpo de la clase Circulo:

double radio=9.453;

con esta instrucción declaramos el atributo radio que es de tipo double y además le asignamos un valor el cual fue arbitrariamente escogido. Ahora, ¿ con el radio podremos conocer el area del círculo ?. Desde luego que sí.

2. Agreguemos un método que nos calcule el area de nuestro círculo, por ahora vacío:

public double area(){
}

con este método, podremos conocer el area de nuestro círculo. Veamos que la palabra clave double antecede al nombre del método. Este es el tipo de dato de la información que va a devolver el método. Como el área del círculo es un número real, este método debe entonces retornar un dato de este tipo. Sigamos, ¿ cómo se caulcula el area de un círculo ? Pi * r * r. Entonces, primero le daremos un valor al radio de nuestro círculo, que puede ser cualquier valor real y luego calcularemos su área.

3. Ingresemos el siguiente código:

return 3.1416 * radio * radio;

Esta instrucción indica que el método debe retornar el área con la palabra clave return. Entonces, este método retornara el resultado de 3.1416 *radio * radio.

Ahora, guardemos el archivo que contiene la clase Circulo en el mismo directorio en el que guardamos el archivo Aplicación.java

Para continuar, volvamos a nuestro archivo de la clase Aplicación y ubiquemonos en el método main. Vamos a crear un atributo que sea del tipo de dato Circulo que acabamos de crear y lo vamos a llamar Circulo1. Todo nombre de cualquier tipo de dato debe comenzar el minúscula. Para crear un tipo de dato, utilizamos la palabra clave new.

5. Ingresemos el siguiente código:

public static void main( String args[] ){

Circulo circulo1 = new Circulo( );
System......
}

Esto crea una variable en memoria llamada circulo1 y que es del tipo Circulo. Ahora podemos trabajar sobre esta variable. Lo que sigue ahora es divisar el área del círculo que acabamos de crear. Para acceder al método de una variable, utilizamos el nombre de la variable, seguida de un punto y seguida del nombre de la variable. Recordemos que el tipo de dato Circulo tiene un método llamado area y que retorna un double que representa el área de nuestro círculo. Pero como este método retorna un double, ese valor debemos asignarselo a una nueva variable de este tipo. Para comprenderlo mejor,

6. Ingresemos el código que ejecuta la instrucción anterios:

double areaCirculo = circulo1.area( );

Con esto, ya tenemos una variable de tipo double llamada areaCirculo con el valor del área de nuestro círculo. Ahora, queremos ver el valor de este cálculo en pantalla. Como recordaran, System.out.println( ) nos imprime el contenido de los paréntesis en la consola. En la siguiente instrucción, la instrucción encerrada en los paréntesis transforma nuestra valor double, en una cadena de caracteres para que se pueda ver en la consola. Por el momento, no nos preocupemos por la instruccion interior.

7. Ingresemos el código para obtener el área de nuestro círculo:

System.out.println( Double.toString( areaCirculo ) );

Revisemos algo: vean como se define la funcion main. ¿ ven la parte que dice String args[] ?. ¿ Para que servira esto ?. Pues cuando ejecutamos una aplicación, podemos ingresar argumentos a la aplicación por la consola. Me explíco. ¿ qué sucede si yo cada vez que corro la aplicación que acabamos de realizar quiero calcular el area de un círculo con radio diferente ? Puedo enviar el radio del círculo como un argumento. De tal manera cuando yo corra la aplicacion, puedo hacerlo de la siguiente manera:

java Aplicación 5.609

Indicandole a la aplicación que quiero que el radio de mi círculo es de 5.609. Entonces, estos valores quedan guardados en el arreglo llamado args[] que es de tipo String.

8. Ingresemos la siguiente instruccion al principio del método main para guardar el valor del parámetro:

double radio = Double.parseDouble( args[0]);

De nuevo, no nos preocupemos por las instrucciones de más. Ahora en radio tenemos el valor que ingresamos en la aplicación por parámetro. Ahora, antes de calcular el área del círculo con el nuevo radio, debemos ingresar en nuestro círculo el nuevo valor del radio.

9. Modifiquemos el archivo con la clase Círculo, adicionando el siguiente método:

public Circulo(double r){
    radio = r;
}
Este método es llamado un constructor y su propósito es crear una instancia de la clase Circulo. El constructor recibe como argumento el valor del radio y lo asigna al atributo correspondiente.1

10. Luego, modificamos la línea que crea la instancia de la clase Circulo para enviar el valor del radio al constructor:

Circulo circulo1 = new Circulo( radio);

Con esto, ya podemos correr nuestra aplicación e indicarle por medio de los parametros de consola el radio del círculo al que queremos calcular su área. Probemos por ejemplo

java Aplicacion 10.4343

11. Compile y corra el siguiente programa:

import javax.swing.*;

public class Aplicacion1 {
  public static void main(String[] args) {
    JFrame ventana = new JFrame("Mi primera ventana");
    JLabel etiqueta = new JLabel("Hola mundo!!");
    ventana.getContentPane().add(etiqueta);
    ventana.setSize(200,100);
    ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ventana.setVisible(true);
  }
}

Modifique el programa para que reciba el mensaje a mostrar como un parámetro.

Con esto hemos iniciado nuestro camino por el lenguaje de Programación Java!