Академический Документы
Профессиональный Документы
Культура Документы
Marcello Visconti y Hernn Astudillo Departamento de Informtica Universidad Tcnica Federico Santa Mara {visconti,hernan} en inf.utfsm.cl
Fundamentos de Ingeniera de SW
Fundamentos de Ingenier a de SW
Fundamentos de Ingenier a de SW
? En los patrones GRASP se codifican algunos de los principios, que se aplican al preparar los diagramas de interaccin.
Fundamentos de Ingenier a de SW
Fundamentos de Ingenier a de SW
Fundamentos de Ingenier a de SW
? En teora, todos los patrones poseen nombres muy sugestivos. El asignar nombre a un patrn, a un mtodo o a un principio ofrece las siguientes ventajas:
? Apoya el agrupamiento y la incorporacin del concepto a nuestro sistema cognitivo y a la memoria. ? Facilita la comunicacin.
Fundamentos de Ingenier a de SW
Pregunta: Respuesta:
Qu son los patrones GRASP? Los patrones GRASP describen los principios fundamentales de la asignacin de responsabilidades a objetos, expresados en forma de patrones.
Fundamentos de Ingenier a de SW
Fundamentos de Ingenier a de SW
Fundamentos de Ingenier a de SW
10
Patrones de Diseo
Patrn Experto
? Problema
? Cul es el principio fundamental en virtud del cual se asignan las responsabilidades en el diseo orientado a objetos? ? Un modelo de clase puede definir docenas y hasta cientos de clases de software, y una aplicacin tal vez requiera el cumplimiento de cientos o miles de responsabilidades. ? Si estas se asignan en forma adecuada, los sistemas tienden a ser ms fciles de entender, mantener y ampliar, y se nos presenta la oportunidad de reutilizar los componentes en futuras aplicaciones.
? Solucin
? Asignar una responsabilidad al experto en informacin: la clase que cuenta con la informacin necesaria para cumplir la responsabilidad.
Fundamentos de Ingenier a de SW
11
Patrones de Diseo
Patrn Experto
? Ejemplo ? En la aplicacin del punto de venta, alguna clase necesita conocer el gran total de la venta. Comience asignando las responsabilidades con una definicin clara de ellas. A partir de esta recomendacin se plantea la pregunta:
? Quin es el responsable de conocer el gran total de la venta? ? Desde el punto de vista del patrn Experto, deberamos buscar la clase de objetos que posee la informacin necesaria para calcular el total.
Fundamentos de Ingenier a de SW
12
Descritas -por *
EspecificaciondeProductos
Fundamentos de Ingenier a de SW
13
Responsabilidad conoce el total de la venta conoce el subtotal de la lnea de producto conoce el precio del producto
Fundamentos de Ingenier a de SW
14
2: st:=subtotal()
vli : VentasLineaDeProducto
3: p:=precio()
: EspecificaciondeProductos
Fundamentos de Ingenier a de SW
15
Fundamentos de Ingenier a de SW
16
Fundamentos de Ingenier a de SW
17
Fundamentos de Ingenier a de SW
18
Fundamentos de Ingenier a de SW
19
Fundamentos de Ingenier a de SW
20
10
Fundamentos de Ingenier a de SW
21
Descritas -por *
EspecificaciondeProductos
Fundamentos de Ingenier a de SW
22
11
? por ello, el patrn Creador sugiere que Venta es idnea para asumir la responsabilidad de crear las instancias VentasLineadeProducto.
Fundamentos de Ingenier a de SW
23
Segn Controlador
Segn Creador
Fundamentos de Ingenier a de SW
24
12
Fundamentos de Ingenier a de SW
25
Fundamentos de Ingenier a de SW
26
13
EfectuarPago()
:TPDV
1:Crea()
P:Pago
2: AgregarPago(p)
:Venta
Fundamentos de Ingenier a de SW 27
:TPDV
1:EfectuarPago()
:Venta
1.1:Crear()
:Pago
? Esta ltima asociacin es mejor dado que Venta realiza la creacin del Pago y no TPDV por lo tanto se reduce la dependencia de este ltimo con el resto de las clases. ? El grado de acoplamiento no puede considerarse aisladamente de otros principios como Experto y Alta Cohesin. Sin embargo, es un factor a considerar cuando se intente mejorar el diseo.
Fundamentos de Ingenier a de SW 28
14
Fundamentos de Ingenier a de SW
29
Fundamentos de Ingenier a de SW
30
15
? La cohesin es una 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. ? Una baja cohesin hace muchas cosas no afines o realiza trabajo excesivo. Esto presenta los siguientes problemas:
? Son difciles de comprender ? Difciles de reutilizar ? Difciles de conservar ? Las afectan constantemente los cambios.
Fundamentos de Ingenier a de SW
31
EfectuarPago()
:TPDV
1:Crea()
P:Pago
2: AgregarPago(p)
:Venta
Fundamentos de Ingenier a de SW
32
16
EfectuarPago()
:TPDV
1:EfectuarPago()
:Venta
1.1:Crear()
:Pago
Fundamentos de Ingenier a de SW
33
Fundamentos de Ingenier a de SW
34
17
Fundamentos de Ingenier a de SW
35
? 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.
? Un Controlador es un objeto de interfaz no destinada al usuario que se encarga de manejar un evento del sistema. Define adems el mtodo de su operacin.
Fundamentos de Ingenier a de SW
36
18
Fundamentos de Ingenier a de SW
37
Fundamentos de Ingenier a de SW
38
19
TPDV Tienda
representa algo en el mundo real que est activo (por ejemplo, el papel de una persona) y que Cajero puede intervenir en la tarea representa un manejador artificial de todas las ManejadordeComprarP operaciones del sistema de un caso de uso. roductos
Fundamentos de Ingenier a de SW
39
Sistema terminarVenta( ) introducirProducto( ) efectuarPago( ) operaciones del sistema descubiertas durante el anlisis de su comportamiento
TPDV terminarVenta( ) introducirProducto( ) efectuarPago( ) asignacin de las operaciones del sistema durante su diseo, mediante el patrn Controlador
Fundamentos de Ingenier a de SW
40
20
Fundamentos de Ingenier a de SW
41
Fundamentos de Ingenier a de SW
42
21
Fundamentos de Ingenier a de SW
43
Fundamentos de Ingenier a de SW
44
22
Fundamentos de Ingenier a de SW
45
Terminar Venta
Efectuar Pago
Cajero enIntroducirProducto()
? Ntese que la clase TPDVApplet - parte de la capa de presentacin - transmite un mensaje introducirProducto al objeto TPDV. ? No intervino en el proceso de la operacin, ni la decisin de cmo manejarla, el applet se limit a delegarla a la capa del dominio.
1: introducirProducto(cup, cantidad)
Controlador 2: hacerLineadeProducto(cup,cantidad)
: TPDV
: Venta
Fundamentos de Ingenier a de SW
46
23
Fundamentos de Ingenier a de SW
47
Fundamentos de Ingenier a de SW
48
24