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% |
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.
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.
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.
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.
Debéis incluir en los ficheros fuente todos los comentarios necesarios en formato Javadoc. Estos comentarios deben definirse para:
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:
model
: contiene el fichero Coordinate.java
mains
: contiene el fichero MainP1.java
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.
Ninguna operación debe emitir ningún tipo de comentario o mensaje por salida estándar, a menos que se indique lo contrario. Evitad también los mensajes por la salida de error.
La práctica debe estar suficientemente documentada, de manera que el contenido de la documentación que se genere mediante la herramienta javadoc sea significativo.
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.
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". |