PATRONES DE DISEÑO. FAVA - Formación en Ambientes Virtuales de Aprendizaje. SENA - Servicio Nacional de Aprendizaje

Documentos relacionados
Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype

Patrones de Diseño Orientados a Objetos 2 Parte

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

CLASE 10: MÁS PATRONES. Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez

Patrones de Alto nivel: Patrones de Arquitectura Patrones de nivel medio: Patrones de Diseño Patrones de bajo nivel: Idioms

Capítulo 4 Patrones y Patrones de Diseño (ii)

Instructivo para la elaboración de un Manual Técnico

TALLER No. 1 Capitulo 1: Conceptos Básicos de Bases de datos

PLANES DE PREVENCIÓN DE PÉRDIDA DE DATOS

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

Patrones de diseño en Java Los 23 modelos de diseño: descripción y soluciones ilustradas en UML 2 y Java

Capitulo VII. Editor de Mapa de Tareas. Como hemos hablado en los capítulos anteriores, sabemos que parte del éxito

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

Patrones de diseño en PHP Los 23 modelos de diseño: descripciones y soluciones ilustradas en UML2 y PHP

Programa Presupuestos de Sevillana de Informática.

UML, ejemplo sencillo sobre Modelado de un Proyecto

Instituto Tecnológico de Costa Rica

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

IAP ENTORNOS INFORMATIZADOS CON SISTEMAS DE BASES DE DATOS

PROGRAMACIÓN ORIENTADA A OBJETOS

DIAGRAMA DE CLASES EN UML

Actualización de versión a Bizagi 10.x

CAPÍTULO 3 Servidor de Modelo de Usuario

SISTEMA DE BECAS AL EXTERIOR

Introducción a Visual Studio.Net

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

MANTENIMIENTO Y SOPORTE

A. Goñi, J. Ibáñez, J. Iturrioz, J.A. Vadillo OCW 2013

PARÁMETROS DE GESTIÓN Y DESEMPEÑO DEL SISTEMA MANEJADOR DE BASES DE DATOS Y DE LA BASE DE DATOS

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

Además se recomienda su uso como herramienta de trabajo dentro de las actividades habituales de gestión.

Base de datos en la Enseñanza. Open Office

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

ORIENTACIONES SIMCE TIC

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

2.2.- Paradigmas de la POO

Manual de OpenOffice Impress

UNIDAD DIDACTICA 1: SISTEMAS GESTORES DE BASES DE DATOS

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl

Unidad 9. Implementación. M.C. Martín Olguín

Mejorando las ventas utilizando el conocimiento sobre nuestros clientes

DESARROLLO DE SOFTWARE DEFINICIÓN GENERAL DEL PROCESO GABY LORENA GUERRERO LEYDI ROCIO ERAZO PABLO FELIPE MIRANDA WALTER ALEXIS ANTE

Patrones de diseño: Test 1

Capitulo III. Diseño del Sistema.

Unidad VI: Supervisión y Revisión del proyecto

Solución de No conformidades

Sistema de Mensajería Empresarial para generación Masiva de DTE

Estimado usuario. Tabla de Contenidos

Guía LEGAL Conectores sociales Y "SOCIAL LOGIN"

Operación 8 Claves para la ISO

BASE DE DATOS RELACIONALES

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

Análisis y Diseño de Soluciones de Software

SEGUIMIENTO EDUCATIVO. Comunicaciones

6.8 La Arquitectura del Sistema. [Proceso]

2.1 Planificación del Alcance

Capitulo V Administración de memoria

1 El plan de contingencia. Seguimiento

Deberemos escoger de nuestro equipo humano un responsable de la implementación (si no queremos hacerlo personalmente).

Licenciatura en Computación

Gestión de Permisos. Documento de Construcción. Copyright 2014 Bizagi

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

Conceptos Generales en Joomla

Manual para Empresas Prácticas Curriculares

LABORATORIO 4. CONSTRUCCIÓN DE CUBOS PARA LA BODEGA DE DATOS

MODELOS DE CALIDAD EN EL DESARROLLO DE SOFTWARE

ISO 17799: La gestión de la seguridad de la información

Proyecto final de curso Android: Programación de aplicaciones (3ª edición online, octubre-enero 2013)

Conclusiones. Particionado Consciente de los Datos

Curso: FT433 - Introducción a la virtualización con VirtualBox

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

Guía para realizar trabajos universitarios

Propiedad Colectiva del Código y Estándares de Codificación.

Base de datos relacional

TIPOS DE PATRONES. PATRONES DE DISEÑO: Las soluciones probadas para el diseño de software. En estas nos vamos a centrar.

Bhar aumenta 30% la eficiencia y mejora la satisfacción de los clientes

PROCEDIMIENTO OPERATIVO DESARROLLAR SISTEMAS INFORMÁTICOS PDO-COCTI-DTIN-04

4. METODOLOGÍA. 4.1 Materiales Equipo

Gestión Documental con Microsoft Office SharePoint Server 2007 (MOSS) Ignacio López - Ingeniero en Informática Software Architect en Alhambra-Eidos

Estilos de Arquitectura y. Patrones de Diseño Arquitectónico. Patrones de Arquitectura

Funciones del Administrador de Base de Datos. Ing. Anaylen López, MSc Base de Datos II

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

Capítulo 6: Conclusiones

Aplicación de la metodología de las 5 S al diseño de tarjetas de

El inventario preciso de todos los recursos técnicos. Todas sus características serán almacenados en una base de datos.

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.1 UML: Introducción

Usuarios y Permisos. Capítulo 12

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

5.1. Organizar los roles

Capítulo 2. Planteamiento del problema. Capítulo 2 Planteamiento del problema

SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública

MICROSOFT ACCESS 2010

INVENTARIO INTRODUCCIÓN RESUMEN DE PASOS

políticas repercuten no solo en el momento que son tomadas, por el contrario siguen

MANUAL PARA EL PROCESO DE VERIFICACION LABORAL PLATAFORMA WEB CERILAPCHILE S. A. V 3.0

Caso práctico de Cuadro de Mando con Tablas Dinámicas

CAPITULO 4. Requerimientos, Análisis y Diseño. El presente capítulo explica los pasos que se realizaron antes de implementar

Manual de ayuda para crear y gestionar Tareas, como actividad evaluable

EJEMPLO DE REPORTE DE LIBERTAD FINANCIERA

Transcripción:

PATRONES DE DISEÑO 1. Generalidades 2. Patrones Gof 2.1. Patrones Creacionales 2.1.1.Fábrica Abstracta 2.1.2.Constructor 2.1.3.Método de Factoría 2.1.4.Prototipo 2.1.5.Singleton 2.2. Patrones Estructurales 2.2.1.Adaptador 2.2.2.Puente 2.2.3.Compuesto 2.2.4.Decorador 2.2.5.Fachada 2.2.6.Peso Ligero 2.2.7.Proxy 2.3. Patrones de Comportamiento 2.3.1.Cadena de responsabilidades 2.3.2.Comando 2.3.3.Interprete 2.3.4.Iterador 2.3.5.Memento 2.3.6.Observador 2.3.7.Estado 2.3.8.Estrategia 2.3.9.Método plantilla 2.3.10.Visitante 3. Patrón Modelo Vista Controlador

MAPA CONCEPTUAL Generar Reportes 2

INTRODUCCIÒN Durante la etapa de diseño del sistema una de las principales tareas es la construcción de diagramas de clases, sin embargo, pensar que el problema que se desea solucionar es único, es un error. Existen problemas comunes al desarrollo de software que han sido tipificados o estandarizados y se presentan con sus respectivas soluciones generadas a partir de diseños de interacción o interfaces. Las soluciones tipificadas, ya probadas y documentadas, se denominan patrones de diseño. Los patrones de diseño son una herramienta que soporta la actividad de diseño de la arquitectura, proporcionando en algunas ocasiones el punto de inicio en la determinación de aspectos relacionados con la especificación de clases e interacción para el sistema de información. La temática que se presenta en este objeto proporciona información sobre algunos de los patrones de diseño más importantes, con el fin de que sean considerados durante la fase de diseño de su proyecto formativo.

GENERALIDADES Un Patrón de diseño es un modelo o plantilla de la solución a un problema común en el desarrollo de software. La historia de estos patrones se remonta a 1987 cuando Warde Cunningham y Kent Beck profesionales del desarrollo de software se dieron a la tarea de retomar algunas de las que consideraban buenas ideas en la solución de problemas orientados a objetos y desarrollaron cinco patrones de interacción publicados en un artículo. Sin embargo no fue hasta 1990 cuando el grupo denominado Gang of Four que en adelante se identificarían como GoF retomaron un conjunto de 23 patrones de diseño y se empezó con mayor fuerza a difundir su uso. Los patrones de diseño se enfocan en brindar una solución a problemas de software que han sido probados y tienen la documentación que permite analizar su posibilidad de uso. Esta documentación cuenta entre otros con: Nombre: describe el problema, solución y consecuencias a través de un nombre significativo. Problema: describe cuando debe utilizarse el patrón así como las condiciones para su aplicación. Solución: describe los elementos de diseño a incorporar, con la disposición general de las clases y objetos de forma abstracta. Consecuencias: los costos/beneficios al aplicar el diseño. El principal objetivo que se consigue al utilizar esta técnica es el de la reutilización, lo que facilita conseguir apuntar a los principios de calidad en el diseño de software que son: la eficiencia, la mantenibilidad del sistema, que el sistema sea correcto y por ende la disminución en costos. 3 SENA

Una vez que se ha seleccionado el patrón de diseño a utilizar se recomienda leer inicialmente las partes relacionadas con la aplicabilidad y consecuencias para verificar que es el correcto, revisar concienzudamente la estructura para entender las clases y relaciones, así como verificar el código de ejemplo, que también puede ayudar a entender la implementación del mismo, escoger nombres significativos para los objetos y elementos, declarar las clases e identificar las clases que afectará, definir nombres para los métodos de acuerdo con la guía y por último redactar las operaciones. 2.0 Patrones Gof: Gang-of-Four. Se pueden clasificar en 3 categorías: Patrones Creacionales (Creational patterns) Patrones Estructurales (Structural patterns) Patrones de Comportamiento (Bahavioral patterns). 2.1. Patrones Creacionales Los patrones de creación muestran una guía de cómo crear objetos cuando su creación requiere tomar decisiones como qué clases instanciar o sobre que objetos se delegará responsabilidades. Tienen relación con la instanciación de Clases. Pueden ser divididos en class-creation patterns y object-creational patterns. Los primeros usan la herencia dentro del proceso de instanciación. Los otros usan la delegación para realizar la tarea. 4 SENA

2.1.1. Patrón Fabrica Abstracta (Abstract Factory) Problema: Cómo crear familias de clases relacionadas que implementan una interfaz común? Cómo hacer que el cambio de la familia de clases a utilizar sea transparente para la aplicación? Solución: Definir una interfaz que contenga métodos para la creación de los objetos de cada clase. Esta representa la Fábrica abstracta. Puede ser una interfaz o una clase abstracta. Definir las fábricas concretas para cada familia de clases. MODELO GENERAL FABRICA ABSTRACTA 5

EJEMPLO FABRICA ABSTRACTA 2.1.2. Patrón Constructor (builder) Problema: Cómo construir objetos complejos manteniendo la alta cohesión? Cómo construir objetos que requieren varios pasos en su construcción? 6 SENA

Solución: Definimos una interfaz que defina cada uno de los pasos de la construcción. Definimos una clase que dirija la construcción de los objetos. Para cada forma distinta de crear el objeto, definimos una clase concreta que la defina. Muy similar a Fábrica Abstracta. o Fábrica Abstracta >> familia de objetos. o Constructor >> objetos complejos. MODELO GENERAL - PATRON CONSTRUCTOR ( BUILDER ) 7 SENA

EJEMPLO - PATRON CONSTRUCTOR ( BUILDER ) 8 SENA

2.1.3. Patrón Método Factoría (Factory Method) Problema: Cómo creo instancias de elementos sin saber el tipo concreto del elemento? Cómo creo instancias de una clase, donde la creación es un proceso complejo? Solución: Asignamos la responsabilidad de la creación a un método particular. En caso de que sean múltiples tipos, es el método el que se encarga de la decisión de cual elemento crear. En caso de creación compleja, el método encierra y se encarga de esta complejidad. o Dado la responsabilidad de los constructores, estos no debieran dedicarse a lidiar con operaciones complejas. o Si existiesen operaciones muy complejas (lectura de archivos, acceso a bases de datos), en ese caso es mejor que un método se encargue de la responsabilidad de crear a los objetos de la clase. o Es una simplificación de Fábrica Abstracta, donde solo se construye instancias de una clase. 9 SENA

MODELO GENERAL - Patrón Método Factoría (Factory Method) 10 SENA

EJEMPLO - Patrón Método Factoría (Factory Method) 11 SENA

2.1.4. Patrón Prototipos (Prototype) Problema: Cómo aumentar el rendimiento en la construcción de objetos que siempre son iguales? Solución: Creamos una instancia del objeto y luego lo clonamos. Para ello, definimos una interfaz que deban implementar todos los objetos que quieran ser clonados. En la mayoría de los lenguajes es posible hacer un Shadow copy de los objetos. o o En C# existe el método MemberwiseClone(). En Java existe clone(). Este se puede combinar con Método Factoría para la construcción de distintos objetos. 12 SENA

MODELO GENERAL - Patrón Prototipos (Prototype) EJEMPLO - Patrón Prototipos (Prototype) 13 SENA

2.1.5. Patrón de Diseño de Instancia Única (Singleton) Problema: Qué puedo hacer para asegurar que de una clase determinada exista sólo una instancia durante toda la ejecución de la aplicación? Solución: Dentro de la clase eliminamos el acceso a los constructores, de modo que no sea posible construir elementos de esta clase, sólo a través de la misma clase. o En la mayoría de los lenguajes esto se logra poniéndolos private o protected. Creamos un método estático de acceso esta instancia. SENA o Solamente la primera vez que se llame a este método creamos la instancia. o Luego simplemente la retornamos. MODELO GENERAL - Patrón de Diseño de Instancia Única (Singleton) 14 SENA

EJEMPLO - Patrón de Diseño de Instancia Única (Singleton) 2.2. Patrones Estructurales Estos patrones describen las formas en que diferentes tipos de objetos pueden ser organizados para trabajar unos con otros, es decir la composición entre clases y objetos, se utiliza la herencia para componer interfaces y además definen formas de composición entre objetos para obtener determinada funcionalidad. 15

2.2.1. Patrón de diseño Adaptador (Adapter) Problema: Cómo puedo hacer que una clase A utilice una clase B, si B no tiene la interfaz necesitada por A? Interfaz en su sentido más amplio. Métodos públicos. Cómo puedo hacer lo anterior sin cambiar B (porque no tengo acceso, o porque está muy acoplada)? Solución: Crear una clase que funcione de adaptador entre las dos clases que quieren comunicarse. El adaptador provee la interfaz que necesita la clase A. El adaptador traduce las llamadas a su interfaz en llamadas a la interfaz original (en este caso la clase B). o En general se trata de transformaciones de parámetros. o Pero puede llegar a cambiar las responsabilidades de la clase adaptada. Este patrón está pensado para situaciones en las que no tenemos acceso a la clase B, o dado que la usamos en otras partes de nuestro sistema, no queremos modificarla. o Solamente la primera vez que se llame a este método creamos la instancia. o Luego simplemente la retornamos. 16 SENA

MODELO GENERAL - Patrón de diseño Adaptador (Adapter) 17 SENA

EJEMPLO - Patrón de diseño Adaptador (Adapter) 18 SENA

2.2.2 Patrón Puente (Bridge) Problema: Qué debo hacer para desacoplar una abstracción de su implementación, de modo que ambas puedan variar independientemente? Con abstracción nos referimos a la interfaz. Cómo hago cuando una cierta implementación varía en tiempo de ejecución, manteniendo la abstracción estable? Cómo hago cuando una cierta abstracción varía en tiempo de ejecución, manteniendo la implementación estable? Solución Creamos una clase abstracta que represente la abstracción y otra clase abstracta/interfaz que represente la implementación. La abstracción contiene un objeto de la implementación, el cual utiliza para cumplir su propósito 19 SENA

MODELO GENERAL - Patrón Puente (Bridge) EJEMPLO - Patrón de Diseño de Instancia Única (Singleton) 20 SENA

2.2.3 Patrón Compuesto (Composite) Problema: Cómo tratar a un grupo de ciertos elementos de la misma forma como se trata uno de esos elementos? El grupo es una composición. El elemento único es un objeto atómico. Cómo tratar a este mismo grupo si además permitimos que contenga otros grupos de los mismos elementos? Solución: Definir clases para composiciones y objetos atómicos que implementen la misma interfaz. Los objetos se representan como una estructura de árbol. o Los objetos compuestos son ramas. o Los objetos atómicos son hojas. Permite la realización recursiva de las operaciones. 21

MODELO GENERAL - Patrón Compuesto (Composite) EJEMPLO - Patrón Compuesto (Composite) 22

EJEMPLO - Patrón Compuesto (Composite) 23

2.2.4. Patrón Decorador (Decorator) Problema: Cómo podemos añadir nuevas funcionalidades a una clase de forma dinámica? Cómo podemos decidir en ejecución las funcionalidades que queremos que realice una cierta clase? Herencia implica tener una subclase para cada combinación de funcionalidades. Para 4 funcionalidades serían 16 subclases distintas. Solución: Creamos una clase que decore la clase a la cual queremos agregar funcionalidad. La clase decoradora envuelve a la otra clase, pero comparte con esta la misma interfaz. o La clase decoradora tiene como atributo a la otra clase. o Como comparten la interfaz, podemos tener una clase decoradora que envuelve a otra clase decoradora. o De esta forma podemos elegir los adornos en tiempo de ejecución, simplemente creando decoradores que envuelvan otros decoradores. Funcionamiento recursivo similar a Compuesto. 24 SENA

MODELO GENERAL - Patrón Decorador (Decorator) 25 SENA

EJEMPLO - Patrón Decorador (Decorator) 26

2.2.5 Patrón Fachada (Facade) Problema: Cómo reducir el acoplamiento con un subsistema de clases complejas, que están sujetas a futuros cambios, pero manteniendo la funcionalidad del subsistema? Cómo simplificar la realización de tareas comunes con una serie de clases de un subsistema? Solución: Creamos una interfaz que exponga las funcionalidades del subsistema. o Un punto de contacto único con el subsistema, disminuyendo el posible acoplamiento con este. A esta interfaz se le llama la fachada del subsistema. La clase fachada se preocupa de trabajar con las clases del subsistema para conseguir la funcionalidad solicitada. Una fachada debe simplificar el trabajo con el subsistema. Similar a Adaptador o Adaptador se utiliza cuando es necesario respetar una cierta interfaz preexistente. o Fachada se utiliza para definir una interfaz simplificada de acceso a un subsistema o conjunto de clases. 27

MODELO GENERAL - Patrón Fachada (Facade) 28

EJEMPLO -Patrón Fachada (Facade) 29

2.2.6. Patrón Peso Ligero (FlyWeight) Problema: Cómo podemos aumentar el rendimiento/uso de memoria de una aplicación que posee elementos redundantes? Cómo podemos agrupar ciertas características de algunos elementos, de modo de asegurarnos que siempre sean iguales en todos los objetos? Solución: Definimos una clase flyweight que contenga las características comunes. Luego todos los elementos redundantes hacen referencia a un mismo objeto de la clase flyweight. o Reducimos el uso de memoria, no hay redundancia de estas características. o Referencian al mismo objeto, por ende, cambiar una característica implica cambiarla en un solo objeto. 30

MODELO GENERAL - Patrón Peso Ligero (FlyWeight) EJEMPLO - Patrón Decorador (Decorator) 31

2.2.7. Patrón Apoderado (Proxy) Problema: Qué debemos hacer para controlar el uso de recursos de un objeto determinado, dada su complejidad o uso de memoria? Cómo podemos hacer para que los recursos se consuman solamente si es necesario? Solución: Creamos un intermediario con la misma interfaz que el objeto final. o El intermediario contiene un objeto de la clase que queremos utilizar. o Puede crearlo solamente cuando sea necesario. Este intermediario es el llamado proxy. o Al compartir la interfaz con la clase final, su uso es transparente para la clase cliente. Muy utilizado para el acceso a redes. o Por ejemplo en un servidor Web podemos utilizarlo para que cuando nos pidan un sitio que ya fue solicitado antes, enviar la versión que almacenamos en la cache. 32

MODELO GENERAL - Patrón Apoderado (Proxy) EJEMPLO - Patrón Apoderado (Proxy) 33

2.3. Patrones de Comportamiento Los patrones de este tipo son utilizados para organizar, manejar y combinar comportamientos. Relación de Patrones de Comportamiento Cadena de Responsabilidades (Chain of Responsability): Permitir que ante una petición se realicen acciones distintas dependiendo del estado del sistema. Comando (Command): Manejar acciones de forma independiente y generalizable, de modo que podemos hacer invocaciones con estas acciones sin necesidad de saber quien la realiza realmente. Intérprete (Interpreter): Representar la gramática de un cierto lenguaje para poder interpretarlo. Iterador (Iterator): Recorrer objetos sin necesidad de conocer su estructura. Mediador (Mediator): Desacoplar la interacción entre distintos elementos, permitiendo que todos se comuniquen a través de un objeto común, reduciendo la complejidad de la interacción. Recuerdo (Memento): Manejar estados de la aplicación, pudiendo volver a estados anteriores. Observador (Observer): Definir una dependencia de uno a muchos entre objetos, de forma que muchos objetos puedan enterarse de los cambios en uno de ellos. 34

Estado (Server): Permitir que la ejecución de las acciones de una clase sea dependiente del estado en que se encuentra, pudiendo variar el estado en tiempo de ejecución. Estrategia (Strategy): Tener diversos algoritmos para realizar una tarea y poder cambiarlos en ejecución. Método Plantilla (Template Method): Reutilizar el esqueleto de un algoritmo, cambiando sólo el contenido de cada uno de los pasos de este. Visitante (Visitor): Definir nuevas operaciones sobre una jerarquía de clases sin modificar las clases sobre las cuales opera. 35

3. Patrón Modelo Vista Controlador (MVC) MVC son las siglas de Modelo Vista Controlador, que es un patrón de arquitectura de software cuya función es subdividir una aplicación en tres módulos que corresponden a la vista del usuario (la interfaz a la que accede el usuario), una lógica de control para captar los eventos que el usuario ha generado a través de la interfaz, y un modelo que gestiona los datos según le indique la lógica de control. El objetivo del patrón MVC es desacoplar la presentación de la información (vista) de su representación (modelo), para así reducir la complejidad en el diseño arquitectónico (de IU) e incrementar la flexibilidad y mantenibilidad del código. Sin MODELO VISTA CONTROLADOR - MVC Responsabilidades difusas 36

Modelo: Esta es la representación específica de la información con la cual el sistema opera y se compone por el Sistema de Gestión de Base de Datos y la lógica de negocio. La lógica de negocio asegura la integridad de estos y permite derivar nuevos datos. El Sistema de Gestión de Base de Datos (SGBD) será el encargado de almacenar los cambios en los datos (agregar datos, editarlos o borrarlos) producidos por la lógica de negocio; ejemplos de SGBD son MySQL, Oracle... Es recomendable una capa de abstracción extra denominada Data Access Object (DAO), que es un componente de software que suministra una interfaz común entre la lógica de negocio y el SGBD. Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario. Por lo tanto, la vista es la encargada de presentar los datos al usuario y la interfaz necesaria para modificarlos. Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista. Por lo general, el controlador sería la unidad central que comunica la vista con el modelo y viceversa, asociando los eventos del usuario con los cambios que se producirán en el modelo y devolviendo los datos resultantes que genere el modelo a la vista que corresponda. 37

CON MODELO VISTA CONTROLADOR - MVC 38

Aunque se pueden encontrar diferentes implementaciones de MVC, el flujo de control generalmente es el siguiente: El usuario interactúa con la interfaz de alguna manera (ej. presionando un botón, un enlace). El controlador recibe (por parte de los objetos de la interfaz vista) la notificación de la acción solicitada por el usuario. El controlador accede al modelo o, posiblemente actualizando los datos enviados por el usuario. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista usa el modelo para generar la interfaz apropiada para el usuario donde se refleja los cambios en el modelo. En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador envíe los da tos del modelo a la vista. La interfaz espera por nuevas interacciones de usuario para iniciar nuevamente el ciclo. 39

OBJETO DE APRENDIZAJE Desarrollador de contenido Experto temático César Marino Cuellar Asesor Pedagógico Rafael Neftalí Lizcano Reyes Productor Multimedia Carlos Julián Ramírez Benítez Victor Hugo Tabares Carreño Programadores Daniel Eduardo Martínez Díaz Líder expertos temáticos 25,46 Parra Ana Yaqueline Chavarro Líder línea de producción Santiago Lozada Garcés LINEA Atribución, no comercial, compartir igual Este material puede ser distribuido, copiado y exhibido por terceros si se muestra en los créditos. No se puede obtener ningún beneficio comercial y las obras derivadas tienen que estar bajo los mismos términos de licencia que el trabajo original. 40