Tema
1. Análisis y modelado orientado a objetos
1.1 Fundamentos de la Programación Orientada a Objetos
1.1.1 Paradigma orientado a objetos y su propósito
1.1.2 Ventajas de la POO en la estructuración de sistemas de software
2. Clases y objetos
2.1 Diferencia conceptual entre clase y objeto
2.2 Representación de objetos en un sistema de software.
3. Atributos y responsabilidades de las clases
3.1 Estado de un objeto
3.2 Responsabilidad como principio de diseño
4. Encapsulación
4.1 Ocultamiento de información
4.2 Acceso controlado a los datos
5. Herencia y polimorfismo
5.1 Reutilización de código mediante herencia
5.2 Polimorfismo como mecanismo de extensibilidad
Instrucciones
Propósito de la actividad
Analizar un problema de control de accesos en un sistema informático y proponer un modelo orientado a objetos inicial, aplicando los fundamentos de POO para estructurar una solución clara y organizada.
Contexto del problema
Una organización necesita implementar un sistema de acceso seguro para controlar el uso de sus recursos digitales.
Actualmente:
No existe diferenciación entre tipos de usuarios
Los accesos no están controlados
No hay gestión de roles ni permisos
El sistema es difícil de escalar
Se requiere un modelo que permita:
Gestionar usuarios
Definir roles
Asignar permisos
Controlar acceso a recursos
RETO 1 (integrado)
Análisis y Modelado Inicial Orientado a Objetos
El estudiante deberá:
Identificar clases principales
Definir atributos
Establecer responsabilidades
Representar el modelo inicial
Componente teórico
1. Fundamentos de la POO
Explique con sus palabras:
¿Qué es la programación orientada a objetos?
¿Cuál es su propósito en sistemas de control de accesos?
¿Qué ventajas aporta frente a otros enfoques?
2. Clases y objetos
Identifique al menos 4 clases principales del sistema:
Obligatorias:
Usuario
Rol
Permiso
Recurso
Para cada clase:
Describa su función dentro del sistema
Defina al menos 2 objetos (instancias)
Explique la diferencia entre:
Clase
Objeto
(utilizando ejemplos del sistema)
3. Atributos y responsabilidades
Para cada clase:
Defina sus atributos (estado del objeto)
Defina sus responsabilidades (comportamiento)
Análisis
Responda:
¿Qué ocurre si una clase tiene demasiadas responsabilidades?
¿Cómo afecta esto al sistema?
4. Encapsulación
Defina atributos como privados
Proponga métodos de acceso (getters/setters)
Justifique
¿Por qué es importante proteger los datos?
¿Qué riesgos existen si los atributos son públicos?
5. Herencia y polimorfismo
Herencia
Defina una clase base (ej. Usuario)
Proponga clases derivadas:
Ejemplo:
UsuarioAdministrador
UsuarioNormal
Explique:
¿Qué se hereda?
¿Qué se especializa?
Polimorfismo
Defina un método común (ej. accederRecurso())
Explique cómo diferentes tipos de usuario lo implementan
Análisis
¿Cómo permite el polimorfismo extender el sistema?
6. Representación del modelo
Elabore un diagrama UML que incluya:
Clases
Atributos
Métodos
Relaciones
Herencia
7. Análisis crítico
Responda:
¿Qué riesgos existen si no se aplica encapsulación?
¿Qué problemas surgen sin herencia?
¿Cómo limita el sistema la ausencia de polimorfismo?
¿Por qué este modelo es escalable?
Componente práctico (Java)
Requerimientos técnicos
El sistema debe:
Implementar las clases definidas
Aplicar encapsulación
Aplicar herencia
Aplicar polimorfismo básico
Funcionalidades mínimas
Crear usuarios
Asignar roles
Definir permisos
Asociar recursos
Simular acceso a recursos
Simulación en el método main
Crear distintos tipos de usuario
Intentar acceder a un recurso
Mostrar resultado
Condición
El sistema debe demostrar:
Diferencia de comportamiento según tipo de usuario
Tipo de entrega
Archivo comprimido (.zip) con:
Código fuente en Java
Documento (análisis y UML)
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.