Nombre y Apellido: Matias Baptista
Legajo: 156.359-2
Materia: Diseño de Sistemas
Comisión: K3152
El presente trabajo consiste en el diseño y desarrollo de un validador de Inscripciones basado en materias correlativas, como es común en carreras universitarias y terciarias.
La idea central es garantizar que un alumno solo pueda inscribirse a materias solo si aprobo todas las materias correlativas requeridas.
En los planes de estudio académicos, algunas materias requieren que el estudiante haya aprobado otras previamente, conocidas como materias correlativas. Este sistema busca validar que un alumno cumple con estas condiciones al momento de su inscripción.
La solución cumple con las siguientes condiciones:
- La clase principal es
Inscripcion
, cuyo métodoboolean aprobada()
determina si una inscripción es válida. - Una inscripción puede incluir varias materias.
- La inscripción se considera rechazada si al menos una materia no cumple con sus correlativas.
Restricción:
La solución solo puede utilizar tres clases: Inscripcion
, Materia
, y Alumno
.
Los puntos de la consigna están resueltos y ubicados de la siguiente manera:
- Diagrama de clases UML, hecho con PlantUML (
diagram.puml
) - Implementación en Java(
Materia.java
Inscipcion.java
Alumno.java
) - Tests unitarios con JUnit(
InscripcionTest.java
)
Para modelar el problema se aplicó el paradigma orientado a objetos, con la siguiente lógica:
Alumno
representa a un estudiante con una lista de materias aprobadas y es quien procede a realizar la inscripcion.Materia
contiene su nombre, código, y la lista de materias que deben aprobarse previamente (correlativas).Inscripcion
asocia un alumno con una lista de materias a las que desea inscribirse, y define el métodoaprobada()
que evalúa si todas pueden ser cursadas según sus correlativas.
La lógica de validación está distribuida entre las clases, teniendo en cuenta lo siguiente:
Materia
sabe cuáles son sus correlativas.Alumno
conoce las materias que ya aprobó.Inscripcion
consulta a cada materia si puede ser cursada por el alumno(si alguna no cumpliese se rechazaria la inscripcion por completo).
Se realizaron diversos tests usando JUnit para verificar el comportamiento esperado del sistema en distintos escenarios. Para lo cual se instancio un alumno base (con algunas materias aprobadas) y diversas materias; algunas de ellas sin correlativas(correspondientes a las iniciales).
En cuanto a los tests realizados:
- Se probaron tanto casos exitosos (cuando todas las correlativas están aprobadas) como casos fallidos (cuando al menos una correlativa falta).
- También se cubrió el caso especial donde el alumno intenta inscribirse en materias del primer año las cuales no tienen correlativas, validando que dicho escenario se considere válido.
Este enfoque permite verificar el funcionamiento correcto del método aprobada()
de la clase Inscripcion
, cumpliendo así con el requerimiento del problema planteado.