Práctica 2 - Ciclo de desarrollo de programas desde Sistema Operativo e introducción al entorno BlueJ

Esta práctica tiene como objetivo introducir el proceso de desarrollo de programas mediante la edición, compilación y ejecución de pequeños programas en Java. Trabajaremos con BlueJ, un entorno de desarrollo que permite escribir código, crear e inspeccionar objetos y utilizar un depurador.

Para familiarizarse con sus herramientas, se recomienda consultar los vídeos breves de BlueJ y el tutorial oficial en inglés para BlueJ 4.x. También está disponible un tutorial en español, aunque describe una versión bastante anterior del programa. Como lectura complementaria, puede consultarse el libro gratuito Java with BlueJ, Part 1.

Fase 1. Descarga e instalación de BlueJ

De la página oficial de BlueJ, http://www.bluej.org, se puede descargar el fichero de instalación de la última versión, eligiendo la versión adecuada para la plataforma que te resulte de interés (Windows, macOS, Linux, etc.). Una vez descargado, se puede ejecutar para realizar la instalación. En general no es necesario modificar las opciones que propone por defecto el asistente de instalación. En el laboratorio donde realizamos las prácticas estará ya instalado, por lo que solo será necesario realizar esta tarea en vuestro computador personal.

Fase 2. Preparación del entorno de trabajo

  1. Aconsejamos la utilización de una memoria USB para poder transportar fácilmente el entorno de trabajo de casa a la universidad y viceversa. Recomendamos la realización de copias de seguridad del trabajo en otra memoria USB u otro dispositivo de vuestra elección (disco duro externo, Google Drive, servidor del departamento, etc.).

  2. Recomendamos utilizar nombres de ficheros y directorios que no contengan espacios, tildes u otro tipo de caracteres similares.

  3. En vuestra carpeta de la asignatura podéis crear una carpeta llamada Practicas y en su interior ir coleccionando las carpetas con el material de las diferentes prácticas con los nombres P1, P2, …, P10. También es buena idea guardar diferentes versiones de los ficheros de las prácticas conforme vayan evolucionando vuestros códigos intermedios. Así, si en un momento determinado se estropea el código que estáis desarrollando podréis volver a una versión anterior e intentarlo de nuevo. Tendréis que extremar las precauciones para no mezclar versiones y tener localizada la versión definitiva.

Fase 3. Utilización del entorno BlueJ. Proyectos, edición y compilación con BlueJ

Ejercicio 3.1

Ejecuta BlueJ desde el menú de la interfaz gráfica. La primera vez que se hace, el programa puede solicitar información sobre qué máquina virtual Java, de entre las que están instaladas en el equipo, debe utilizar (lo omite si sólo hay una instalada). Si es el caso, selecciona una de ellas (la correspondiente a la versión más reciente) y presiona el botón Launch. También es posible que el programa haya sido utilizado anteriormente. En este caso podrá aparecer la ventana de proyecto con la sesión anterior o bien una nueva ventana de proyecto vacía similar a la de la siguiente figura:

Ventana de proyecto vacía

Ejercicio 3.2

Vamos a crear un nuevo proyecto denominado Ejercicio1. Para ello, tienes que ir al menú Proyecto | Nuevo Proyecto…, y en el cuadro de diálogo que se muestra navegar hasta un directorio de trabajo y poner el nombre Ejercicio1 y pulsar el botón de aceptación. Al hacerlo se abrirá una ventana como la mostrada en la figura anterior.

Cuando se crea un proyecto en BlueJ, se genera una nueva carpeta con el mismo nombre que el proyecto allá donde hayamos elegido. Dicha carpeta guardará todos los archivos que se vayan añadiendo al proyecto. Compruébalo mediante el explorador de archivos del sistema operativo.

Ejercicio 3.3

Para añadir el código fuente de este ejercicio pulsaremos en el botón Nueva clase… y en el cuadro de diálogo escribiremos el nombre de la clase a la que llamaremos Ejercicio1. En la carpeta del proyecto se habrá creado el archivo Ejercicio1.java.

En la interfaz de BlueJ se mostrará un diagrama UML que representa la clase que acabamos de añadir al proyecto. Visualiza el aspecto que tiene ahora la ventana de proyecto y fíjate en los detalles de los elementos que aparecen ya que su significado es importante.

Haciendo doble clic sobre el icono de la clase creada es posible acceder al código fuente en Java que corresponde a ella. Haz doble clic y aparecerá la ventana de edición del código fuente. Por defecto BlueJ propone una plantilla de código de partida. Elimina dicho código y escribe la siguiente clase. Ten en cuenta que el nombre de la clase coincide con el del fichero que contiene el código fuente.

public class Ejercicio1 {
    public static void main() {
        System.out.println("Hola mundo");

        int a = 3;
        int b = 5;

        System.out.print("El producto de " + a + " y ");
        System.out.println(b + " es " + a * b);

        System.out.println("Adios mundo");
    }
}

Presta atención al indentado del código (es decir, el uso de tabuladores). Son de extremada utilidad para incrementar la legibilidad del código.

Ejercicio 3.4

En la ventana de proyecto, el icono que representa la clase Ejercicio1 ha aparecido rayado. Esto significa que no está compilado. Para compilarlo tendremos varias opciones: utilizando el botón Compilar en la ventana de edición de código o bien, en la ventana de proyecto seleccionando la clase y eligiendo la opción Compilar que aparecerá en el menú contextual al hacer clic con el botón derecho del ratón sobre el icono de la clase o con el botón Compilar en la ventana del proyecto. Busca las opciones anteriores y, eligiendo alguna de ellas, compila la clase y observa el cambio de imagen del icono.

En la carpeta del proyecto habrán aparecido varios archivos entre los que se encuentran el mencionado Ejercicio1.java y Ejercicio1.class. Mediante el explorador de archivos encuéntralos para ir adquiriendo costumbre de cómo funciona el entorno BlueJ.

Ejercicio 3.5

Ahora vamos a ejecutar el programa. Si pulsamos con el botón derecho del ratón sobre el icono de la clase Ejercicio1 se mostrará un menú contextual en el cual podemos observar (entre otras) la opción:

void main ()

Si la seleccionamos se ejecutará el método main del programa. Observa que la ejecución se muestra en una Ventana de Terminal. Dicha ventana muestra las últimas ejecuciones realizadas.

Edición y ejecución de la clase Ejercicio1

Ejercicio 3.6

Ahora vamos a forzar algún error en el código fuente para comprobar los mensajes que envía el compilador. Volviendo a la ventana de edición de la clase vamos a provocar dos errores sintácticos en el código. En la línea 8 vamos a eliminar el símbolo de dobles comillas que finaliza la cadena de caracteres. En la línea 9 vamos a eliminar el punto y coma del final de la instrucción. Si se repite el proceso de compilación, ¿qué mensajes de error se muestran? ¿cómo se muestran?

Es interesante fijarse en que en la esquina inferior derecha de la ventana de edición aparece el número de errores sintácticos del código en forma de enlace (subrayado). Si pulsamos en él se observará una breve descripción de error y su posible posición. Corrige los errores que hemos forzado y vuelve a compilar.

Ejercicio 3.7

El entorno BlueJ también permite la generación de documentación automatizada del código. Esto puede llevarse a cabo de diferentes formas. Por una parte desde la ventana de proyecto, en el menú Herramientas | Activar/desactivar vista de documento y, por otra, desde la ventana de edición eligiendo la opción Documentación de la lista desplegable que aparece en la parte superior. Aparecerá en la ventana un documento HTML con información de la clase que entenderemos mejor en la segunda parte del curso cuando aprendamos a programar con el paradigma de programación orientada a objetos. Si vamos a la carpeta del proyecto mediante el explorador de archivos, observaremos una carpeta denominada doc que contiene los archivos de documentación generados. Abriendo el archivo index.html mediante el navegador habitual podremos observar la documentación generada.

Fase 4. Creación de proyectos en BlueJ

Ejercicio 4.1

Dentro del directorio P2 vas a crear un nuevo proyecto con una única clase, denominada Multiplicacion, que va a ser capaz de escribir la tabla de multiplicar de un número entero en la pantalla. Para ello, crea un nuevo proyecto BlueJ, denominado multiplicar (menú Proyecto | Nuevo Proyecto…) y crea una nueva clase (botón Nueva Clase…) con el nombre indicado. Debe especificarse que la nueva clase es de tipo Clase (la opción por defecto).

BlueJ ha creado un esqueleto de la clase Multiplicacion. Accede al código de la misma y sustitúyelo por este otro:

public static void main() {
    int multiplicando = 5;
    int multiplicador = 0;

    while (multiplicador <= 10) {
        System.out.print(multiplicando);
        System.out.print(" x ");
        System.out.print(multiplicador);
        System.out.print(" = ");
        System.out.print(multiplicado*multiplicador);
        System.out.println();
        multiplicador = multiplicador - 1;
    }
}

En el código que has copiado, hay dos errores, uno en tiempo de compilación y otro en tiempo de ejecución. Compila y corrige el primero de los errores, vuelve a compilar y ejecuta el método main(). Observa lo que sucede en la ventana del terminal.

Para forzar la finalización del programa, pulsa en la flecha circular de abajo a la derecha de la ventana (reinicia la máquina virtual de Java). Otra forma es abrir la ventana del depurador (Ver | Mostrar depurador), seleccionar el hilo (thread) denominado main y pulsar el botón Terminar .

Piensa en una hipótesis que te permitiría solucionar el error y prueba si funciona. En el Tema 4 estudiaremos la estructura de control while y a solucionar problemas de bucles infinitos.

Ejercicio 4.2

Añade a la clase Multiplicacion la siguiente instrucción, al principio del código fuente (fuera de la declaración de la clase):

import java.util.Scanner;

y añade también el siguiente código al método main:

public static void main() {
    Scanner teclado = new Scanner(System.in);

    System.out.print("Escriba un número entero: ");
    int multiplicando = teclado.nextInt();

    ...
}

Se dice que el método main es un método estático o de clase. Como has podido comprobar, los métodos estáticos pueden ser ejecutados directamente, tras compilar, viendo que aparecen al hacer clic con el botón derecho del ratón sobre el icono de la clase. Ejecuta ahora el programa y analiza el comportamiento con los cambios realizados en el código.

Ejercicio 4.3

En la ventana de proyecto se puede observar un icono que permite acceder al archivo readme.txt. Haciendo doble clic en el icono aparece otra ventana de edición, similar a las utilizadas para escribir código, pero sin colores que resalten el texto escrito.

Este archivo presenta algún contenido, como muestra la figura posterior, que puede ser completada con el contenido que deseemos.

Contenido del archivo readme.txt

Fase 5. Utilización de la zona de código

Ejercicio 5.1

Muestra la zona de código (Ver | Mostrar zona de código) y evalúa expresiones simples.

Evalúa en esa zona las siguientes expresiones, haciendo una hipótesis previa acerca de su significado:

Tabla de resultados

Escribe tus hipótesis y resultados directamente en las celdas. El contenido se conserva mientras no cierres el navegador.

Expresión Significado Resultado
4 + 45
Math.max(33, 4)
(int) 33.7
26 >= 8
8 == 6
int a = 8;
a != 6
(0 <= a) && (a <= 10)
(a==1) || (a==2)
8/3
8.0/3.0
Math.PI
Math.abs(-28)
Math.cos(Math.PI/4)
"Dos" + "palabras"
"mensaje".length()
"abcde".charAt(2)
'a' < 'z'
(int) 'A'
(char) 66