Tema
6.1 Interfaces
6.1.1 Contratos de comportamiento
6.1.2 Desacoplamiento mediante interfaces
7. Modelado orientado a objetos
7.1 Identificación de elementos del modelo
7.2 Encapsulamiento y visibilidad
8. Relaciones entre clases
8.1 Asociación, agregación, composición, dependencia y herencia 8.2 Representación gráfica del diseño
9. Principios de diseño orientado a objetos
9.1 Cohesión
9.2 Acoplamiento
10. Desarrollo modular del sistema
10.1 Métodos en clases
10.2 Métodos como representación del comportamiento
10.3 Responsabilidad de los métodos
11. Estructuras de control
1.1 Condicionales
11.2 Bucles
Instrucciones
Componente teórico: Diseño del sistema
1. Propósito
Diseñar un sistema MFA correctamente estructurado, aplicando interfaces, relaciones entre clases y principios de diseño que permitan un sistema modular, mantenible y desacoplado.
2. Contexto del problema
El sistema MFA previamente desarrollado presenta limitaciones:
Alto acoplamiento entre clases
Baja reutilización
Dificultad para mantenimiento
Diseño poco modular
Se requiere rediseñar el sistema aplicando principios avanzados de POO.
3. Desarrollo del trabajo (Tarea del estudiante)
Semana 4: Interfaces y modelado
Defina una o más interfaces para el sistema
(Ejemplo: Autenticador)
Defina métodos como contratos
Explique:
¿Qué comportamiento obliga la interfaz?
¿Cómo desacopla el sistema?
Identifique los elementos del modelo:
Clases principales
Interfaces
Métodos clave
Encapsulamiento y visibilidad:
Defina niveles de acceso (private, protected, public)
Justifique decisiones
Relaciones y principios de diseño
Identifique y explique relaciones entre clases:
Asociación
Agregación
Composición
Dependencia
Herencia
Represente gráficamente el modelo (UML completo)
Analice:
Cohesión:
¿Las clases tienen una única responsabilidad?
Acoplamiento:
¿Qué clases dependen de otras?
¿Cómo reducir dependencias innecesarias?
Desarrollo modular
Defina los métodos del sistema:
Métodos por clase
Responsabilidad de cada método
Relación con el comportamiento del sistema
Analice:
¿Qué ocurre si un método hace demasiado?
¿Cómo afecta a la mantenibilidad?
Uso de estructuras de control:
Defina dónde usar:
Condicionales
Bucles
Justifique su uso en el sistema MFA
4. Análisis crítico
Responda:
¿Cómo ayudan las interfaces a la extensibilidad?
¿Qué relación es más adecuada entre Usuario y métodos de autenticación?
¿Qué problemas genera un sistema altamente acoplado?
¿Cómo mejora la cohesión la calidad del sistema?
Componente práctico: Implementación modular en Java
Semana 5: Requerimientos técnicos
El sistema debe:
Usar interfaces obligatoriamente
Aplicar bajo acoplamiento
Mantener alta cohesión
Definir correctamente relaciones entre clases
Implementar métodos bien estructurados
Funcionalidades
Sistema MFA completo:
Contraseña
OTP (One-Time Password)
Biometría
Validación de autenticación
Registro de accesos
Uso de estructuras de control:
Validación de intentos (if/else)
Iteración de factores (bucles)
Condiciones
El sistema debe:
Ser modular
Permitir cambios sin afectar otras clases
Tener responsabilidades bien definidas
Ejemplo esperado
Autenticador (interfaz)
Clases que implementan comportamiento
Sistema que usa polimorfismo + interfaces
Requerimientos de calidad
Código organizado en paquetes
Métodos pequeños y claros
Nombres significativos
Separación de responsabilidades
Tipo de entrega
Archivo comprimido (.zip) con:
Código fuente en Java
Documento de análisis, diseño y modelado
UML actualizado
Video de máximo 5 minutos, donde se pueda mirar la cara del estudiante explicando la funcionalidad del programa y del diseño arquitectónico del software.