Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las responsabilidades se relacionan con las obligaciones de un objeto respecto a dos categoras de comportamiento:
1. Conocer
2. Hacer
:VentasLinea deProducto
Significa que los objetos Venta tienen la responsabilidad de imprimirse en ellos mismos imprimir( )
:Venta
2: Imprimir( )
Vli:VentasLinea deProducto
Patrn
Es una descripcin de un problema y su solucin
(pareja problema/solucin), con un nombre y que es aplicable a otros contextos, con una sugerencia sobre
Los patrones no pretenden descubrir ni expresar nuevos principios de ingeniera de software, intentan codificar el conocimiento, las expresiones y los principios ya existentes.
(General Responsability Asignment Software Patterns o Patrones Generales de Software para Asignar Responsabilidades) Describen los principios fundamentales de la asignacin
de responsabilidades a objetos, expresados en forma de patrones. Los primeros cinco patrones GRASP son: Experto Creador Alta cohesin Bajo Acoplamiento Controlador
GRASP
NombredeClase Atributos
Mtodos
mtodos.
Patrn experto
Solucin: Asignar una responsabilidad al experto en
informacin: la clase que cuenta con la informacin necesaria para cumplir la responsabilidad.
Problema: Cual es el principio fundamental en virtud del cual se asignan las responsabilidades en el diseo orientado a objetos?
Patrn experto
Ejemplo:
En la aplicacin de TPDV una de las responsabilidades en el caso de uso terminarVenta es calcular el total de la venta. Alguna clase de objetos necesita conocer el total de la venta.
Quien es el responsable de calcular el total de la venta? Debe examinarse el Modelo Conceptual. Que informacin se requiere para calcular el total? Hay que conocer todas las instancias ventasLineadeProducto de una venta. La suma de sus subtotales
Patrn experto
Esto solo lo conoce la instancia venta. Venta es el experto
t:= total( )
2:st:=subtotal( )
:Venta
VentasLinea deProducto cantidad subtotal( ) Especificacin deProducto Descripcin precio CUP precio( )
Vli:VentasLinea deProducto
2.1:p:=precio( )
:VentasLinea deProducto
:Especificacinde Producto
Nuevo mtodo
Patrn experto
Para cumplir con la responsabilidad de conocer y dar el
total de la venta se asignaron tres responsabilidades a tres clases de objetos, as: Clase Venta VentasLineade Producto Especificacionde Producto Responsabilidad Conoce el total de la venta. Conoce el subtotal de la lnea de producto.
Patrn creador
Patrn creador
Ejemplo:
Segn el patrn creador se debe buscar una clase de objeto que agregue, contenga y realice otras operaciones sobre este tipo de instancias.
Examinando el Modelo Conceptual, Venta puede asumir esa responsabilidad.
Patrn creador
Creacin de un objeto VentasLineadeProducto.
hacerLineadeProducto(cantidad)
:Venta
Venta
Fecha hora
1:crear(cantidad)
:VentasLinea deProducto
Nuevo mtodo
El acoplamiento es una medida de la fuerza con que una clase est conectada a otras clases, con que las conoce y con que recurre a ellas. Una clase con bajo (o dbil) acoplamiento no depende de muchas otras; muchas otras depende del contexto, pero no lo estudiaremos aqu por el momento.
aplicacin de TPDV
Pago
TPDV
Venta
Suponga que necesitamos crear una instancia Pago y asociarla a Venta. Qu clase se encargar de hacer esto?
:TPDV
1:crear( )
p:Pago
2:agregarPago(p )
:Venta
:TPDV
1:efectuarPago( )
:Venta
1.1:crean( )
:Pago
cohesin siga siendo alta. Problema: Cmo mantener la complejidad dentro de lmites manejables?
En la perspectiva del diseo orientado a objetos, la Cohesin esuna medida de cun relacionadas y enfocadas estn las responsabilidades de una clase. Una alta cohesin caracteriza a las clases con responsabilidades estrechamente relacionadas que no realicen un trabajo enorme.
Son difciles de conservar. Son delicadas: las afectan constantemente los cambios.
Las clases que con baja cohesion han asumido responsabilidades que deberan haber delegado a otros objetos.
Patrn controlador
Solucin: Asignar la responsabilidad del manejo de un mensaje de los eventos de un sistema a una clase que represente una de las siguientes opciones: El sistema global (controlador de fachada). La empresa u organizacin global (controlador de
fachada).
Algo en el mundo real que es activo y que pueda participar en la tarea (controlador de tareas). Un manejador artificial de todos los eventos del sistema de un caso de uso, generalmente denominados manejador <NombreCasodeUso> (controlador de casos de uso).
Patrn controlador
Utilice la misma clase de controlador con todos los eventos
Patrn controlador
Problema: Quin debera encargarse de atender un evento del sistema? Un evento del sistema es un evento de alto nivel generado por un actor externo; es un evento de entrada externa. Se asocia a operaciones del sistema: las que emite en respuesta a los eventos del sistema. Por ejemplo, cuando un cajero que usa un sistema de terminal en el punto de venta oprime el botn Terminar Venta, est generando un evento sistmico que indica que la venta ha terminado.
Patrn controlador
Un controlador es un objeto de interfaz no destinada al usuario que se encarga de manejar un evento del sistema.
Ejemplo: En la aplicacin del punto de venta se dan varias operaciones del sistema, como se advierte en la siguiente figura:
Sistema
Patrn controlador
Durante el anlisis del comportamiento del sistema, sus operaciones son asignadas al tipo Sistema, para indicar que son operaciones del sistema. Pero ello no significa que una clase llamada Sistema las ejecute durante el diseo.
Ms bien, durante el diseo, a la clase Controlador se le asigna la responsabilidad de las operaciones del sistema.
:???
introducirProducto
:TPDV
:Venta
2:especif:=especificacion(cup)
1.1:crear() 3.2:agregar(vli)
3.1:crear(especif,cant)
:Catalogo deProductos
2.1:especif:=encontrar(cup)
Vli:Ventas LineadeProducto
:Especificacion deProducto
Mensaje dirigido al propio objeto coleccin
:VentasLinea deProducto
terminarVenta
seTermina() { estaTerminada:=verdadero }
terminarVenta( )
seTermina( )
:TPDV
:Venta
efectuarPago
efectuarPago(efectivoOfrecido)
:TPDV
1:efectuarPago(efectivoOfrecido)
:Venta
2:agregarVenta(v)
1.1:crear(efectivoOfrecido)
:Tienda
2.1:agregar(v)
:Pago
:VentasLinea deProducto
introducirProducto
:TPDV
:Venta
1.1:crear() 3.2:agregar(vli)
3.1:crear(especif,cant)
:Catalogo deProductos
Vli:Ventas LineadeProducto
2.1:especif:=encontrar(cup)
:Especificacion deProducto
Mensaje dirigido al propio objeto coleccin
:VentasLinea deProducto
terminarVenta
seTermina() { estaTerminada:=verdadero }
terminarVenta( )
seTermina( )
:TPDV
:Venta
Segn controlador
Segn experto
efectuarPago
Segn Controlador
efectuarPago(efectivoOfrecido)
:TPDV
1:efectuarPago(efectivoOfrecido)
:Venta
2:agregarVenta(v)
1.1:crear(efectivoOfrecido)
:Tienda
:Pago
:VentasLinea deProducto