Examen de Programació II UDL 2011 · Segundo Parcial Curso 2011-2012

Examen de Programació II de la UDL (Grado en Ingeniería Informática) 2011, Segundo Parcial Curso 2011-2012: 2 problemas con solución. Gratis.

Temas del examen: Diseño de clases y objetos en Java, herencia e igualdad · Ficheros en Java: texto secuencial y acceso directo binario

Problema 1 · Diseño de clases y objetos en Java, herencia e igualdad

Segundo parcial de Programación 2 (Curso 2011/2012)

A continuación se resumen algunas clases y métodos de la API estándar de Java disponibles para la resolución del examen:

StringTokenizer: constructores new StringTokenizer(String str) y new StringTokenizer(String str, String delims); métodos boolean hasMoreTokens() y String nextToken().

String: charAt(int index), substring(int begin, int end), equals(String other), equalsIgnoreCase(String other), indexOf(String s), indexOf(String s, int begin), toUpperCase(), toLowerCase(), trim().

Double e Integer: métodos de conversión estáticos Double.parseDouble(String s) e Integer.parseInt(String s).

FileReader: constructores y operaciones read(), close().

BufferedReader: new BufferedReader(FileReader reader), String readLine(), void close().

Math: métodos estáticos abs(double val), max(double val1, double val2), min(double val1, double val2).

Problema 1. Diseño e implementación de la clase Duration

Se requiere modelar e implementar una clase en Java denominada Duration concebida para almacenar y manipular magnitudes temporales compuestas por horas y minutos. Considérese la siguiente traza de ejecución como referencia del comportamiento esperado:

Duration d = new Duration(2, 15); // 2 horas y 15 minutos

int h = d.getHours(); // h vale 2

int m = d.getMinutes(); // m vale 15

double th = d.toHours(); // th vale 2.25

double tm = d.toMinutes(); // tm vale 135.0

d.add(new Duration(0, 50));

int h2 = d.getHours(); // h2 vale 3

int m2 = d.getMinutes(); // m2 vale 5

println(d.toString()); // Escribe 3:05

Duration d2 = Duration.add(d, new Duration(2, 10));

int h3 = d2.getHours(); // h3 vale 5

int m3 = d2.getMinutes(); // m3 vale 15

Especificaciones y consideraciones de diseño:

Codifique la clase Duration incluyendo el constructor y las operaciones públicas evidenciadas en el ejemplo precedente (nótese la presencia de una operación add modificadora de instancia y otra estática que devuelve un nuevo objeto).

Pueden declararse los atributos, constantes y métodos privados que se consideren oportunos para estructurar y clarificar la lógica interna.

Comportamiento del constructor: ante cualquier parámetro con valor estrictamente negativo, se tomará automáticamente 0. La cantidad de minutos suministrada puede superar el valor de 59, debiendo ajustarse adecuadamente.

Método toHours: debe devolver el equivalente en horas en formato decimal de doble precisión (por ejemplo, 15 minutos corresponden a 0,25 horas).

Método toString: devolverá la representación textual con el esquema horas:minutos, garantizando que el campo de los minutos conste siempre de dos cifras (con cero a la izquierda si es necesario).

Problema 2 · Ficheros en Java: texto secuencial y acceso directo binario

Segundo parcial de Programación 2 (Curso 2011/2012)

A continuación se resumen algunas clases y métodos de la API estándar de Java disponibles para la resolución del examen:

StringTokenizer: constructores new StringTokenizer(String str) y new StringTokenizer(String str, String delims); métodos boolean hasMoreTokens() y String nextToken().

String: charAt(int index), substring(int begin, int end), equals(String other), equalsIgnoreCase(String other), indexOf(String s), indexOf(String s, int begin), toUpperCase(), toLowerCase(), trim().

Double e Integer: métodos de conversión estáticos Double.parseDouble(String s) e Integer.parseInt(String s).

FileReader: constructores y operaciones read(), close().

BufferedReader: new BufferedReader(FileReader reader), String readLine(), void close().

Math: métodos estáticos abs(double val), max(double val1, double val2), min(double val1, double val2).

Problema 2. Procesamiento de fichero y medias de duración por proceso

En el marco de un estudio comparativo orientado a determinar la efectividad de diversos métodos de manufactura (buscando aquellos que logran duraciones operativas más prolongadas), se dispone de un fichero de texto donde cada registro responde a la estructura:

Nº pieza, Proceso, Horas, Minutos

Donde el campo Proceso adopta exclusivamente uno de los cuatro identificadores válidos: A, B, C o D. Se asume que el fichero no contiene errores de sintaxis ni valores anómalos.

Se pide estructurar y desarrollar un programa completo en Java que:

Lea línea por línea el fichero de datos.

Calcule la media de duración (expresada en horas decimales) para cada uno de los cuatro procesos mediante la clase Duration y su método toHours implementados en el Problema 1.

Imprima por pantalla los resultados computados para cada proceso.

Instrucciones adicionales: No se limite a transcribir código fuente; justifique y razone brevemente el planteamiento adoptado. Se valorará positivamente la modularización de la solución mediante métodos o clases auxiliares.

También puedes estudiar por temas

Practica un tema con ejercicios de los exámenes de todos los años, mezclados.

Ver los 6 temas

Otras convocatorias de 2011

Juny (2011) · Examen Primer Parcial (Curso 2011/2012) (2011)