Arquitectura multicapas orientadas a objetos

Descomposición de la capa de la lógica de aplicaciones: • Objetos del dominio. • Servicios.
Presentación
TPDVApplet Pago Venta Generador de reportes Conceptos del dominio Servicios

Lógica de aplicaciones

Interfaz de la Base de datos

Almacenamiento

Base de Datos
María Eugenia Valencia Dpto. Ciencias de la Computación

María Eugenia Valencia Dpto. Ciencias de la Computación . la coordinación y el compartir la información en un sistema de cliente-servidor.Motivos para usar arquitectura multicapas • Aislamiento de la lógica de aplicaciones en componentes independientes susceptibles de reutilizarse después en otros sistemas. • Distribución de las capas en varios nodos físicos de computo y en varios procesos. Esto puede mejorar el desempeño.

Ciencias de la Computación .adores para que construyan determinadas capas. por ejemplo. María Eugenia Valencia Dpto. un equipo que trabaje exclusivamente en la capa de presentación.Motivos para usar arquitectura multicapas • Asignación de los dise. Y así se brinda soporte a los conocimientos especializados en las habilidades de desarrollo y también a la capacidad de realizar actividades simultaneas en equipo.

Representación de la Arquitectura con Paquetes UML Conceptos de dominio Presentación Presentación Lógica de Elementos básicos Ventas Dominio aplicaciones Servicios Almacenamiento Base de datos Paquetes en UML Diagrama de paquetes de la arquitectura María Eugenia Valencia Dpto. Ciencias de la Computación .

Applets de Java. MFC. documentos y vistas MFC VisualParts de VisualAge 2. Ciencias de la Computación .Ejemplo de paquetes y de dependencias Presentación1 Dominio Capa de servicios de alto nivel orientada a objetos Interfaz de base de datos relacional Comunicación Interfaz de base de datos orientada a objetos Reportes Capa de servicios de bajo nivel (orientados a objetos y no orientados a objetos) Esquemas de aplicaciones y bibliotecas de soportes2 Ejemplos: 1.STL Base de datos relacional Base de datos orientada a objetos María Eugenia Valencia Dpto.JDK.

En cambio.Identificación de los Paquetes Agrupe los elementos en 1 paquete así: Agrupe los elementos para ofrecer en un paquete un servicio común (o una familia de servicios relacionados). María Eugenia Valencia Dpto. con un nivel relativamente alto de acoplamiento y colaboración. Ciencias de la Computación . se vera el paquete como muy cohesivo (tiene responsabilidades estrechamente relacionadas). En cierto nivel de abstracción. habrá relativamente bajo acoplamiento y colaboración entre los elementos de diferentes paquetes.

Ciencias de la Computación .Estratos y particiones Dominio Elementos básicos Ventas Productos Estratos verticales Servicios Interfaz de base de datos relacional Comunicación Interfaz de base de datos orientada a objetos Reportes Particiones horizontales María Eugenia Valencia Dpto.

.... ..... Visibilidad de muchas clases a partir de otros paquetes...... Dominio Venta . Seguridad Fachada de seguridad . . Interfaz de BDR . • Acceso a los paquetes de presentación.. • Acceso a los paquetes de servicios. . ... agregarUsuario (usuario) Usuario ... FachadaBD Broker ... . obtener(id) Objeto guardar(Objeto) Visibilidad de una o de unas cuantas clases en cada paquete de servicios.... Proxy . Ciencias de la Computación .... Catalogo de productos Descripción de Producto .... Pago . María Eugenia Valencia Dpto..Visibilidad entre las clases de paquetes La visibilidad a las clases en diferentes paquetes conforman típicamente el siguiente patrón: • Acceso a los paquetes del dominio.. . .. .

¿Qué hacer? Solución Definir una clase individual que unifique la interfaz y le asigne la responsabilidad de colaborar con el subsistema.Interfaz de los paquetes de servicios: El patrón fachada Fachada Contexto/problema Se requiere una interfaz común y unificada para un conjunto heterogéneo de interfaces. María Eugenia Valencia Dpto. Ciencias de la Computación . un subsistema por ejemplo.

Sin visibilidad directa respecto a la ventanas: el patrón de Separación Modelo-Vista Separación Modelo-Vista Contexto/problema Conviene desacoplar los objetos dominio (modelos) y las ventanas (vistas). ¿Qué hacer? Solución Definir las clases de dominio (modelo) para que no tengan acoplamiento ni visibilidad directa respecto a la clases ventana (vista) y para que los datos de la aplicación y de la funcionalidad se conserven en las clases de dominio. no en las de ventana. a fin de brindar soporte a un mayor reuso de los objetos dominio y reducir al mínimo el impacto que los cambios de la interfaz tienen en ellos. Ciencias de la Computación . María Eugenia Valencia Dpto.

:TPDV No es conveniente enviar mensajes ni realizar el acoplamiento de la capa de modelo a la de vista. Ciencias de la Computación . María Eugenia Valencia Dpto.cant) 1:presentarMensaje(mens) :TPDV Capa de dominio (modelo) Bien. Mensajes de la capa de vista a la de presentación.Comparación entre la conformidad y la violación del patrón Separación Modelo-Vista Capa de presentación (vista) 1:introducirProducto(cup. Soporta la separacion modelo-vista Mal.

Ciencias de la Computación . Pero el Editor no debería tener conocimiento de sus Suscriptores.La comunicación indirecta en un sistema El patrón Publicar-Suscribir Publicar-Suscribir Contexto/problema Un cambio de estado (un evento) ocurre dentro de un editor del evento y otros objetos dependen de él (suscriptores del evento). María Eugenia Valencia Dpto.¿Qué hacer? Solución Defina un sistema de notificación de eventos para que el Editor pueda notificarlos indirectamente a los Suscriptores.

Ciencias de la Computación .1:unMensaje() v:VentanadeVenta María Eugenia Valencia Dpto.Publicar-Suscribir con notificación de los eventos crear( ) v:ventanadeVenta 1:suscribir(v.unMensaje.al(“nuevo impuesto”) :AdministradordeEventos 1.”nuevo impuesto” :AdministradordeEventos Un “mensaje” o “Metodo” del objeto ajustarImpuesto( ) :Venta 1:Eventose.

Oprime botón Cajero alIntroducirProducto() :Vistade Venta “asociacion” Presentación 1:introducirProducto(cup.cant) Coordinador de aplicaciones Dominio :DocumentodeVenta “asociacion” “asociacion” :Venta :TPDV 1.1:introducirProducto(cup.Coordinadores de las aplicaciones Es una clase que tiene la responsabilidad de mediar entre la capa de interfaz y la del dominio. Ciencias de la Computación .cant) “asociacion” “asociacion” María Eugenia Valencia Dpto.

por ejemplo).cant) :TPDV María Eugenia Valencia Dpto.) Oprime botón Cajero alIntroducirProducto() :EsquemadeVentas “asociacion” Subclase del esquema (Frame) de java.cant) Coordinador de aplicaciones Dominio :CoordinadordeTPDV “asociacion” 1. que a su vez puede enviarlos al controlador de la capa de dominio (TPDV. Creada por el coordinador TPDV Envia eventos al coordinador de aplicaciones. los objetos Frame y Dialog) y que media entre la capa de ventanas y la de dominio Presentación 1:introducirProducto(cup. El coordinador de aplicaciones de Java que crea las ventanas (por ejemplo.1:introducirProducto(cup.Coordinadores de las aplicaciones (cont. Ciencias de la Computación .