MVC (model-view-controller): Es un patrón de arquitectura
DAO (Data access object): El DAO es un objeto en el sistema que transforma los datos de un objeto para guardarlos en una base de datos relacional
Y hace lo mismo para volver a cargar un objeto en memoria a partir de los datos guardados en la DB
MVC
Controlador: Es un objeto técnico que atiende las peticiones y las interacciones
Atiende las peticiones del cliente
Combina las vistas con los datos del modelo para crear la respuesta y enviarla
Crea y gestiona los datos del modelo
& Por ejemplo, si un cliente pide crear una cuenta de usuario, el Controlador crea un nuevo Usuario en el modelo, y luego puede guardarlo en la DB mediante un DAO
Pueden haber varios Controladores, que se ocupen de distintos casos de uso
Todos se conectan al mismo modelo
! Convención de la cátedra: usamos un solo controlador
Modelo: Contiene todos los objetos de negocio
Contiene las clases que se instancian
Y los objetos que guardan los datos "vivos" del sistema
Evalúa las decisiones de negocio (mediante los métodos de las clases)
& Por ejemplo, para cambiar el email de un user, el controlador le pide al objeto del modelo que ejecute user.newMail(...)
El DAO pertenece al modelo
Vista: Es un esqueleto que soporta un set de datos del modelo
Es lo que se termina mostrando el usuario (HTML, json, etc.)
Recibe los datos/objetos del modelo que necesita consultar para mostrar al usuario
Tiene acceso para llamar métodos de los objetos
Permite al usuario hacer nuevas consultas
& Por ej. La vista tiene un botón que el usuario clickea, la vista envía un mensaje al controlador, y se dispara de nuevo el ciclo
Una vista puede ser el código que rellena una template HTML
Interfaz
Es una colección de métodos abstractos y propiedades constantes
Método abstracto es aquel que está definido pero no implementado
Cada clase que implemente una interfaz debe implementar los métodos de la interfaz de la forma que los vayan a usar
Es como el header.h de un programa en C: dice qué hace, pero no cómo