Interacción con el usuario en Java

Publicado: Sábado, 13 \13\UTC junio \13\UTC 2009 en 08. Programación en Java (y II)

Es hora de avanzar en otras novedades importantes que se incorporan en Java.

Paquetes

Un paquete es el equivalente a una libreria de C. En lugar de utilizar la orden de C:

# include

en Java utilizaremos la orden:

import paquete;

Los paquetes facilitan extraordinariamente la labor del programador, ya que existen miles de líneas de código que otros programadores ya han hecho por nosotros. El conjunto de todos los paquetes oficiales en Java es lo que se denomina la Interfaz de Programación de Aplicaciones (API, del inglés Application Programming Interface) de Java. En cada versión de la API se incluye un mayor número de paquetes y también existe documentación exhaustiva para que cualquier programador pueda consultar cómo hacer uso de ella.

La versión actual de Java es la 6 y podéis acceder a la documentación de la API en castellano desde esta página.

El uso de la API es muy sencillo y se compone de una ventana dividida en tres marcos: en la parte superior izquierda tenéis todos los paquetes existentes ordenados alfabéticamente. Si hacéis clic sobre uno de ellos, aparecerá en la parte inferior izquierda – entre otras cosas – las clases (que es lo que nos interesa en este momento) existentes en ese paquete. Si volvéis a hacer clic sobre una de las clases, el marco central mostrará todos los métodos que existen para esa clase, con su explicación correspondiente.

ATENCIÓNLa dirección de la API en castellano es una traducción on-line de la API en inglés, por lo que los métodos también se traducen. Una vez hayáis encontrado el método que necesitéis, utilizad la API en inglés para conocer el nombre real del método.

Métodos

Un método es el equivalente a una función en C.

Como ya hemos comentado, todo en Java son objetos; por ello, cualquier trozo de código estará dentro de un objeto.

De la misma manera que en C creábamos una función para definir un bloque de instrucciones con una cierta relación, ahora en Java, ese mismo bloque lo incorporaremos a un método. Y ese método pertenecerá a un objeto.

Veamos una comparación para aclarar estos conceptos. Imaginad que tenemos declarada una estructura en C llamada estudiante (que guardará los datos de un estudiante) de la siguiente manera:

struct estudiante_t {
char dni[9];
char nombre[50];
char apellidos[30];
time_t nacimiento;
};

//un registro de estudiante:
struct estudiante_t estudiante;
strcpy(estudiante.dni,”27651109″);
strcpy(estudiante.nombre,”María Dolores”);

Si ahora necesitamos una función para conocer la edad de un estudiante, declaramos fuera de la función main() algo parecido a esto:

int calcularEdad (estudiante_t parEstudiante);

Y llamaríamos a nuestra función de la siguiente manera:

calcularEdad(unRegistroDeEstudiante);

¿De acuerdo? Bueno, pues ahora hemos de cambiar la filosofía de trabajo. Sin entrar demasiado en detalles y confundiros con más teoría, nuestro método (función) en Java estaría situado dentro de la estructura (que será una clase) estudiante y será algo parecido a esto:

public int calcularEdad(void);

Y la llamada al método sería así:

unRegistroDeEstudiante.calcularEdad();

Es decir, mientras que en C la llamada a una función “es independiente” y toda la información se pasa a través de parámetros a la función, en Java los métodos son “dependientes” de una estructura y por tanto la llamada a un método debe ir precedida siempre del nombre de esa estructura.

Envoltorios

Además de los tipos de datos básicos que vimos en la anterior entrada, Java sigue con su vocación de utilizar objetos y nos ofrece un envoltorio de los tipos de datos básicos para convertirlos en objetos. Existen nueve envoltorios: Integer, Long, Float, Double, Short, Byte, Character, Boolean y Void.

Fijaos que todos ellos tienen nombres prácticamente idénticos a los tipos básicos, pero con la diferencia de que la primera letra es mayúscula (recordad que Java es sensible a mayúsculas).

Los envoltorios son muy útiles para realizar conversiones entre tipos de manera sencilla, ya que la API nos ofrece métodos para hacer casi todo lo que deseemos. Por ejemplo, la conversión de un número entero introducido por teclado por un usuario, que por tanto es una cadena de caracteres, es una tarea muy sencilla en Java:

int numeroConvertido = Integer.parseInt(numeroString);

Fijaos que hemos utilizado el método parseInt() de un objeto Integer. Este método recibe como parámetro un String y devuelve el número entero correspondiente de hacer la conversión de ese String.

IMPORTANTEEn este ejemplo podéis apreciar que, como no teníamos ningún objeto Integer, hemos podido utilizar el mismo nombre de la clase para hacer uso de su método. Son facilidades que nos da Java.

Entrada/salida

Ya hemos visto en anteriores entradas que la salida en Java es muy fácil de utilizar. En cambio, no ocurre lo mismo con la entrada, donde Java muestra una de sus incomodidades más palpable. Veamos cómo se trabaja.

  • Salida estándar. Se utiliza System.out que se encuentra en el paquete java.lang.
  • Entrada estándar. Se utiliza System.in que se encuentra en el paquete java.lang.
  • Salida de errores. Se utiliza System.err que se encuentra en el paquete java.lang.

Ejemplos:

Imprimir por pantalla. Utilizaremos los métodos print() o println() (este último incluye el retorno de carro al final de la salida). Uso:

System.out.print(“Se imprime este mensaje sin el retorno de carro”);

System.out.println(“Se imprime este mensaje con un retorno de carro”);

Gráficamente:

Imprimir por pantalla

Leer del teclado. A bajo nivel se utiliza el método read(), que lee un único carácter. Uso:

char c = (char) System.in.read();

Esta manera de leer del teclado es muy poco práctica y sería tedioso programar la lectura de una cadena de caracteres. En su lugar, es habitual hacer uso del paquete java.io que nos ofrece ayuda para acceder de manera más cómoda a la lectura del teclado. Veámoslo:

String nombre;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

System.out.print(“Escribe tu nombre: “);
nombre = br.readLine();
System.out.println(“Hola ” + nombre + “, ¿cómo estás?);

¿Qué hemos hecho? Es más complicado explicarlo que entenderlo. Dentro del paquete java.io se encuentra el método readLine() de una clase llamada BufferedReader. Este método lee una cadena de caracteres y devuelve un objeto  String.

Lo que ocurre es que necesitamos convertir la lectura del System.in (que lee bytes) en un objeto Reader (que es lo que necesita BufferedReader). Así que utilizamos una clase intermedia, que se llama InputStreamReader, que nos permite hacer esta conversión.

Gráficamente:

IMPORTANTEFijaos que para crear las variables de estas clases, hemos utilizado el operador new, que no ha aparecido hasta ahora. Esto se debe a que estamos creando objetos (variables de una clase). Pero no adelantemos acontecimientos.

Con esto finalizamos la introducción al lenguaje Java.

En la próxima entrada nos adentraremos en la teoría de la programación orientada a objetos.


Creative Commons License
Interacción con el usuario en Java by Cristian Jorge Garcia Marcos is licensed under a Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0 España License.
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s