Tipo Punto
Defina el tipo Punto con dos
coordenadas reales, ambas consultables y modificables. Defina el TipoCuadrante
con los valores PRIMER, SEGUNDO, TERCER, CUARTO y EJES y el TipoDiana con los
valores INTERIOR, MEDIO y EXTERIOR. Un punto pertenecerá a algún cuadrante en
función del signo de sus coordenadas según la representación cartesiana y si
alguna de sus coordenadas es cero entonces estará sobre un eje.
Proporcione un método que calcule
la distancia entre dos puntos y reutilícelo para otro método que devuelva la
distancia al origen de coordenadas.
Un punto pertenecerá a alguno de
los valores de TipoDiana según la distancia al origen sea respectivamente menor
de 4, mayor de 4 y menor de 8 o mayor de 8. Proporcione al tipo Punto un método
que devuelva su TipoDiana correspondiente.
Finalmente proporcione al tipo
Punto un método tal que dados dos valores reales vx e vy desplace sus
coordenadas en la dirección y sentido del vector (vx,vy). Defina ORIGEN como un
atributo estático y final para la clase PuntoImpl.
Proporcione a PuntoImpl un
constructor a partir de dos valores reales para sus coordenadas y a partir de
un String con dos valores reales separados por una coma. Implemente los métodos
toString, equals y compareTo. Dos puntos se ordenaran primero por su coordenada
X y a igualdad de esta por su coordenada Y.
Tipo NubePuntos
Vamos a definir un tipo
NubePuntos para guardar una colección de objetos de tipo Punto. La
funcionalidad de este tipo será la siguiente:
2. Un método tal que dado un valor de TipoCuadrante devuelva el número de puntos en ese cuadrante, no olvide los puntos sobre los ejes.
3. Un método tal que dado un valor real d devuelva el número de puntos cuya distancia al origen es menor que d.
4. Devuelva un Punto que sea el centro de gravedad de la nube. Esto es, el punto cuyas coordenadas son la media de las coordenadas de los puntos.
5. Devuelva si existe algún punto sobre el eje de abscisas.
6. Dado un Punto p y un radio r devuelva si existe algún punto dentro del círculo de centro p y radio r.
7. Dado un valor real d, devuelve si es cierto que todos los puntos están a una distancia al origen menor que d.
8. Devuelve el Punto más lejano al origen de coordenadas.
9. Dado un Punto p, devuelva el punto de la nube más cercano.
10. Dado un valor real d, devuelva una NubePuntos con aquellos que estén a una distancia menor que d del origen.
11. Devuelva un Map que asocie a cada TipoCuadrante un SortedSet con los puntos de ese cuadrante ordenados por distancia al origen.
12. Devuelva un Map que asocie a cada TipoCuadrante el número de puntos que hay de ese tipo
13. Devuelva un SortedMap que asocie a cada TipoDiana un Set con los puntos que le corresponden.
14. Dados dos valores vx e vy desplace toda la nube en la dirección y sentido indicados por el vector (vx,vy).
15. Dado un valor de TipoCuadrante devuelva un Punto con la suma de todas las coordenadas de los puntos de ese cuadrante.
16. Devuelva un SortedMap que asocie a cada TipoCuadrante el Punto cuyas coordenadas sean la suma de todas las coordenadas de los puntos de ese cuadrante.
17. Devuelva un SortedMap que asocie a cada TipoCuadrante el Punto centro de gravedad de los puntos de ese cuadrante.
18. Proporcione a la clase NubePuntos un constructor público tal que reciba el nombre de un fichero conteniendo en cada línea dos valores reales separados por una coma con las coordenadas de los puntos y un constructor privado que reciba una List<Punto> para usarlo en el ejercicio 10.
No hay comentarios:
Publicar un comentario