FUNDAMENTOS DE PROGRAMACIÓN Curso: 2010/11 PRIMER EXAMEN PARCIAL. 27 de enero de 2011 EJERCICIO 1. Valoración: 2,5 puntos Para crear un sistema de gestión de encuestas para empresas demoscópicas, se define el tipo: Encuesta. El tipo es Copiable y Comparable Propiedades: - Identificador, de tipo entero, consultable. - Salario, de tipo real, consultable y modificable. - Edad, de tipo entero, consultable y modificable. - Género, de tipo carácter, consultable. - Distrito, de tipo entero, consultable. El valor debe estar entre 1 y 20 incluidos. - Relevancia, consultable, que se calcula en función del salario del encuestado, multiplicándolo por un valor, 0.15 en nuestro caso. Orden natural: por identificador. Criterio de igualdad: dos encuestas son iguales si tienen el mismo identificador. Representación como cadena: identificador, edad, género (separados por coma). Donde: Una Encuesta tiene identificador y los datos de la persona encuestada: salario, edad, género, y distrito. Para el tipo Encuesta responda a los siguientes apartados: a) Defina la interfaz Encuesta. b) Implemente una excepción de nombre EncuestaNoValidaException. c) Implemente la clase EncuestaImpl teniendo en cuenta las siguientes consideraciones 1. Implemente un único constructor que recibe valores para todas las propiedades necesarias. 2. No es necesario que implemente métodos set y get, salvo para la propiedad relevancia. 3. Cree una constante llamada FACTOR_RELEVANCIA para almacenar el valor de 0.15 asociado a dicha propiedad. 4. Lance la excepción EncuestaNoValidaException cuando sea oportuno. EJERCICIO 2. Valoración: 2,5 puntos De cara a las elecciones de mayo, se desea crear un subtipo de Encuesta específico para almacenar intenciones de voto. Para ello se define el siguiente tipo: EncuestaPolitica. Subtipo de Encuesta Propiedades Adicionales: - Afiliado, de tipo lógico, consultable. Guarda si el votante encuestado está afiliado a algún partido político - Voto, de tipo cadena de caracteres, consultable. Partido al que tiene intención de votar. Propiedades Redefinidas: - Edad, consultable y modificable, debe ser mayor o igual de18 y menor o igual de 85. - La relevancia se calcula teniendo en cuenta si el encuestado es afiliado a algún partido político, en cuyo caso su valor de relevancia será cero, y en caso contrario, el valor se calcula como en Encuesta. Representación como cadena: identificador, edad, género, voto. Responda a los siguientes apartados: a) Defina la interfaz EncuestaPolitica. b) Implemente la clase EncuestaPoliticaImpl con las siguientes consideraciones: 1. Proporcione un constructor con parámetros para todas las propiedades. 2. Escriba todos los métodos que estime deben definirse, incluyendo get y set. FUNDAMENTOS DE PROGRAMACIÓN Curso: 2010/11 PRIMER EXAMEN PARCIAL. 27 de enero de 2011 EJERCICIO 3. Valoración: 1,5 puntos Se desea implementar el tipo Cuestionario, que permite agrupar encuestas, pronósticos, evaluaciones y otro tipo de informes realizados por empresas de demoscopia. Cuestionario de T Propiedades: Identificador, de tipo String, consultable. Informes, de tipo List<T>, consultable y modificable. Criterio de igualdad: dos cuestionarios son iguales si tienen el mismo identificador. Representación como cadena: la lista de informes. Se pide: Suponga ya implementada la interfaz del tipo Cuestionario, incluyendo el método añadeInforme para añadir un informe al cuestionario, recuperaInforme para recuperar un informe de una posición dada e incorporaInformes, que recibe un cuestionario e incorpora los informes de ese cuestionario al cuestionario actual. Escriba la clase CuestionarioImpl que implemente la interfaz Cuestionario. En dicha clase resuelva exclusivamente los siguientes apartados: Escriba la cabecera de la clase, declare los atributos e incluya un constructor a partir de un identificador. b) Implemente los métodos de la interfaz añadeInforme, recuperaInforme e incorporaInformes, teniendo en cuenta que ya está implementado el método getInformes. a) EJERCICIO 4. Valoración: 3,5 puntos Suponga definida una clase de utilidad llamada Encuestas. Escriba en ella el código de un método estático para responder a cada una de las preguntas que se plantean a continuación. a) Un método votosPartidoMayorEdad que reciba un Cuestionario de EncuestaPolitica, una cadena de caracteres con el nombre de un partido político y un entero edad, y que devuelve el número de encuestas del cuestionario con la intención de voto del partido dado y edad del votante mayor que la dada. b) Un método salarioMaximoPartido que recibe un Cuestionario de EncuestaPolitica y una cadena de caracteres con el nombre de un partido político y devuelve el salario máximo de los votantes de dicho partido. c) Un método resultadosPartido que recibe un cuestionario de EncuestaPolitica y una cadena de caracteres con el nombre de un partido político, y devuelve el porcentaje de votos para ese partido, esto es, el resultado de dividir los votos para ese partido entre el número total de encuestas. d) Un método buscaEncuesta que recibe un cuestionario de Encuesta, un entero representando un distrito y dos edades, edad1 y edad2, y devuelve el primer elemento de tipo Encuesta encontrado del distrito dado con su edad comprendida entre edad1 y edad2 (ambas inclusive, suponga edad1<edad2). e) Un método distritos que recibe un cuestionario de Encuesta y devuelve un conjunto con los distintos distritos presentes en las encuestas.