UT12 – Modelo Vista Controlador

Modelo Vista Controlador

Es un patrón de arquitectura de software, que separa los datos y la lógica de negocio de una aplicación de la interfaz de usuario y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC propone la construcción de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representación de la información, y por otro lado para la interacción del usuario.  Este patrón de arquitectura de software se basa en las ideas de reutilización de código y la separación de conceptos, características que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento.

Las ventajas de utilizar este patrón son las siguientes:

  • La implementación se realiza de forma modular.
  • Sus vistas muestran información actualizada siempre. El programador no debe preocuparse de solicitar que las vistas se actualicen, ya que este proceso es realizado automáticamente por el modelo de la aplicación.
  • Cualquier modificación que afecte al dominio, como aumentar métodos o datos contenidos, implica una modificación sólo en el modelo y las interfaces del mismo con las vistas, no todo el mecanismo de comunicación y de actualización entre modelos.
  • Las modificaciones a las vistas no afectan al modelo de dominio, simplemente se modifica la representación de la información, no su tratamiento.

MVC esta demostrando ser un patrón de diseño bien elaborado pues las aplicaciones que lo implementan presentan una extensibilidad y una mantenibilidad únicas comparadas con otras aplicaciones basadas en otros patrones.

Incluimos a continuación la presentación mostrada en clase,

Práctica obligatoria

Desarrollo de nuevas funciones de un blog desarrollado utilizando el patrón Modelo-Vista-Controlador. Esta aplicación blog tiene ya desarrolladas una serie de funcionalidades y el objetivo de este proyecto es comprender su funcionamiento y desarrollar funcionalidades adicionales.

El primer paso es crear una base de datos llamada “bdweb” utilizando PhpMyAdmin. También con PhpMyAdmin se ejecutará el siguiente script. Este script introduce en la base de datos los datos necesarios para el proyecto. Los ficheros php podemos descargarlos en un fichero zip y los colocaremos en la carpeta “blog” en “htdocs”.

Las funcionalidades existentes pueden ser utilizadas unas por usuarios no autenticados y otras por usuarios autenticados. Estas serán:

Funcionalidad Descripción Quién
Listado de posts Lista todos los posts enviados por cualquier usuario. Es la página de inicio. Usuario no autenticado / Usuario autenticado
Autenticación Autenticar/conectar a un usuario en el sistema. Usuario no autenticado
Desconexión Aparecerá un enlace en la cabecera de la ventana que permita desconectarse. Usuario autenticado
Registro de usuario  (alta de usuario) Crear un nuevo usuario. Usuario no autenticado
Envío de un post (alta de post) Enviar un post al sistema. Solicita autenticación si no se estaba previamente. Usuario autenticado
Detalle de un post Información detallada de un post. Usuario no autenticado

Lo primero que se hará es crear una tercera categoría de usuario: Administrador del blog. Podrá haber más de uno y tendrá asociadas una serie de funcionalidades propias. Cada usuario autenticado lo es de un solo tipo, administrador o básico.

A continuación se proponen las siguientes funcionalidades nuevas:

Funcionalidad Descripción Quién
Contador de visitas Aparecerá en la cabecera, durante toda la conexión, para usuarios autenticados. Se guardará de una conexión a otra. Usuario autenticado
Listado de posts propios Lista todos los posts enviados por el usuario con el que se está conectado. Usuario autenticado
Eliminación de un post propio Permite borrar un post enviado por el usuario con el que se está conectado. Usuario autenticado
Subida de foto en el alta de usuario Permite subir una foto del usuario al crearlo, que quedará asociada a su perfil. Usuario autenticado
Modificación del perfil de un usuario Permite modificar los datos de su perfil (todos menos el nombre de usuario) al usuario con el que se está conectado. Usuario autenticado
Baja de usuario Permite darse de baja al usuario con el que se está conectado. Fuerza la desconexión. Se eliminarán sus posts. Usuario autenticado
Listado/consulta parametrizada de usuarios Listado de todos los usuarios del Blog, pudiendo consultar por su login, fecha nacimiento… Se mostrará como respuesta una lista de usuarios con sus datos principales, incluida la foto. Usuario administrador
Bloqueo/Desbloqueo de usuario básico Permite bloquear/desbloquear a un usuario básico. El usuario bloqueado ya no podrá conectarse, siendo informado de ello. Usuario administrador

Con el objetivo de mejorar la organización del blog se introducirá  el concepto de Tema (Categoría) de un post. Se quiere asociar a cada post, al ser enviado, un tema o categoría, de manera que todo post estuviera categorizado por tema. Cada tema incorporaría la siguiente información:

  • Nombre del tema
  • Descripción
  • Fecha de creación

Adicionalmente se proponen una serie de funcionalidades avanzadas a realizar en una segunda fase:

Funcionalidad Descripción Quién
Alta de tema Crear un tema. Usuario administrador
Consulta de posts de un tema Listar los posts de un determinado tema. Usuario autenticado
Añadir la elección de temas al alta de post Modificar el proceso de alta de post para que en el formulario aparezca la lista de temas disponibles. Usuario autenticado
Eliminación de tema Elimina un tema siempre que no tenga posts vinculados. Usuario administrador
Modificación de tema Modificar información del tema. Usuario administrador