1
Examen Ordinario – Programación 1º DAM
Fecha: 26/05/2025
Duración estimada: 3 horas
Enunciado Primera Pregunta (2ª Evaluación suspensa)
Contexto
Se quiere construir un Sistema Gestor de Maleta aplicando algunos
de los principios fundamentales de la programación orientada a
objetos (POO). Esta versión está enfocada en el diseño de clases y su
interacción para afrontar el problema: la preparación de una maleta
para un viaje.
Objetivo de esta pregunta
Se pide implementar un conjunto de clases relacionadas con
algunos conceptos clave de la POO: Interfaz, polimorfismo,
2
encapsulamiento y composición, simulando la gestión básica
de los elementos de una maleta para un viaje.
Requisitos de implementación
Interfaz ItemMaleta
• Define un interfaz común para cualquier tipo de elemento
que se pueda incluir en una maleta.
• Métodos obligatorios:
o String getNombre()
o int getHuecos()
o String mostrar() (devuelve una representación textual
del objeto)
Clases concretas que implementen la interfaz
• Clase Ropa: representa una prenda (ejemplo camiseta,
pantalón, etc.). Cada prenda ocupa cierta cantidad de
huecos.
3
• Clase Tecnologia: representa un dispositivo tecnológico
(ejemplo móvil, portátil, etc.), también con huecos, y una
propiedad extra: si requiere cargador o no.
Clase Viaje
• Representa un viaje con nombre y fecha.
• Debe permitir agregar objetos del tipo ItemMaleta a una
lista interna (composición).
• Debe tener métodos para:
o Añadir elementos a la lista interna del tipo
ItemMaleta.
o Mostrar el contenido de la maleta (invocando a su vez
a mostrar() de cada item de lista interna anterior).
o Calcular el total de huecos ocupados (invocando a su
vez a getHuecos() de cada item de lista interna
anterior).
Clase AppMaleta
• Contendrá el método main().
4
• Deberá crear un objeto de la clase Viaje para luego crear y
añadirle distintos tipos de elementos (De las clases ropa y
tecnología) para finalmente mostrar todos ellos por
consola.
• Este método main() será el punto de entrada para probar
toda la funcionalidad desarrollada.
Organización del código
• Todas las clases deben estar en el mismo paquete (por
ejemplo, GestorMaletaPOO).
• La ejecución del método main() debe mostrar
correctamente en consola los resultados esperados.
• Se valorará la correcta encapsulación, uso de constructores
y claridad en el código.
Ejemplo de salida esperada por consola
Contenido de la maleta:
Ropa: Camiseta (2 huecos)
5
Tecnología: Móvil (3 huecos) + cargador
Ropa: Pantalón (4 huecos)
Total de huecos ocupados: 9
Consideraciones adicionales
• Usa nombres de clases, métodos y variables
representativos y adecuados según el enunciado.
• Aplica encapsulamiento: los atributos deben ser privados y
accederse mediante métodos get/set o por constructor.
• El objetivo del ejercicio es mostrar una estructura clara y
modular del diseño orientado a objetos.
Criterios de Evaluación
Criterio Puntuación Resultado de
Aprendizaje
Diseño correcto de la interfaz y sus 20% RA7
implementaciones
Uso adecuado del polimorfismo 20% RA7
6
Diseño y funcionalidad de la clase Viaje 25% RA4
(composición)
Correcto uso del encapsulamiento 15% RA4
Clase AppMaleta funcional que 20% RA2
demuestra el sistema
Entrega
• Entrega el proyecto Java de esta pregunta comprimido (.zip)
con formato
PROG_ORDINARIA_1P_NOMBREAPELLIDOS.zip,
incluyendo todos los archivos .java.
• La entrega se realizará a través del aula virtual en el
apartado del Examen de Evaluación Ordinaria de
Programación (DAM1).
7
Enunciado Segunda Pregunta (3ª Evaluación suspensa)
Contexto
Desarrolla una aplicación Java que permite gestionar la
preparación de una maleta para un viaje. La aplicación debe
ofrecer una interfaz gráfica (Swing) sencilla y funcionalidades
relacionadas con el proceso de iniciar un viaje, agregar
elementos a una maleta y cerrar la maleta.
Funcionalidades Imprescindibles
Interfaz Gráfica (Swing)
Debe disponer de tres botones:
• Iniciar viaje
• Hacer la maleta
• Cerrar maleta
Gestión del Viaje
Iniciar viaje
8
• Primero verificar si ya se ha iniciado el viaje. Si es así,
mostrar mensaje de viaje iniciado y salir de la operativa.
• Si no se ha iniciado el viaje, solicitar al usuario que lo inicie
solicitándole:
o Nombre del viaje: Será una cadena de texto que no
debe estar vacía ni contener espacios en blanco.
Validar que sea correcto.
o Fecha: Será una cadena de texto, debe tener el
formato YYYYMMDD o al menos poder validar que
tenga 8 dígitos.
o Crear un fichero con la unión del nombre del viaje y la
fecha (por ejemplo malta_20250701.txt) que
usaremos posteriormente.
Hacer la maleta
• Primero comprobar si el viaje ha sido previamente iniciado y
que no se han superado los huecos máximos disponibles
definidos para la maleta (por ejemplo, 20 huecos). Si no es
9
así, mostrar mensaje de que el viaje no ha sido iniciado o
bien se ha llegado al máximo de huecos disponibles para
hacer la maleta y salir de esta operativa.
• Si por el contrario el viaje ha sido iniciado y no se han
superado el número de huecos máximos disponibles
permitiremos al usuario ir añadiendo elementos de forma
iterativa en una caja de dialogo para insertarlos finalmente
en el fichero creado cuando se inició del viaje:
o Cada uno de estos elementos tendrá un nombre y un
número de huecos que ocupa (ejemplo: “pantalón”,
3).
o Habrá que controlar siempre en cada iteración que el
total de huecos ocupados no supere el límite. En caso
de alcanzar este límite máximo de huecos informar y
dejar finalizada ésta operativa (Hacer maleta).
Cerrar la maleta
10
• Primero verificar que el viaje está iniciado y que hay
elementos en la maleta. En caso contrario mostrar mensaje
y salir de esta operativa.
• Si el viaje está iniciado y hay elementos en la maleta
solicitar al usuario una clave de seguridad de 4 dígitos, que
deberá confirmar (máximo 2 intentos). En caso de no
confirmar correctamente mostrar mensaje y salir de la
operativa.
• Si clave confirmada es correcta entonces cifrar la clave
utilizando la operación XOR con la palabra "Z" y guardar el
resultado en un fichero distinto contenedor de la clave
cifrada.
• Conectar con una base de datos SQLite, crear una tabla con
el mismo nombre que el fichero de viaje, e insertar todos los
elementos de la maleta contenidos en el fichero del viaje
iniciado.
• Mostrar en una única pantalla:
11
o El nombre del fichero de viaje y la clave original que
fue cifrada.
• Finalmente liberar todas las operativas para que se pueda
realizar otro próximo y futuro viaje.
Requisitos Técnicos Mínimos
• Aplicación con orientación a objetos (clases para
elementos, GUI, base de datos, seguridad...).
• Manejo de ficheros para almacenar los elementos del viaje y
la clave cifrada.
• Uso de JDBC para conectarse a SQLite.
• Cifrado/descifrado mediante operación XOR con clave "Z".
• Validaciones adecuadas y control de excepciones.
Criterios de Evaluación
Criterio Puntuación Resultado de
Aprendizaje
Gestión del inicio de viaje y creación del 15% RA5
fichero
12
Lógica introducción elementos en maleta, 20% RA5
control huecos y GUI de salida
Lógica cerrar maleta (cifrado XOR y 30% RA5
validación clave)
Conexión y uso de base de datos SQLite 25% RA9
Control de excepciones y/o validaciones 10% RA3 / RA5 /
RA9
Entrega
• Entrega el proyecto Java de esta pregunta comprimido (.zip)
con formato
PROG_ORDINARIO_2P_NOMBREAPELLIDOS.zip,
incluyendo:
o Todos los archivos .java
o Los ficheros y base de datos generados.
• La entrega se realizará a través del aula virtual en el
apartado del Examen de Evaluación Ordinaria de
Programación (DAM1).