PROG3 - Práctica 1

Práctica 1

Plazo de entrega: Hasta el domingo 27 de septiembre de 2020 a las 23:59h
Peso relativo de está práctica en la nota de prácticas: 10%

Battleship

Introducción

En esta primera práctica realizaremos la implementación de una clase en Java a partir del código de esa misma clase en C++. El objetivo es conocer las diferencias fundamentales entre Java y C++.

La clase, perteneciente al modelo sobre el que trabajaremos durante todo el curso, se denomina Coordinate. Representa una coordenada en el tablero del juego Battleship o Hundir la flota. Aunque en el juego las coordenadas se representan con un número y una letra, en la implementación las representaremos con dos números (columna y fila).

El código en C++ que se acompaña incluye el destructor para la clase. Dado que no existe una traducción exacta de este a Java, lo omitiremos en la implementación Java. El operador == equivale al método ‘equals’ de la implementación de Java. Las particularidades de la implementación del método equals en Java se comentarán en clase; si estás utilizando Eclipse puedes usar la opción Source / Generate hashCode() and equals() del menú, pero asegúrate de que entiendes bien el código generado y sobre todo debes revisar la implementación de equals() para que se ajuste a las especificaciones. Lee atentamente el fichero README.txt que acompaña al código para más información sobre la conversión de código C++ a Java.

La Figura 1 describe gráficamente en UML la clase Coordinate.

Figura 1. Diagrama de clases UML.
Figura 1. Diagrama de clases UML.

Ten en cuenta que en C++ es necesario utilizar un atributo ‘dim’ (que será siempre 2, pero puede cambiar en prácticas posteriores), para almacenar el tamaño del vector ‘components’, pero en Java no es necesario, todos los vectores tienen un atributo ‘length’, por lo que debes usar ‘components.length’ en Java en lugar del ‘dim’ de la implementación en C++.

En Java, la función main se debe encapsular dentro de una clase como método público y estático. Esta clase está definida en un fichero llamado MainP1.java, que realiza las mismas operaciones que se encuentran implementadas en C++ en el fichero mainP1.cc. Este será el programa principal de esta práctica. No debes crearlo tú. Sigue leyendo para saber cómo obtenerlo.

Pruebas unitarias (segunda sesión de prácticas)

El archivo prog3-battleship-p1-pretest.tgz contiene una carpeta model con pruebas unitarias. En la segunda sesión de prácticas veremos como usar estas pruebas para evaluar nuestro código.

Proyecto base para Eclipse (segunda sesión de prácticas)

Importarás la Plantilla de proyecto Eclipse para prácticas desde Github. Esta contiene un proyecto Eclipse preconfigurado para las prácticas de la asignatura. El proyecto contiene el paquete mains dentro de una carpeta de código fuente llamada src. Los archivos .class serán generados por Eclipse en una carpeta bin que no será visible desde el propio Eclipse. El proyecto ya contiene el fichero mains/MainP1.java. Sigue las instrucciones de tu profesor para importarlo a Eclipse y añadir tu código a él.

Documentación

Debéis incluir en los ficheros fuente todos los comentarios necesarios en formato Javadoc. Estos comentarios deben definirse para:  

Estructura de paquetes y directorios

En Java, la estructura de paquetes se implementa a nivel de sistema de ficheros mediante directorios. La práctica debe ir organizada en dos paquetes o directorios:  

Puedes usar mains/MainP1.java para comprobar si tu código al menos compila, ya que realiza llamadas a todos los métodos públicos de la clase Coordinate. El resultado de su ejecución debe ser similar al de la ejecución de la versíon en C++.

Los ficheros fuente deben tener documentación (comentarios) en el formato de Javadoc, pero no se debe entregar los ficheros HTML que genera esta herramienta.

Requisitos mínimos para evaluar la práctica

Entrega de la práctica

La práctica se entrega en el servidor de prácticas del DLSI.

Debes subir allí un archivo comprimido con tu código fuente (sólo archivos .java). En un terminal, sitúate en el directorio ‘src’ de tu proyecto Eclipse e introduce la orden

tar czvf prog3-battleship-p1.tgz model

Sube este fichero prog3-battleship-p1.tgz al servidor de prácticas. Sigue las instrucciones de la página para entrar como usuario y subir tu trabajo.

Evaluación 

La corrección de la práctica es automática. Esto significa que se deben respetar estrictamente los formatos de entrada y salida especificados en los enunciados, así como la interfaz pública de las clases, tanto en la signatura de los métodos (nombre del método, número, tipo y orden de los argumentos de entrada y el tipo devuelto) como en el funcionamiento de éstos. Así, por ejemplo, el método model.Coordinate(int,int) debe tener exactamente dos argumentos de tipo int.

Tienes más información sobre el sistema de evaluación de prácticas en la ficha de la asignatura.

Además de la corrección automática, se va a utilizar una aplicación detectora de plagios. Se indica a continuación la normativa aplicable de la Escuela Politécnica Superior de la Universidad de Alicante en caso de plagio:

“Los trabajos teórico/prácticos realizados han de ser originales. La detección de copia o plagio supondrá la calificación de”0" en la prueba correspondiente. Se informará la dirección de Departamento y de la EPS sobre esta incidencia. La reiteración en la conducta en esta u otra asignatura conllevará la notificación al vicerrectorado correspondiente de las faltas cometidas para que estudien el caso y sancionen según la legislación vigente".

Aclaraciones