Jerarquía de Figuras - Clase Punto2D
Planteamiento
Queremos modelar y programar una clase Java que me permita representar y trabajar con puntos en el plano 2D.
Modelado de los datos de la clase
Para poder representar un punto en el plano 2D necesitamos almacenar la siguiente información:
- Coordenada X del punto. Será un número real de tipo double, cuyo rango abarcará tanto los negativos, como los positivos y el cero.
- Coordenada Y del punto. Será un número real de tipo double, cuyo rango abarcará tanto los negativos, como los positivos y el cero.
Los atributos deberán tener el modificador de acceso adecuado para el propósito de los mismos.
Métodos constructores
Se programarán dos constructores para la clase:
- Un constructor que recibirá todos los datos necesarios para la construcción del objeto; es decir, que recibirá ambas coordenadas, para construir el punto correspondiente.
- El constructor copia, que recibe otro punto y construye un punto que es copia del recibido.
Los constructores deberán
comprobar que los datos suministrados cumplen con las restricciones establecidas para los mismos, si las hubiese. Si alguno no es válido, se lanzará la excepción IllegalArgumentException
. Los métodos constructores deberán tener el modificador de acceso adecuado para el propósito de los mismos.
Métodos getter/setter
Se ofrecerán métodos getter/setter para todos los atributos de la clase. Además, se proporcionará un método setter para establecer ambos atributos al mismo tiempo.
Los métodos setter deberán verificar que se cumplen las restricciones impuestas para los datos correspondientes, si las hubiese. Si el dato no es válido, se lanzará la excepción IllegalArgumentException.
Todos estos métodos deberán tener el modificador de acceso adecuado para el propósito de los mismos.
Otros métodos
- Programaremos un método llamado getDistancia, que calculará la distancia (número siempre positivo) entre este Punto2D y otro Punto2D que recibirá como argumento.
Se lanzará la excepción NullPointerException si el punto que se recibe como argumento es un objeto nulo. Simplemente se propagará la excepción que se genera cuando trata de manipularse un objeto nulo.
![](image (1).png_3de4de83d48e48157696b7c3dc01fb76.png)
El método deberá tener el modificador de acceso adecuado para el propósito del mismo.
Redefinición de métodos heredados
- Redefine los dos métodos heredados de la clase Object que permiten establecer cuándo dos objetos de la clase Punto2D son iguales, de tal manera que se establezca que serán iguales cuando sus coordenadas X y Y sean las mismas.
Testing JUnit de la función
En el siguiente enlace encontrarás el fichero de Testing JUnit que puedes integrar en tu proyecto para comprobar si el método getDistancia y uno de los métodos que comprueba si dos objetos son iguales son correctos. Pero
recuerda:
- Debes programar para resolver el problema que se te ha planteado de manera genérica y correcta, no programar para que la función pase los tests. Se considera mal programado un código que va poniendo parches para resolver casos particulares de testing cuando esos casos pueden ser tratados en el algoritmo general de estar éste bien programado.
- Si tu función no pasa alguno de los tests es porque contiene errores que debes corregir. Sin embargo, que tu función pase los tests no implica necesariamente que sea correcta; simplemente significa que pasa los tests diseñados.
Criterio de Corrección
- La clase tiene que estar operativa, no conteniendo errores de sintaxis que impidan su compilación y uso. Si no es así, no se puntuará el ejercicio.
- Errores en la elección de los modificadores de acceso, tanto de atributos como de métodos, será penalizado con hasta un 30% de la puntuación del ejercicio.
- Errores en la definición de los constructores de los objetos de la clase y la gestión de sus restricciones será penalizado con hasta un 30% de la puntuación del ejercicio.
- Errores en la definición de los métodos getter/setter y la gestión de sus restricciones, será penalizado con hasta un 30% de la puntuación del ejercicio.
- Errores en la modificación de métodos heredados, será penalizado con hasta un 30% de la puntuación del ejercicio.
- Si el método getDistancia no es correcto, se penalizará con hasta un 50% del ejercicio.
Tiempo estimado de realización
30 minutos