SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Ingeniería en Sistemas de Información Diseño de Sistemas (3K1)
Contenidos de la Unidad 3 Diseño Orientado a Objetos I ,[object Object],Craig Larman , Cap 15. ,[object Object],  Cap. 16 ,[object Object],  Cap. 17 ,[object Object],  ,[object Object],  ,[object Object],Cap. 18 ,[object Object],  ,[object Object],  ,[object Object],  ,[object Object], 
Soluciones con Objetos y Patrones Craig Larman, Cap. 19 Ingeniería en Sistemas de Información
DISEÑO DE SISTEMAS
DISEÑO DE SISTEMAS
DISEÑO DE SISTEMAS
DISEÑO DE SISTEMAS
DISEÑO DE SISTEMAS
DISEÑO DE SISTEMAS Patrones (GRASP)
DISEÑO DE SISTEMAS Patrones (GRASP)    
DISEÑO DE SISTEMAS Para elaborar un Diagrama de Colaboración efectivo necesitamos contar con las  Responsabilidades  y las  Postcondiciones , que hemos estudiado en los  Contratos .  En caso de omitir la preparación del contrato, de todos modos deberíamos elaborar los diagramas de interacción retornando a los casos de uso y reflexionando sobre los cambios que cada operación genera en el sistema, para poder elaborar los  Diagramas de Colaboración .  Los contratos organizan y aíslan la información en un formato funcional, y estimulan la investigación en la fase de análisis y no en la de diseño, ahorrándonos trabajo y problemas.
DISEÑO DE SISTEMAS Las postcondiciones son sólo una estimación: Los diagramas se deben preparar para cumplir con las postcondiciones del contrato. Por eso, las postcondiciones definidas de antemano son una excelente conjetura o estimación inicial de lo que se pretende alcanzar; aunque  tal vez no sean muy exactas.  Lo mismo sucede con el modelo conceptual: es un punto de partida que contendrá errores y omisiones. Los contratos son un mero punto de partida para establecer lo que se hará, pero sin sentirnos obligados por ellos. Lo más probable es que algunas postcondiciones no sean necesarias y que haya algunas tareas por realizar aún no descubiertas.
DISEÑO DE SISTEMAS Los Diagramas de Interacción y el Modelo Conceptual: Algunos objetos que interactúan (a través de mensajes) en los  Diagramas de Colaboración  provienen del  Modelo Conceptual . Utilizamos información del  Modelo Conceptual  para asignar responsabilidades con los patrones  GRASP .  Ahora bien: ¿todos los objetos en interacción saldrán necesariamente del Modelo Conceptual?  De ninguna manera; durante la fase de diseño podemos descubrir otros objetos nuevos, que no figuran en los análisis anteriores.
DISEÑO DE SISTEMAS DIAGRAMAS DE COLABORACION – VIDEO  CLUB: A continuación, desarrollaremos los Diagramas de Colaboración para el caso de uso  Alquiler de video  del caso de estudio del Video Club. El diagrama de colaboración:  introducirSocio: La operación del sistema  introducirSocio  ocurre cuando el Cajero captura el Código del Socio.  Debemos contar con un Diagrama de Colaboración que cumpla con las Postcondiciones de  introducirSocio .
DISEÑO DE SISTEMAS
DISEÑO DE SISTEMAS
DISEÑO DE SISTEMAS ,[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Primero, tenemos una responsabilidad de creación. Con lo cual, utilizamos el patrón  Creador ; el cual   indica la asignación de la responsabilidad de generar una clase que agregue, contenga o registre la que va a ser creada. Al analizar el  Modelo Conceptual , descubrimos que  Caja  nos permite ver el registro de un  Alquiler ; con lo que  Caja  sería un buen candidato para crear un  Alquiler . Sin embargo, perderíamos la posibilidad de asociar  Alquiler  con  Socio ; por lo tanto, es mejor asignar a  Socio  la responsabilidad de crear el  Alquiler .
DISEÑO DE SISTEMAS Además, cuando se crea el  Alquiler , hay que generar una colección vacía (un contenedor) para que registre todas las instancias futuras  AlquilerLineadeVideo  que vayamos agregando. En conclusión, el objeto  Socio  crea un  Alquiler  y éste, a su vez, genera una colección vacía,  representada por un multiobjeto en el Diagrama de Colaboración .
DISEÑO DE SISTEMAS Creación de Alquileres 2.1: crear () introducirSocio(codigo) 2: hacerAlquiler() : Caja :AlquilerLinea deVideo soc:Socio 2.2: Crear () :Socio 1: soc:=encontrar(codigo)  :Alquiler según Controlador según Creador según Creador
DISEÑO DE SISTEMAS Mensajes a multiobjetos: Un mensaje enviado a un multiobjeto se envía a todos los elementos de la colección / contenedor. Por ejemplo, en el Diagrama de Colaboración  introducirSocio : El mensaje crear (2.2) enviado al multiobjeto  AlquilerLineadeVideo  tiene por objeto generar la estructura de datos colección representada por el multiobjeto. Su finalidad no es crear una instancia de la clase  AlquilerLineadeVideo .
DISEÑO DE SISTEMAS El Diagrama de Colaboración:  introducirVideo La operación del sistema  introducirVideo  ocurre cuando el Cajero captura el código de Video. Con las Postcondiciones de introducirVideo se construirá un Diagrama de Colaboración. Cada vez que se emita un mensaje debemos asignar una responsabilidad. Selección de la case Controlador: Igual que en el diagrama anterior, utilizaremos  Caja  como Controlador.
DISEÑO DE SISTEMAS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Lo anterior indica la  responsabilidad de crear una instancia  AlquilerLineadeVideo .  El análisis del  Modelo Conceptual  revela que el  Alquiler  contiene los objetos  AlquilerLineadeVideo ; por lo tanto, aplicando el  patrón Creador ;  Alquiler  es un buen candidato para generar la  línea de video .  Al hacer esto, asociamos automáticamente el  Alquiler  con la  línea a lo largo del tiempo, al guardar esta nueva colección .
DISEÑO DE SISTEMAS Obtención de una instancia Video: Debemos ahora asociar la instancia  AlquilerLineadeVideo  a  Video , por concordancia del código que se recibe. Esto significa que se requiere recuperar un  Video  basado en la correspondencia del  código . En este caso, no estamos ante un problema de creación ni de escoger un controlador. Entonces, aplicamos el  patrón Experto  GRASP en primer lugar. ¿ Quién está enterado de todo lo concerniente a  Video ?: El análisis del Modelo Conceptual revela que  VideoClub  contiene a todos los  Videos  y así, siguiendo al  patrón Experto ,  VideoClub  es  idóneo para asumir esa responsabilidad de consulta .
DISEÑO DE SISTEMAS Establecimiento del atributo Video.estado: ¿Quién debería encargarse de asignar el valor verdadero al atributo  estado  del  Video ? Basándonos en el patrón Experto, debería ser el mismo  Video , porque posee el atributo estado.  Así  VideoClub  enviará a la instancia  Video  el mensaje  seAlquila  para asignarle el valor  verdadero , el Video quede registrado como «alquilado», y por ende, no disponible para una nueva transacción de Alquiler.
DISEÑO DE SISTEMAS Diagrama de colaboración introducirVideo introducirVideo(codigo) 2: hacerAlquilerLineadeVideo(vid) : Caja :AlquilerLinea deVideo 2.2:agregar (da) :Video 1: vid:=extraer(codigo)  :Alquiler según Controlador según Creador :VideoClub 1.1: vid:=encontrar(codigo)  vid:Video 3: alquilado()  2.1: crear(vid)  da:AlquilerLineadeVideo según Experto
DISEÑO DE SISTEMAS ,[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS El diagrama de colaboración:  terminarAlquiler La operación  terminarAlquiler  ocurre cuando un Cajero oprime un botón para indicar la conclusión de un alquiler.  Se elaborará un Diagrama de Colaboración para cumplir las Postcondiciones de  terminarAlquiler .  Cada decisión sobre mensajes implica asignar Responsabilidades, y los patrones GRASP se emplearán para escogerlos y justificarlos. Selección de la clase Controlador: Basándonos en el patrón Controlador de GRASP, seguiremos utilizando  Caja .
DISEÑO DE SISTEMAS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS Terminación de la captura de videos terminarAlquiler() 2: seTermina() : Caja :Alquiler según Controlador según Experto seTermina() { fecha := FechaActual hora:= HoraActual }
[object Object],[object Object],[object Object],[object Object],DISEÑO DE SISTEMAS
DISEÑO DE SISTEMAS ,[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS
DISEÑO DE SISTEMAS Calculo del Total de la Venta 2.1 : p := precio () 2 : st := subtotal() t:= total()     :Alquiler alv:=:ALV vid:Video :AlquilerLineade Video 1*:[p/c] alv:= siguiente()     según Experto según Experto
DISEÑO DE SISTEMAS El diagrama de colaboración:  efectuarPago La operación sistémica efectuarPago ocurre cuando un cajero captura el efectivo ofrecido como pago.  Se construirá un diagrama de colaboración para cumplir con las Postcondiciones de efectuarPago. Elección del Controlador: Nuestra primera decisión se refiere a la responsabilidad del  manejo de los mensajes.  Con base en el patrón Controlador seguiremos empleando a la  Caja  como controlador .
DISEÑO DE SISTEMAS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DISEÑO DE SISTEMAS En estos casos, en que tenemos varios buenos candidatos, conviene hacer jugar a los restantes patrones de:  Bajo acoplamiento  y  Alta cohesión .  Si escogemos el objeto “ Alquiler ” para crear un  Pago , las responsabilidades de  Caja  serán mas ligeras, y dará origen a una definición mas simple de  Caja . Además no necesita saber que existe una instancia  Pago , porque podemos registrarla indirectamente mediante el  Alquiler . Con lo cual, el diagrama de colaboración sería así:
DISEÑO DE SISTEMAS Diagrama de colaboración  efectuarPago 1: efectuarPago (efecOfrecido) :Caja : Alquiler :Pago efectuarPago (efecOfrecido) 1.1: crear (efecOfrecido)  según Controlador según Creador y Bajo Acoplamiento
DISEÑO DE SISTEMAS Calcular el vuelto: Como es habitual el patrón  Experto  será el primero en considerarse, y habrá que formular la responsabilidad en los siguientes términos: ¿Quién asume la responsabilidad de conocer el vuelto? Para calcular el vuelto, necesitamos el total del alquiler y el pago en efectivo ofrecido. Por lo tanto:  Alquiler  y  Pago  son expertos parciales para la solución de este problema. Si  Pago  es el principal responsable de conocer el saldo, necesitará ser visible al  Alquiler  para pedirle su total.  Como por ahora no lo conoce, con este método aumentará el acoplamiento global del diseño: y por lo tanto, no soportará el patrón de  Bajo Acoplamiento .
DISEÑO DE SISTEMAS En cambio si el  Alquiler  es el principal responsable de conocer el saldo, necesitara ser visible al  Pago  para pedirle el monto ofrecido. Dado que  Alquiler  ya es visible al  Pago  (por ser su  Creador ), con este enfoque no aumenta el acoplamiento global, de ahí que es preferible elegir a  Alquiler , para asignarle la responsabilidad e . El diagrama de colaboración será el siguiente: El diagrama de colaboración alquiler-saldo :Pago 1: mon:= monto() sal:= saldo() 2:t := total() :Alquiler

Weitere ähnliche Inhalte

Was ist angesagt?

Unidad 6 Mad Modelado Analsis Diagrama De Secuencia Del Sistema
Unidad 6 Mad Modelado Analsis    Diagrama De Secuencia Del SistemaUnidad 6 Mad Modelado Analsis    Diagrama De Secuencia Del Sistema
Unidad 6 Mad Modelado Analsis Diagrama De Secuencia Del SistemaSergio Sanchez
 
Introducción a UML
Introducción a UMLIntroducción a UML
Introducción a UMLKudos S.A.S
 
Diagrama de componentes
Diagrama de componentesDiagrama de componentes
Diagrama de componentesuitron
 
MODELAMIENTO VISUAL Y UML
MODELAMIENTO VISUAL Y UMLMODELAMIENTO VISUAL Y UML
MODELAMIENTO VISUAL Y UMLKudos S.A.S
 
Introduccion a UML
Introduccion a UMLIntroduccion a UML
Introduccion a UMLJuan Antonio
 
Ucv 2014 1_ads clase 14
Ucv 2014 1_ads clase 14Ucv 2014 1_ads clase 14
Ucv 2014 1_ads clase 14Taringa!
 
Lenguaje de modelado unificado uml
Lenguaje de modelado unificado   umlLenguaje de modelado unificado   uml
Lenguaje de modelado unificado umlturlahackers
 
Presentacion uml dian1_2003
Presentacion uml dian1_2003Presentacion uml dian1_2003
Presentacion uml dian1_2003Diana Vásquez
 
Lenguaje Unificado de Modelado (UML)
Lenguaje Unificado de Modelado (UML)Lenguaje Unificado de Modelado (UML)
Lenguaje Unificado de Modelado (UML)AndreaPumarejo
 
Trabajo de tecnologia
Trabajo de tecnologiaTrabajo de tecnologia
Trabajo de tecnologianicolas_436
 
Diagrama uml ing software i promecys
Diagrama uml ing software i promecysDiagrama uml ing software i promecys
Diagrama uml ing software i promecysLeonel Narvaez Ruiz
 
Gonzalorojas 11 Uml, Diagrama De Colaboracion
Gonzalorojas 11 Uml, Diagrama De ColaboracionGonzalorojas 11 Uml, Diagrama De Colaboracion
Gonzalorojas 11 Uml, Diagrama De ColaboracionSpimy
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructuralesJuan Camilo
 

Was ist angesagt? (20)

Diseño de patrones
Diseño de patronesDiseño de patrones
Diseño de patrones
 
Modelo Conceptual UML
Modelo Conceptual UMLModelo Conceptual UML
Modelo Conceptual UML
 
Unidad 6 Mad Modelado Analsis Diagrama De Secuencia Del Sistema
Unidad 6 Mad Modelado Analsis    Diagrama De Secuencia Del SistemaUnidad 6 Mad Modelado Analsis    Diagrama De Secuencia Del Sistema
Unidad 6 Mad Modelado Analsis Diagrama De Secuencia Del Sistema
 
Introducción a UML
Introducción a UMLIntroducción a UML
Introducción a UML
 
Star uml
Star umlStar uml
Star uml
 
Diagrama de componentes
Diagrama de componentesDiagrama de componentes
Diagrama de componentes
 
diagrama de despliegue
diagrama de desplieguediagrama de despliegue
diagrama de despliegue
 
Diseño orientado a objeto
Diseño orientado a objetoDiseño orientado a objeto
Diseño orientado a objeto
 
MODELAMIENTO VISUAL Y UML
MODELAMIENTO VISUAL Y UMLMODELAMIENTO VISUAL Y UML
MODELAMIENTO VISUAL Y UML
 
Introduccion a UML
Introduccion a UMLIntroduccion a UML
Introduccion a UML
 
Ucv 2014 1_ads clase 14
Ucv 2014 1_ads clase 14Ucv 2014 1_ads clase 14
Ucv 2014 1_ads clase 14
 
Algoritmos en pseudocodigo
Algoritmos en pseudocodigoAlgoritmos en pseudocodigo
Algoritmos en pseudocodigo
 
Lenguaje de modelado unificado uml
Lenguaje de modelado unificado   umlLenguaje de modelado unificado   uml
Lenguaje de modelado unificado uml
 
Presentacion uml dian1_2003
Presentacion uml dian1_2003Presentacion uml dian1_2003
Presentacion uml dian1_2003
 
Lenguaje Unificado de Modelado (UML)
Lenguaje Unificado de Modelado (UML)Lenguaje Unificado de Modelado (UML)
Lenguaje Unificado de Modelado (UML)
 
Trabajo de tecnologia
Trabajo de tecnologiaTrabajo de tecnologia
Trabajo de tecnologia
 
Diagrama uml ing software i promecys
Diagrama uml ing software i promecysDiagrama uml ing software i promecys
Diagrama uml ing software i promecys
 
Gonzalorojas 11 Uml, Diagrama De Colaboracion
Gonzalorojas 11 Uml, Diagrama De ColaboracionGonzalorojas 11 Uml, Diagrama De Colaboracion
Gonzalorojas 11 Uml, Diagrama De Colaboracion
 
UML
UMLUML
UML
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 

Andere mochten auch (14)

D fdatos
D fdatosD fdatos
D fdatos
 
Manuel colin rubrica_de_foro
Manuel colin rubrica_de_foroManuel colin rubrica_de_foro
Manuel colin rubrica_de_foro
 
Video club power point
Video club power pointVideo club power point
Video club power point
 
Alerta para la Esposas en el Mundial de Futbol
Alerta para la Esposas en el Mundial de FutbolAlerta para la Esposas en el Mundial de Futbol
Alerta para la Esposas en el Mundial de Futbol
 
Diseño a Nivel de Componentes
Diseño a Nivel de ComponentesDiseño a Nivel de Componentes
Diseño a Nivel de Componentes
 
Descomposición modular y estilos de control
Descomposición modular y estilos de controlDescomposición modular y estilos de control
Descomposición modular y estilos de control
 
El Proceso de Diseño de Interfaz del Usuario por Ian Sommerville
El Proceso de Diseño de Interfaz del Usuario por Ian SommervilleEl Proceso de Diseño de Interfaz del Usuario por Ian Sommerville
El Proceso de Diseño de Interfaz del Usuario por Ian Sommerville
 
Reglas de Oro
Reglas de OroReglas de Oro
Reglas de Oro
 
El Proceso de Diseño de interfaces de usuario. Roger Pressman
El Proceso de Diseño de interfaces de usuario. Roger PressmanEl Proceso de Diseño de interfaces de usuario. Roger Pressman
El Proceso de Diseño de interfaces de usuario. Roger Pressman
 
Diseño de interfaces
Diseño de interfacesDiseño de interfaces
Diseño de interfaces
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
Bases de datos (Ejemplo del videoclub)
Bases de datos (Ejemplo del videoclub)Bases de datos (Ejemplo del videoclub)
Bases de datos (Ejemplo del videoclub)
 
Ejemplos base de datos
Ejemplos base de datosEjemplos base de datos
Ejemplos base de datos
 
UML: CASOS DE USO
UML: CASOS DE USOUML: CASOS DE USO
UML: CASOS DE USO
 

Ähnlich wie Soluciones con objetos y patrones. visibilidad

Primeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPablo Aguilera
 
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...Amazon Web Services
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarEduardo Méndez
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarJuan Hoyos
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarblasty2
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarblasty2
 
Conexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraConexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraMariaphlb
 
Tutorial 1 android
Tutorial 1 androidTutorial 1 android
Tutorial 1 androidlibidinosa
 
C sharp manual[1]
C sharp manual[1]C sharp manual[1]
C sharp manual[1]Kalizbeth
 
Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#Vicente Gerardo Guzman Lucio
 
Mejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernasMejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernasAmazon Web Services LATAM
 
151442532 tutorial-de-c
151442532 tutorial-de-c151442532 tutorial-de-c
151442532 tutorial-de-cDaniel Verdin
 
Introduciendo Spring 19 - Evento Palma Salesforce
Introduciendo Spring 19 - Evento Palma SalesforceIntroduciendo Spring 19 - Evento Palma Salesforce
Introduciendo Spring 19 - Evento Palma SalesforcePep_Aguilo
 

Ähnlich wie Soluciones con objetos y patrones. visibilidad (20)

Mvc
MvcMvc
Mvc
 
Primeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier Aznar
 
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Conexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraConexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María Parra
 
Tutorial 1 android
Tutorial 1 androidTutorial 1 android
Tutorial 1 android
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
C sharp manual[1]
C sharp manual[1]C sharp manual[1]
C sharp manual[1]
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#
 
Tutorial net beans
Tutorial net beansTutorial net beans
Tutorial net beans
 
Mejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernasMejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernas
 
Cocomo II
Cocomo IICocomo II
Cocomo II
 
151442532 tutorial-de-c
151442532 tutorial-de-c151442532 tutorial-de-c
151442532 tutorial-de-c
 
Introduciendo Spring 19 - Evento Palma Salesforce
Introduciendo Spring 19 - Evento Palma SalesforceIntroduciendo Spring 19 - Evento Palma Salesforce
Introduciendo Spring 19 - Evento Palma Salesforce
 
Custom Renders Xamarin.Forms
Custom Renders Xamarin.FormsCustom Renders Xamarin.Forms
Custom Renders Xamarin.Forms
 

Mehr von Juan Pablo Bustos Thames

Del análisis al diseño. diagramas de secuencia y contratos
Del análisis al diseño. diagramas de secuencia y contratosDel análisis al diseño. diagramas de secuencia y contratos
Del análisis al diseño. diagramas de secuencia y contratosJuan Pablo Bustos Thames
 
Primeros artefactos de análisis. casos de uso
Primeros artefactos de análisis. casos de usoPrimeros artefactos de análisis. casos de uso
Primeros artefactos de análisis. casos de usoJuan Pablo Bustos Thames
 
Ingeniería del software asistida por computadora (case)
Ingeniería del software asistida por computadora (case)Ingeniería del software asistida por computadora (case)
Ingeniería del software asistida por computadora (case)Juan Pablo Bustos Thames
 

Mehr von Juan Pablo Bustos Thames (18)

Pruebas del Software
Pruebas del SoftwarePruebas del Software
Pruebas del Software
 
Verificación y Validación del Diseño
Verificación y Validación del DiseñoVerificación y Validación del Diseño
Verificación y Validación del Diseño
 
Modelos de dominio específicos
Modelos de dominio específicosModelos de dominio específicos
Modelos de dominio específicos
 
Arquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidosArquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidos
 
Del análisis al diseño. diagramas de secuencia y contratos
Del análisis al diseño. diagramas de secuencia y contratosDel análisis al diseño. diagramas de secuencia y contratos
Del análisis al diseño. diagramas de secuencia y contratos
 
Modelos de dominio
Modelos de dominioModelos de dominio
Modelos de dominio
 
Primeros artefactos de análisis. casos de uso
Primeros artefactos de análisis. casos de usoPrimeros artefactos de análisis. casos de uso
Primeros artefactos de análisis. casos de uso
 
Análisis y diseño orientado a objetos
Análisis y diseño orientado a objetosAnálisis y diseño orientado a objetos
Análisis y diseño orientado a objetos
 
Documentación del diseño
Documentación del diseñoDocumentación del diseño
Documentación del diseño
 
Conceptos de diseño
Conceptos de diseñoConceptos de diseño
Conceptos de diseño
 
Proceso de diseño
Proceso de diseñoProceso de diseño
Proceso de diseño
 
Ingeniería del software asistida por computadora (case)
Ingeniería del software asistida por computadora (case)Ingeniería del software asistida por computadora (case)
Ingeniería del software asistida por computadora (case)
 
Prototipado del software
Prototipado del softwarePrototipado del software
Prototipado del software
 
Prototipado del software
Prototipado del softwarePrototipado del software
Prototipado del software
 
Desarrollo rápido de aplicaciones
Desarrollo rápido de aplicacionesDesarrollo rápido de aplicaciones
Desarrollo rápido de aplicaciones
 
Métodos Ágiles
Métodos ÁgilesMétodos Ágiles
Métodos Ágiles
 
Modelos de desarrollo rápido de software
Modelos de desarrollo rápido de softwareModelos de desarrollo rápido de software
Modelos de desarrollo rápido de software
 
Modelo rup
Modelo rupModelo rup
Modelo rup
 

Soluciones con objetos y patrones. visibilidad

  • 1. Ingeniería en Sistemas de Información Diseño de Sistemas (3K1)
  • 2.
  • 3. Soluciones con Objetos y Patrones Craig Larman, Cap. 19 Ingeniería en Sistemas de Información
  • 9. DISEÑO DE SISTEMAS Patrones (GRASP)
  • 10. DISEÑO DE SISTEMAS Patrones (GRASP)    
  • 11. DISEÑO DE SISTEMAS Para elaborar un Diagrama de Colaboración efectivo necesitamos contar con las Responsabilidades y las Postcondiciones , que hemos estudiado en los Contratos . En caso de omitir la preparación del contrato, de todos modos deberíamos elaborar los diagramas de interacción retornando a los casos de uso y reflexionando sobre los cambios que cada operación genera en el sistema, para poder elaborar los Diagramas de Colaboración . Los contratos organizan y aíslan la información en un formato funcional, y estimulan la investigación en la fase de análisis y no en la de diseño, ahorrándonos trabajo y problemas.
  • 12. DISEÑO DE SISTEMAS Las postcondiciones son sólo una estimación: Los diagramas se deben preparar para cumplir con las postcondiciones del contrato. Por eso, las postcondiciones definidas de antemano son una excelente conjetura o estimación inicial de lo que se pretende alcanzar; aunque tal vez no sean muy exactas. Lo mismo sucede con el modelo conceptual: es un punto de partida que contendrá errores y omisiones. Los contratos son un mero punto de partida para establecer lo que se hará, pero sin sentirnos obligados por ellos. Lo más probable es que algunas postcondiciones no sean necesarias y que haya algunas tareas por realizar aún no descubiertas.
  • 13. DISEÑO DE SISTEMAS Los Diagramas de Interacción y el Modelo Conceptual: Algunos objetos que interactúan (a través de mensajes) en los Diagramas de Colaboración provienen del Modelo Conceptual . Utilizamos información del Modelo Conceptual para asignar responsabilidades con los patrones GRASP . Ahora bien: ¿todos los objetos en interacción saldrán necesariamente del Modelo Conceptual? De ninguna manera; durante la fase de diseño podemos descubrir otros objetos nuevos, que no figuran en los análisis anteriores.
  • 14. DISEÑO DE SISTEMAS DIAGRAMAS DE COLABORACION – VIDEO CLUB: A continuación, desarrollaremos los Diagramas de Colaboración para el caso de uso Alquiler de video del caso de estudio del Video Club. El diagrama de colaboración: introducirSocio: La operación del sistema introducirSocio ocurre cuando el Cajero captura el Código del Socio. Debemos contar con un Diagrama de Colaboración que cumpla con las Postcondiciones de introducirSocio .
  • 17.
  • 18. DISEÑO DE SISTEMAS Primero, tenemos una responsabilidad de creación. Con lo cual, utilizamos el patrón Creador ; el cual indica la asignación de la responsabilidad de generar una clase que agregue, contenga o registre la que va a ser creada. Al analizar el Modelo Conceptual , descubrimos que Caja nos permite ver el registro de un Alquiler ; con lo que Caja sería un buen candidato para crear un Alquiler . Sin embargo, perderíamos la posibilidad de asociar Alquiler con Socio ; por lo tanto, es mejor asignar a Socio la responsabilidad de crear el Alquiler .
  • 19. DISEÑO DE SISTEMAS Además, cuando se crea el Alquiler , hay que generar una colección vacía (un contenedor) para que registre todas las instancias futuras AlquilerLineadeVideo que vayamos agregando. En conclusión, el objeto Socio crea un Alquiler y éste, a su vez, genera una colección vacía, representada por un multiobjeto en el Diagrama de Colaboración .
  • 20. DISEÑO DE SISTEMAS Creación de Alquileres 2.1: crear () introducirSocio(codigo) 2: hacerAlquiler() : Caja :AlquilerLinea deVideo soc:Socio 2.2: Crear () :Socio 1: soc:=encontrar(codigo) :Alquiler según Controlador según Creador según Creador
  • 21. DISEÑO DE SISTEMAS Mensajes a multiobjetos: Un mensaje enviado a un multiobjeto se envía a todos los elementos de la colección / contenedor. Por ejemplo, en el Diagrama de Colaboración introducirSocio : El mensaje crear (2.2) enviado al multiobjeto AlquilerLineadeVideo tiene por objeto generar la estructura de datos colección representada por el multiobjeto. Su finalidad no es crear una instancia de la clase AlquilerLineadeVideo .
  • 22. DISEÑO DE SISTEMAS El Diagrama de Colaboración: introducirVideo La operación del sistema introducirVideo ocurre cuando el Cajero captura el código de Video. Con las Postcondiciones de introducirVideo se construirá un Diagrama de Colaboración. Cada vez que se emita un mensaje debemos asignar una responsabilidad. Selección de la case Controlador: Igual que en el diagrama anterior, utilizaremos Caja como Controlador.
  • 23.
  • 24. DISEÑO DE SISTEMAS Lo anterior indica la responsabilidad de crear una instancia AlquilerLineadeVideo . El análisis del Modelo Conceptual revela que el Alquiler contiene los objetos AlquilerLineadeVideo ; por lo tanto, aplicando el patrón Creador ; Alquiler es un buen candidato para generar la línea de video . Al hacer esto, asociamos automáticamente el Alquiler con la línea a lo largo del tiempo, al guardar esta nueva colección .
  • 25. DISEÑO DE SISTEMAS Obtención de una instancia Video: Debemos ahora asociar la instancia AlquilerLineadeVideo a Video , por concordancia del código que se recibe. Esto significa que se requiere recuperar un Video basado en la correspondencia del código . En este caso, no estamos ante un problema de creación ni de escoger un controlador. Entonces, aplicamos el patrón Experto GRASP en primer lugar. ¿ Quién está enterado de todo lo concerniente a Video ?: El análisis del Modelo Conceptual revela que VideoClub contiene a todos los Videos y así, siguiendo al patrón Experto , VideoClub es idóneo para asumir esa responsabilidad de consulta .
  • 26. DISEÑO DE SISTEMAS Establecimiento del atributo Video.estado: ¿Quién debería encargarse de asignar el valor verdadero al atributo estado del Video ? Basándonos en el patrón Experto, debería ser el mismo Video , porque posee el atributo estado. Así VideoClub enviará a la instancia Video el mensaje seAlquila para asignarle el valor verdadero , el Video quede registrado como «alquilado», y por ende, no disponible para una nueva transacción de Alquiler.
  • 27. DISEÑO DE SISTEMAS Diagrama de colaboración introducirVideo introducirVideo(codigo) 2: hacerAlquilerLineadeVideo(vid) : Caja :AlquilerLinea deVideo 2.2:agregar (da) :Video 1: vid:=extraer(codigo) :Alquiler según Controlador según Creador :VideoClub 1.1: vid:=encontrar(codigo) vid:Video 3: alquilado() 2.1: crear(vid) da:AlquilerLineadeVideo según Experto
  • 28.
  • 29. DISEÑO DE SISTEMAS El diagrama de colaboración: terminarAlquiler La operación terminarAlquiler ocurre cuando un Cajero oprime un botón para indicar la conclusión de un alquiler. Se elaborará un Diagrama de Colaboración para cumplir las Postcondiciones de terminarAlquiler . Cada decisión sobre mensajes implica asignar Responsabilidades, y los patrones GRASP se emplearán para escogerlos y justificarlos. Selección de la clase Controlador: Basándonos en el patrón Controlador de GRASP, seguiremos utilizando Caja .
  • 30.
  • 31. DISEÑO DE SISTEMAS Terminación de la captura de videos terminarAlquiler() 2: seTermina() : Caja :Alquiler según Controlador según Experto seTermina() { fecha := FechaActual hora:= HoraActual }
  • 32.
  • 33.
  • 35. DISEÑO DE SISTEMAS Calculo del Total de la Venta 2.1 : p := precio () 2 : st := subtotal() t:= total()  :Alquiler alv:=:ALV vid:Video :AlquilerLineade Video 1*:[p/c] alv:= siguiente()  según Experto según Experto
  • 36. DISEÑO DE SISTEMAS El diagrama de colaboración: efectuarPago La operación sistémica efectuarPago ocurre cuando un cajero captura el efectivo ofrecido como pago. Se construirá un diagrama de colaboración para cumplir con las Postcondiciones de efectuarPago. Elección del Controlador: Nuestra primera decisión se refiere a la responsabilidad del manejo de los mensajes. Con base en el patrón Controlador seguiremos empleando a la Caja como controlador .
  • 37.
  • 38. DISEÑO DE SISTEMAS En estos casos, en que tenemos varios buenos candidatos, conviene hacer jugar a los restantes patrones de: Bajo acoplamiento y Alta cohesión . Si escogemos el objeto “ Alquiler ” para crear un Pago , las responsabilidades de Caja serán mas ligeras, y dará origen a una definición mas simple de Caja . Además no necesita saber que existe una instancia Pago , porque podemos registrarla indirectamente mediante el Alquiler . Con lo cual, el diagrama de colaboración sería así:
  • 39. DISEÑO DE SISTEMAS Diagrama de colaboración efectuarPago 1: efectuarPago (efecOfrecido) :Caja : Alquiler :Pago efectuarPago (efecOfrecido) 1.1: crear (efecOfrecido) según Controlador según Creador y Bajo Acoplamiento
  • 40. DISEÑO DE SISTEMAS Calcular el vuelto: Como es habitual el patrón Experto será el primero en considerarse, y habrá que formular la responsabilidad en los siguientes términos: ¿Quién asume la responsabilidad de conocer el vuelto? Para calcular el vuelto, necesitamos el total del alquiler y el pago en efectivo ofrecido. Por lo tanto: Alquiler y Pago son expertos parciales para la solución de este problema. Si Pago es el principal responsable de conocer el saldo, necesitará ser visible al Alquiler para pedirle su total. Como por ahora no lo conoce, con este método aumentará el acoplamiento global del diseño: y por lo tanto, no soportará el patrón de Bajo Acoplamiento .
  • 41. DISEÑO DE SISTEMAS En cambio si el Alquiler es el principal responsable de conocer el saldo, necesitara ser visible al Pago para pedirle el monto ofrecido. Dado que Alquiler ya es visible al Pago (por ser su Creador ), con este enfoque no aumenta el acoplamiento global, de ahí que es preferible elegir a Alquiler , para asignarle la responsabilidad e . El diagrama de colaboración será el siguiente: El diagrama de colaboración alquiler-saldo :Pago 1: mon:= monto() sal:= saldo() 2:t := total() :Alquiler