Value Object (1) Agrupar un conjunto de atributos procedentes de uno o varios objetos del dominio



Documentos relacionados
Value Object (1) Agrupar un conjunto de atributos procedentes de uno o varios objetos del dominio. Data Transfer Object, Replicate Object

5.6.3 Session Facade

Accediendo a Base de Datos desde aplicaciones Web desarrolladas con J2EE: patrones de diseño.

Introducción al Diseño con Patrones

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Fórmulas y funciones

2.2.- Paradigmas de la POO

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

3.9 Patrón Distributed callback

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

ATLAS PERSISTENCIA DE SESIONES EN BASE DE DATOS CON WEBLOGIC 9.2

Para insertar anuncios en la plataforma SMC el usuario debe contar con un navegador web, acceso a Internet y una cuenta en la plataforma.

Administración de la producción. Sesión 11: Gestor de Base de Datos (Access)

Una breve introducción a Excel c

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

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

MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS (SASP)

Curso de JavaServer Faces

Formatos para prácticas de laboratorio

Patrones para persistencia (I) Ingeniería del Software II

Curso de Spring Framework

9. Objetos y clases Clases

5.6.8 Estrategias de generación de claves primarias

a) Cita y comenta brevemente los grados de acoplamiento. Clasifícalos y ordénalos en orden creciente al nivel de acoplamiento asociado.

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

Sesiones en PHP. Área de Ingeniería Telemática

TEMA 8: DIAGRAMA DE CLASE EN UML

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?

1. Generalidades. Nombre de la asignatura o unidad de aprendizaje. Apertura de negocios. Clave asignatura. Ciclo LA945. Modulo tercero (integración)

Quienes somos? Adaptabilidad efactura SAAS. Seguridad. Auditoría.

GESTIÓN DE LA DOCUMENTACIÓN

MANUAL DE POLITICAS DE PRIVACIDAD Y TRATAMIENTO DE DATOS PERSONALES DE GERENCIA SELECTA LTDA.

Sistema de Administración de Farmacias Descripción de la Arquitectura Versión 1.4. Historia de revisiones

Pattern Oriented Software Architecture. Whole-Part. Jamir Antonio Avila Mojica César Julio Bustacara Medina. Patrones de Software

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Estructura de datos tipo vector.

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Generación de carpetas compartidas, grupos y usuarios en DiskStation Manager

Informática I Notas del curso

Base de datos relacional

Colecciones. Nadjet Bouayad-Agha Programación 2007

Programación Orientada a Objetos en Java

IAP ENTORNOS INFORMATIZADOS CON SISTEMAS DE BASES DE DATOS

1 Índice Introducción Propósito Alcance Modelo Arquitectónico Inicial... 3

Data Source. Lic. Esteban Calabria 2007

Diseño de una estrategia tecnológica de Customer Relationship Management (CRM) para la empresa BPM de México. CAPITULO 6

Capítulo 4. Prueba de Adaptabilidad

hay alguien ahi? por Marcelino Alvarez

Página 1 de 20. Manual [Formulario web de inscripción a postgrados] Dirección de Servicios y Recursos de Información

1.2 Qué es un Sistemas de Información Geográfica?

Administración de Dominios CGP 5.1

Inteligencia Artificial II. Razonamiento con ontologías

Tienda Virtual Synergy (Parte 2)

El protocolo IMAP ofrece la descarga de correos en modo sólo lectura, es decir descarga sólo una copia del correo y no permite el borrado.

POLITICA DE COOKIES. 1. Al abrir el navegador, pulsa herramientas en la parte superior y selecciona la pestaña de opciones.

Prof. Dr. Paul Bustamante

Planificación y administración de redes SNMP

Versión 1.0 MANUAL DEL USUARIO

Guía del Usuario ANEXOS

Sincronización del Servidor.

Bases de Datos. Marta Elena Zorrilla Pantaleón Rafael Duque Medina DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN

Árboles AVL. Laboratorio de Programación II

Arquitecturas de Sistemas de Información

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

El Explorador de Windows I

6.1. Conoce la papelera

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

Manual de usuario de Solmicro BI. Página 1

Técnicas de Desarrollo de Programas Ingeniería Informática Curso 2008 / Ejercicios de Patrones de Diseño:

REGISTRO DE EMPRESAS Y PERSONAS BASE DE INFORMACIÓN DE CLIENTES & CONTACTOS

COMO GENERAR LOS REPORTES DE SEGUIMIENTO DE ESTUDIANTES A TRAVÉS DE LA MESA DE SERVICIO CAVI.

La ventana de Microsoft Excel

BUSINESS OBJECTS EDICIÓN DE REPORTES NIVEL I

Planeación y organización

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

Modularización Relación de ejercicios

Bases de Datos 2. Teórico

Centro de Capacitación en Informática

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C.

BANCO CENTRAL DE RESERVA DEL PERÚ

UNIVERSIDAD NACIONAL DE ASUNCION FACULTAD POLITÉCNICA CARRERA: LCIK MATERIA: Bases de Datos I Prof: Lic. Lilian Riveros Unidad 2: Modelo Relacional

Punto de Vista. Otra mirada hacia los problemas de información financiera

BUSINESS OBJECTS EDICIÓN DE REPORTES NIVEL II

MATERIAL 2 EXCEL 2007

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

Informe final de evaluación del seguimiento de la implantación de títulos oficiales

Centro de Capacitación en Informática

Responsive Web Design Diseño Web Adaptable

Programación Orientada Objetos. Problemas, soluciones y Programas

Lista de la Verificación de la Gestión de la Seguridad y Salud Ocupacional 1

A. Compromiso de Ecolab con la Protección de la Privacidad de Datos

POLÍTICA DE COOKIES. A continuación explicaremos qué son las cookies y los tipos de cookies que utiliza la Fundación Fuertes en su sitio Web:

2 Equipo, política y motivación. Producción Más Limpia: como un grupo para el medio ambiente

Patrón Fábrica Abstracta. Julio Ariel Hurtado Alegría Ingeniería de Software II 2015

Dominios y Subtipos en Geodatabase

FAQ de Cuestiones Técnicas Modelo de monitorización

5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniPortal con EJB. Tipos de EJBs y patrones usados

Transcripción:

2.3.1 Value Object

Value Object (1) Intención Agrupar un conjunto de atributos procedentes de uno o varios objetos del dominio También conocido como Recientemente se le ha cambiado el nombre a Transfer Object Data Transfer Object, Replicate Object Motivación En MiniBank necesitamos acceder a los datos de las cuentas y operaciones bancarias AccountVO (from vo) <<Interface>> SQLAccountDAO - accountidentifier : Long - useridentifier : Long - balance : double + AccountVO(accountIdentifier : Long, useridentifier : Long, balance : double) + getaccountidentifier() : Long + getuseridentifier() : Long + getbalance() : double + setbalance(newbalance : double) : void + tostring() : String

Value Object (2) Aplicabilidad Cuando necesitemos representar un conjunto de atributos procedentes de uno o varios objetos del dominio Estructura <<interface>> java.io.serializable <<interface>> DAO - atributos VO + métodos get/set

Participantes VO (AccountVO) Value Object (3) Ofrece métodos get/set para acceder a sus atributos DAO (SQLAccountVO) Tiene acceso a los valores que se copian en el VO Los Session Facade (Business Delegate) también trabajan con VOs Colaboraciones Un DAO devuelve VOs en sus métodos findxxx, y los recibe en sus métodos create y update Consecuencias Beneficios En el contexto de EJB, eficiencia En el contexto de JDBC, poder representar un conjunto de atributos procedentes de uno o varios objetos del dominio Riesgos Un VO puede contener información obsoleta si se pretende usar en una actualización posterior en otra transacción => EJB Design Patterns discute el patrón Version Number

Value Object (4) Implementación Domain Value Object Un Value Object es un Domain Value Object cuando su atributos corresponden a los de un objeto del dominio Ejs.: AccountVO y AccountOperationVO en MiniBank Problemas: Fuerte acoplamiento entre las clases cliente de los Session Facades (Business Delegates) y el modelo de objetos del dominio Diferentes interfaces de usuario (IUs) pueden requerir sólo un subconjunto de los atributos de un VO o un conjunto de atributos de distintos VOs Ej-1: CarVO con 100 atributos y tenemos un IU en el que sólo queremos mostrar los relativos al motor (10 atributos) Ej-2: Un IU que sólo quiere mostrar los atributos relativos al motor de un determinado coche y los de su fabricante (ManufacturerVO)

Value Object (5) Custom Value Object Solución al ej-1: SessionFacade + findcarengine(carid) : CarEngineVO <<interface>> CarDAO + find(con, carid) : CarVO CarVO CarEngineVO SessionFacade Solución al ej-2: <<interface>> CarDAO CarVO + findcarengineandmanufacturer(carid) : CarEngineAndManufacturerVO CarEngineAndManufacturerVO + find(con, carid) : CarVO <<interface>> ManufacturerDAO + find(con, manid) : ManufacturerVO ManufacturerVO

Value Object (6) Custom Value Object (cont) CarEngineVO y CarEngineAndManufacturerVO son Custom Value Objects (son específicos a casos de uso) Sólo tienen los atributos necesarios CarEngineAndManufacturerVO debería implementarse (en este caso) como un objeto compuesto de un CarEngineVO y un ManufacturerVO Se usan en las fachadas del modelo, pero no en los DAOs Las fachadas del modelo no son reusables entre aplicaciones, dado que implementan casos de uso específicos a la aplicación Los Custom Value Objects se diseñan para dar soporte a casos de uso específicos Los DAOs sólo trabajan con Domain Value Objects, y en consecuencia son reusables entre aplicaciones (ej.: una tienda de comercio electrónico y su aplicación de administración comparten gran parte de los DAOs)

Custom Value Object (cont) Value Object (7) Otro ejemplo: OrderVO es Custom Value Object SessionFacade + findorder(orderid) : OrderVO + findorderdetails(orderid) : OrderDetailsVO + findlineitems(orderid) : Collection + updatelineitem(lineitemvo):void + etc. OrderVO - details : OrderDetailsVO - lineitems : Collection OrderDetailsDAO 1 0..n LineItemDAO OrderDetailsVO - orderidentifier : Long - loginname : String - date : Calendar - shippingaddress : String LineItemVO - lineitemidentifier : Long - orderidentifier : Long - productidentifier : Long - quantity : int - status : String

Value Object (8) Data Transfer HashMap En una aplicación de tamaño medio puede que se necesiten un número desmesurado de Value Objects => Problema de mantenimiento Solución => usar mapas (ej.: HashMap) para almacenar un conjunto de pares <nombre-atributo, valor> en vez de las clases usadas hasta ahora Ej.: Map carengine = sessionfacade.findcarengine(carid); int horsepower = ((Integer) carengine.get( car.engine.horsepower )).intvalue(); String type = (String) carengine.get( car.engine.type ); Problemas Se necesitan establecer convenciones de nombrado para los atributos No es una solución fuertemente tipada

Value Object (9) Qué variante usar? Para aplicaciones pequeñas puede ser suficiente con Domain Value Objects Normalmente tienen atributos privados y métodos públicos getxxx y setxxx (para los atributos modificables) Aplicaciones de tamaño medio pueden requerir el uso de Custom Value Objects (además de Domain Value Objects) Lógicamente, sólo tiene sentido definir Domain Value Objects para aquellas IUs (casos de uso) que requieren atributos de varios objetos del dominio, o existe una diferencia importante entre los atributos que quiere visualizar la IU y los que tiene el objeto del dominio correspondiente Para IUs de actualización de datos normalmente sólo se usan Domain Value Objects Las IUs de actualización no suelen permitir actualizar datos de más de un objeto del dominio

Value Object (10) Qué variante usar? (cont) Para IUs que sólo muestran datos, pueden necesitarse Domain Value Objects En consecuencia, un Custom Value Object sólo debería tener métodos getxxx En aplicaciones muy grandes, la única alternativa puede ser usar HashMaps Enfoque que se suele seguir Cuando se empieza un proyecto suele estar claro el modelo de objetos del dominio, pero no los datos exactos que van a mostrar las IUs => se empieza trabajando sólo con Domain Value Objects A medida que avanza el proyecto (y se conocen más detalles sobre las IUs) => se refactorizan los métodos que sea preciso en los Session Facade para que devuelvan Custom Value Objects En casos extremos => HashMaps

Value Object (y 11) Código de ejemplo Véase es.udc.fbellas.j2ee.minibank.model.account.v o.acountvo y es.udc.fbellas.j2ee.minibank.model.accountop eration.vo.acountoperationvo en MiniBank Patrones relacionados Page-by-Page Iterator Session Facade