Patrones para asignar responsabilidades
Responsabilidad: Contrato u obligación de un tipo o
clase (según Booch y Rumbaugh).
Las responsabilidades se relacionan con las
obligaciones de un objeto respecto a dos categorías
de comportamiento:
1. Conocer
2. Hacer
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrones para asignar responsabilidades
Entre las responsabilidades de un objeto
relacionadas con hacer se encuentran:
 Hacer algo en uno mismo
 Iniciar una acción en otros objetos
 Controlar y coordinar actividades en otros
objetos
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrones para asignar responsabilidades
Entre las responsabilidades de un objeto
relacionadas con conocer se encuentran:
Estar enterado de los datos privados
encapsulados
Estar enterado de la existencia de objetos
conexos
Estar enterado de cosas que se pueden derivar
o calcular
María Eugenia Valencia
Dpto. Ciencias de la Computación
Las responsabilidades y los diagramas de
interacción
1*:[en cada] vli:= siguiente( )
:VentasLinea
deProducto
Significa que los objetos
Venta tienen la responsabilidad
de imprimirse en ellos mismos
imprimir( )
:Venta
2: Imprimir( )
Vli:VentasLinea
deProducto
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón
Es una descripción de un problema y su solución
(pareja problema/solución), con un nombre y que es
aplicable a otros contextos, con una sugerencia sobre
la manera de usarlo en situaciones nuevas.
Los patrones no pretenden descubrir ni expresar
nuevos principios de ingeniería de software, intentan
codificar el conocimiento, las expresiones y los
principios ya existentes.
María Eugenia Valencia
Dpto. Ciencias de la Computación
GRASP
(General Responsability Asignment Software Patterns
o Patrones Generales de Software para Asignar
Responsabilidades)
Describen los principios fundamentales de la asignación
de responsabilidades a objetos, expresados en forma de
patrones. Los primeros cinco patrones GRASP son:
Experto
Creador
Alta cohesión
Bajo Acoplamiento
Controlador
María Eugenia Valencia
Dpto. Ciencias de la Computación
Notación UML para los diagramas de clase
NombredeClase
La tercera sección está
destinada a los metodos
Atributos
Métodos
Las clases de software muestran los nombres de los
métodos.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón experto
Solución: Asignar una responsabilidad al experto en
información: la clase que cuenta con la información
necesaria para cumplir la responsabilidad.
Problema: ¿Cual es el principio fundamental en virtud del
cual se asignan las responsabilidades en el diseño orientado
a objetos?
María Eugenia Valencia
Dpto. Ciencias de la Computación
Ejemplo:
Patrón experto
En la aplicación 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 información se requiere para calcular el total?
 Hay que conocer todas las instancias
ventasLineadeProducto de una venta.
 La suma de sus subtotales.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón experto
Esto solo lo conoce la instancia venta. Venta es el experto
en información y por tanto debe asumir la responsabilidad.
¿Qué información se requiere para determinar el subtotal
de la línea de producto?
1*:[en cada] vli:= siguiente( )
t:= total( )
:Venta
2:st:=subtotal( )
Vli:VentasLinea
deProducto
VentasLinea
deProducto
cantidad
Total( )
subtotal( )
:VentasLinea
deProducto
2.1:p:=precio( )
:Especificaciónde
Producto
Venta
Fecha
hora
Nuevo método
Especificación
deProducto
Descripción
precio
CUP
precio( )
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón 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
Responsabilidad
Venta
Conoce el total de la venta.
VentasLineade
Producto
Conoce el subtotal de la línea de
producto.
Especificacionde
Producto
Conoce el precio del producto.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón creador
Solución: Asignarle a la clase B la responsabilidad de crear
una instancia de clase A en uno de los siguientes casos:
B agrega los objetos A.
B contiene los objetos A.
B registra las instancias de los objetos A.
B utiliza específicamente los objetos A.
B tiene los datos de inicialización que serán
transmitidos a A cuando este objeto sea creado.
 B es un creador de los objetos A.
 Si existe más de una opción, prefiera la clase B que
agregue o contenga la clase A.





Problema: ¿Quién debería ser responsable de crear una
nueva instancia de alguna clase?
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón creador
Ejemplo:
Para el caso de uso comprarProductos existe la operación
IntroducirProducto. ¿Quién debería encargarse de crear
una instancia VentasLineadeProducto ?
Según el patrón 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.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón creador
Creación de un objeto VentasLineadeProducto.
hacerLineadeProducto(cantidad)
Venta
:Venta
Fecha
hora
1:crear(cantidad)
hacerLinea
deProducto()
total()
:VentasLinea
deProducto
Nuevo método
Esta asignación de responsabilidades requiere definir en
Venta un método de hacerLineadeProducto.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón bajo acoplamiento
Solución: Asignar una responsabilidad para mantener bajo
acoplamiento.
Problema: ¿Cómo dar soporte a una dependencia escasa y
a un aumento de la reutilización?
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 débil)
acoplamiento no depende de muchas otras; ”muchas otras”
depende del contexto, pero no lo estudiaremos aquí por el
momento.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón bajo acoplamiento
Una clase con alto (o fuerte) acoplamiento recurre a
muchas otras. Este tipo de clases no es conveniente:
presentan los siguientes problemas:
 Los cambios de las clases afines ocasionan cambios
locales.
 Son más difíciles de entender cuando están aisladas.
 Son más difíciles de reutilizar porque se requiere la
presencia de otras clases de las que dependen.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón bajo acoplamiento
Ejemplo:
Dado el siguiente diagrama parcial de clases para la
aplicación de TPDV
Pago
TPDV
Venta
Suponga que necesitamos crear una instancia Pago y
asociarla a Venta. ¿Qué clase se encargará de hacer esto?
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón bajo acoplamiento
TPDV crea Pago.
efectuarPago( )
1:crear( )
:TPDV
p:Pago
2:agregarPago(p )
:Venta
Venta crea Pago
efectuarPago( )
:TPDV
1:efectuarPago( )
:Venta
1.1:crean( )
:Pago
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón alta cohesión
Solución: Asignar una responsabilidad de modo que la
cohesión siga siendo alta.
Problema: ¿Cómo mantener la complejidad dentro de
límites manejables?
En la perspectiva del diseño orientado a objetos, la
cohesión (o, más exactamente, la cohesión funcional) es
una medida de cuán relacionadas y enfocadas están las
responsabilidades de una clase. Una alta cohesión
caracteriza a las clases con responsabilidades
estrechamente relacionadas que no realicen un trabajo
enorme.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón alta cohesión
Una clase con baja cohesión hace muchas cosas no
afines o un trabajo excesivo. No conviene este tipo de
clases pues presentan los siguientes problemas:




Son
Son
Son
Son
difíciles de comprender.
difíciles de reutilizar.
difíciles de conservar.
delicadas: las afectan constantemente los cambios.
Las clases con baja cohesión a menudo representan un
alto grado de abstracción o han asumido
responsabilidades que deberían haber delegado a otros
objetos.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón controlador
Solución: 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 organización 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).
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón controlador
Utilice la misma clase de controlador con todos los eventos
del sistema en el mismo caso de uso.
Corolario: Nótese que en esta lista no figuran las clases
“ventana”, “aplicación”, “vista” ni “documento”. Estas clases
no deberían ejecutar las tareas asociadas a los eventos del
sistema; generalmente las reciben y las delegan al controlador.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón controlador
Problema: ¿Quién debería 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 botón
“Terminar Venta”, está generando un evento sistémico que
indica que “la venta ha terminado”.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón controlador
Un controlador es un objeto de interfaz no destinada al
usuario que se encarga de manejar un evento del
sistema.
Ejemplo:
En la aplicación del punto de venta se dan varias
operaciones del sistema, como se advierte en la siguiente
figura:
Sistema
terminarVenta()
introducirProducto()
efectuarPago()
María Eugenia Valencia
Dpto. Ciencias de la Computación
Patrón controlador
Durante el análisis 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 diseño.
Más bien, durante el diseño, a la clase Controlador se le asigna la
responsabilidad de las operaciones del sistema.
¿Quién debería ser el controlador de eventos sistémicos
como introducirProducto y terminarVenta?
introducirProducto(cup,cantidad)
:???
María Eugenia Valencia
Dpto. Ciencias de la Computación
Diseñando con objetos y patrones
Para elaborar diagramas de interacción:
1. Prepare un diagrama individual para cada operación del sistema en el
paso iterativo actual.
 Por cada evento del sistema construya un diagrama que lo incluya
como mensaje inicial.
2. Si el diagrama se vuelve complejo, dividalo en otros más pequeños.
3. Con las responsabilidades contractuales, las poscondiciones y la
descripción del caso de uso como punto de partida, diseñe un sistema
de objetos interactuantes para que realicen las tareas. Aplique los
patrones GRASP y otros para elborar un buen diseño.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Diagrama de colaboración
introducirProducto
Según creador
1:[nueva venta]crear()
introducirProducto
(cup,cant)
:TPDV
2:especif:=especificacion(cup)
Según experto
:Catalogo
deProductos
3:hacerLineadeProducto
(especif,cant)
:Venta
1.1:crear()
3.1:crear(especif,cant)
3.2:agregar(vli)
Vli:Ventas
LineadeProducto
2.1:especif:=encontrar(cup)
:Especificacion
deProducto
:VentasLinea
deProducto
Mensaje dirigido
al propio objeto
colección
María Eugenia Valencia
Dpto. Ciencias de la Computación
Diagrama de colaboración terminarVenta
seTermina()
{
estaTerminada:=verdadero
}
terminarVenta( )
seTermina( )
:TPDV
Según controlador
:Venta
Según experto
María Eugenia Valencia
Dpto. Ciencias de la Computación
Diagrama de colaboración total de Venta
No todo diagrama de colaboración comienza con un mensaje de eventos
del sistema; puede empezar con cualquier mensaje cuyas interacciones
desee mostrar el diseñador.
1*:[para cada]vli:=siguiente()
tot:=total( )
:VentasLinea
deProducto
2:st:=subtotal()
sli:Ventas
LineadeProducto
:Venta
2.1: pre:=pric()
Según Experto
Según Experto
EspecifPro
EspecificaciondeProducto
María Eugenia Valencia
Dpto. Ciencias de la Computación
Diagrama de colaboración efectuarPago
Según Controlador
efectuarPago(efectivoOfrecido)
:TPDV
1:efectuarPago(efectivoOfrecido)
:Venta
1.1:crear(efectivoOfrecido)
2:agregarVenta(v)
:Tienda
Según Experto
Según Creador,
Bajo Acoplamiento
:Pago
2.1:agregar(v)
:VentasLinea
deProducto
María Eugenia Valencia
Dpto. Ciencias de la Computación
Diagrama de colaboración iniciar
• Se recomienda hacerlo al final, después de considerar el
resto de operaciones del sistema.
• Se deben conocer los contextos donde puede ocurrir la
inicialización.
• La forma como comienza una aplicación y como se
inicializa dependen del lenguaje de programación y del
sistema operativo.
• Una forma común de diseño es crear, al final, un objeto
inicial del dominio: el primero del dominio del problema
que generamos.
• Su método de inicialización (ej. Constructor de java) es
el encargado de producir el resto de objetos del
dominio del problema e inicializarlos.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Interpretación de la operación del sistema
iniciar
1. En un diagrama de colaboración, envíe un mensaje crear()
para producir el objeto inicial del dominio.
2. (opcional) Si el objeto inicial va a asumir el control del
proceso, en un segundo diagrama de colaboración envíele
un mensaje ejecutar (u otro equivalente).
María Eugenia Valencia
Dpto. Ciencias de la Computación
Elección del objeto inicial del dominio
Escoja como objeto inicial del dominio:
 Una clase que represente todo el sistema de información
lógico.
 Una clase que represente íntegramente el negocio u
organización.
En la aplicación del punto de venta, entre las decisiones
razonables acerca del objeto inicial se encuentran:
Todo el Sistema de
información lógico
TPDV, SistemaInfor-
Negocio u organización
global
Tienda
macionalMenudeo
María Eugenia Valencia
Dpto. Ciencias de la Computación
El diagrama de colaboración guardar-crear
Transmita una referencia a
CatalogodeProductos y de aquí
a TPDV, de modo que sea
permanentemente visible a éste.
crear()
:Tienda
2:crear(cp)
:TPDV
Según Creador
1:crear()
cp:
CatalogodeProductos
1.1:crear()
1.2.2*:agregar(ep)
:Especificacion
deProducto
1.2.1*:crear(cup,precio,descripcion)
1.2: cargarEspecifPro()
El asterisco en el número de
secuencia indica que el mensaje
ocurre en la sección de manera
repetida o iterativa.
ep:
EspecificaciondeProducto
María Eugenia Valencia
Dpto. Ciencias de la Computación
Cómo conectar la capa de presentación y la
de dominio
1:crear()
crear()
:TPDVApplet
2:t:=obtenerTPDV():TPDV
tienda:Tienda
María Eugenia Valencia
Dpto. Ciencias de la Computación
Cómo conectar la capa de presentación y la
de dominio
Oprime botón
enIntroducirProducto()
Capa de
presentación
Evento del sistema
:TPDVApplet
1:IntroducirProducto(cup,cant)
Capa del
dominio
tpdv:TPDV
María Eugenia Valencia
Dpto. Ciencias de la Computación
Cómo conectar la capa de presentación y la
de dominio
Oprime botón
enIntroducirProducto()
Capa de
presentación
3:t:=total():Flotante
:TPDVApplet
1:IntroducirProducto(cup,cant)
Capa del
dominio
2:[no venta] venta:=obtenerVenta():Venta
tpdv:TPDV
venta:Venta
María Eugenia Valencia
Dpto. Ciencias de la Computación
Diagramas de clases del diseño
Su preparación exige crear antes:
 Diagramas de interacción. De ellos se identifican las
clases de software que intervienen en la solución y sus
métodos.
 Modelo conceptual: a partir de él se agregan detalles a la
definición de las clases.
Los diagramas de clases se pueden crear al mismo tiempo
que los diagramas de interacción.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Ejemplo de un diagrama de clases de diseño
Casilla de tres secciones
para la definición de clase
Navegabilidad
Venta
TPDV
introducirProducto()
Captura
1
Fecha
1 estaTerminada:Booleano
hora
hacerLíneadeProducto()
Métodos
Información sobre tipos
María Eugenia Valencia
Dpto. Ciencias de la Computación
Diagramas de clases del diseño
Describe gráficamente las especificaciones de las clases de
software y de las interfaces (por ejemplo, las de Java) en
una aplicación.
Contiene la siguiente información:
 Clases, asociaciones y atributos.
 Interfaces, con sus operaciones y constantes.
 Métodos.
 Información sobre los tipos de los atributos.
 Navegabilidad.
 Dependencias.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Diagramas de clases del diseño
Para elaborar un diagrama de clases orientado al diseño:
1. Identifique todas las clases que participan en la solución
del software. Para ello analice los diagramas de
interacción.
2. Dibújelas en un diagrama de clases.
3. Duplique los atributos provenientes de los conceptos
asociados del modelo conceptual.
4. Agregue los nombres de los métodos analizando los
diagramas de interacción.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Diagramas de clases del diseño
5. Incorpore la información sobre los tipos a los atributos y
a los métodos.
6. Agregue las asociaciones necesarias para dar soporte a la
visibilidad requerida de los atributos.
7. Agregue flechas de navegabilidad a las asociaciones para
indicar la dirección de la visibilidad de los atributos.
8. Agregue las líneas de relaciones de dependencia para
indicar la visibilidad no relacionada con los atributos.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Comparación entre el Modelo Conceptual
y los Diagramas de Clases de Diseño
Venta
TPDV
1
Modelo Conceptual
Captura
1
fecha
estaTerminada:Booleano
hora
Concepto; abstracción
TPDV
Diagrama de clases
del diseño
Venta
Captura
terminarVenta()
introducirProducto()
efectuarPago()
1
fecha
1 estaTerminada:Booleano
hora
hacerLineadeProducto()
Componente del software
María Eugenia Valencia
Dpto. Ciencias de la Computación
Creación de Diagramas de Clases de Diseño
para el punto de venta
1. Identificar las clases de software y su ilustración. (Se encuentran
examinando todos los diagramas de interacción, luego se dibujan los
diagramas de clase correspondientes y se incluyen los atributos que
aparecen en el modelo conceptual).
TPDV
CatalogodeProductos
cantidad
Tienda
direccion
nombre
Venta
fecha
estaTerminada
hora
EspecificaciondeProducto
descripcion
precio
CUP
VentasLineadeProducto
cantidad
Pago
monto
María Eugenia Valencia
Dpto. Ciencias de la Computación
Creación de Diagramas de Clases de Diseño
para el punto de venta
2. Agregar los nombres de los métodos. Estos se sacan de los
mensajes de los diagramas de colaboración. Por cada mensaje
enviado a la clase X, esta deberá definir un método con el mismo
nombre.
Venta
fecha
estaTerminada
hora
hacerLineadeProducto()
:TPDV
3:hacerLineadeProductos(especif,cant)
:Venta
María Eugenia Valencia
Dpto. Ciencias de la Computación
Creación de Diagramas de Clases de Diseño
para el punto de venta
TPDV
terminarVenta()
introducirProducto()
efectuarPago()
Tienda
direccion
nombre
agregarVenta()
CatalogodeProductos
especificación()
Venta
fecha
estaTerminada
hora
seTermina()
hacerLineadeProducto()
efectuarPago()
total()
EspecificaciondeProducto
descripcion
precio
CUP
VentasLineadeProducto
cantidad
subtotal()
Pago
monto
María Eugenia Valencia
Dpto. Ciencias de la Computación
Aspectos especiales referentes a los
nombres de los métodos
El mensaje crear: En UML representa instanciación e
inicialización.
En C++  Asignación automática o en el almacenamiento libre
con New llamada al constructor.
En JavaInvocar New seguido de la llamada a un
constructor.
Se acostumbra omitir los métodos relacionados con la
creación y los constructores procedentes del diagrama de
clases del diseño.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Aspectos especiales referentes a los
nombres de los métodos
Métodos de Acceso: Son los que recuperan o los que
establecen el valor de los atributos. Una estructura común
cuenta con una forma de tener acceso y de establecer el valor
para cada atributo y declara privados todos los atributos
(obliga al encapsulamiento).
Estos métodos normalmente NO se incluyen en la descripción
del diagrama de clase (Ejemplo: El método obtenerPrecio no se
muestra auque esta presente).
María Eugenia Valencia
Dpto. Ciencias de la Computación
Aspectos especiales referentes a los
nombres de los métodos
Mensajes a Multiobjetos: Un mensaje a un multiobjeto se
interpreta como destinado al objeto contenedor/colección
2:especif:=especificacion(cup)
:Catalogo
deProductos
2.1:especif:=encontrar(cup)
:Especificacion
deProducto
El mensaje encontrar dirigido a
un multiobjeto se interpreta
como destinado a un objeto
contenedor/colección; ejemplo:
Una tabla Hashtable, un Map de
C++ o un Dictionary de
Smalltalk.
El método encontrar NO forma parte de la clase
EspecificacióndeProducto, sino más bien de la definición de la
tabla Hastable o Dictionary.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Aspectos especiales referentes a los
nombres de los métodos
Las clases contenedor/colección (como java.util.Vector y
java.util.Hashtable) son clases predefinidas de las bibliotecas
y no se acostumbra mostrarlas de forma explícita en el
diagrama de clases porque aportan muy poca información nueva
e incorporan ruido.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Creación de Diagramas de Clases de Diseño
para el punto de venta
3. Agregar más información sobre los tipos. Es opcional
mostrar el tipo de los atributos, de los parametros del
método y de los valores de devolver método. Se recomienda
mostrarlo cuando se usan herramientas CASE con
generación automática de código porque ellas requieren
todos los detalles
María Eugenia Valencia
Dpto. Ciencias de la Computación
Creación de Diagramas de Clases de Diseño
para el punto de venta
Incorporación de información sobre los tipos.
CatalogodeProductos
TPDV
terminarVenta()
introducirProducto(cup:Entero,
cant:Entero)
efectuarPago(efectivoOfrecido:
Cantidad)
especificacion(cup:Entero):
EspecificaciondeProducto
EspecificaciondeProducto
descripcion:Texto
precio:Cantidad
cup:CUP
VentasLineadeProducto
cantidad:Entero
Tienda
direccion:Direccion
nombre:Texto
agregarVenta(v.Venta)
Venta
fecha:Fecha
estaTerminada:Booleano
hora:Hora
seTermina()
hacerLineadeProducto(especif:
EspecificaciondeProd,cant:Entero)
efectuarPago(efectivoOfrecido: Cantidad)
total():Cantidad
subtotal():Cantidad
Pago
monto:Cantidad
María Eugenia Valencia
Dpto. Ciencias de la Computación
Creación de Diagramas de Clases de Diseño
para el punto de venta
4. Incorporar Asociaciones y Navegabilidad.
La Navegabilidad indica la posibilidad de navegar
unidireccionalmente en una asociación, desde los objetos
fuente hasta la clase destino. También significa visibilidad
(generalmente de atributos).
La flecha de navegabilidad indica
que los objetos TPDV están conectados
unidireccionalmente con los objetos Venta.
La clase TPDV probablemente tenga
un atributo que apunta a un objeto
Venta.
Venta
TPDV
fecha
estaTerminada
hora
Captura
terminarVenta()
introducirProducto()
efectuarPago()
1
1
seTermina()
hacerLineadeProducto()
efectuarPago()
total()
María Eugenia Valencia
Dpto. Ciencias de la Computación
Creación de Diagramas de Clases de Diseño
para el punto de venta
En los diagramas de clase orientados al diseño, la mayoría de
las asociaciones deberían completarse con las flechas
necesarias de navegación.
La visibilidad y las asociaciones requeridas entre las clases se
indican con los diagramas de interacción. Es necesario definir
una asociación con una flecha de navegabilidad A a B en las
siguientes situaciones comunes:
• A envía un mensaje a B.
• A crea una instancia B.
• A necesita mantener una conexión con B.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Asociaciones con símbolos de navegabilidad
Usa
Tienda
1
direccion:Direccion
nombre:Texto
1
1
EspecificaciondeProducto
CatalogodeProductos
Contiene
agregarVenta( )
1
Mira-en
1
especificacion( )
1
1..*
descripcion:Texto
precio:Cantidad
cup:CUP
Alberga
VentasLineadeProducto
1
1
TPDV
Captura
1
terminarVenta( )
introducirProducto( )
efectuarPago( )
Registros-terminados
1
Venta
fecha:Fecha
estaTerminada:Booleano
hora:Hora
cantidad:Entero
Contiene
1
1..*
subtotal( )
seTermina( )
hacerLineadeProducto( )
efectuarPago( )
total( )
*
1
Pago
Pagado-por
1
monto:Cantidad
María Eugenia Valencia
Dpto. Ciencias de la Computación
Creación de Diagramas de Clases de Diseño
para el punto de venta
5. Relaciones de Dependencia.
El UML incluye una relación general de dependencia la cual
indica que un elemento (clase, caso de uso, etc.) conoce la
existencia de otro. Se denota con una línea punteada y con
flecha.
En los diagramas de clase, la relación de dependencia describe
la visibilidad de un parámetro global o visibilidad declarada
localmente.
María Eugenia Valencia
Dpto. Ciencias de la Computación
Creación de Diagramas de Clases de Diseño
para el punto de venta
Usa
Tienda
1
direccion:Direccion
nombre:Texto
1
1
EspecificaciondeProducto
CatalogodeProductos
Contiene
agregarVenta( )
1
1
Mira-en
especificacion( )
1
1..*
descripcion:Texto
precio:Cantidad
cup:CUP
Alberga
1
1
TPDV
terminarVenta( )
introducirProducto( ) 1
efectuarPago( )
Registros-terminados
Captura
1
*
VentasLineadeProducto
Venta
fecha:Fecha
estaTerminada:Booleano
hora:Hora
seTermina( )
hacerLineadeProducto( )
efectuarPago( )
total( )
Dependencia de TPDV que conoce sobre
EspecificaciondeProducto.
Se recomienda cuando existe un parámetro y
visibilidad global o declarada localmente.
cantidad:Entero
Contiene
1
1..*
subtotal( )
Pago
1
Pagado-por
1
monto:Cantidad
María Eugenia Valencia
Dpto. Ciencias de la Computación
Notación de los detalles de los miembros
de la clase
Nombre de la clase
Java.awt.Font
atributo
atributo:tipo
atributo:tipo=valor inicial
atributodeClase
/atributoDerivado
...
plain:Integer=0
bold:Integer=1
name:String
style:Integer=0
...
metodo1()
metodo2(lista de parametros)
:tipo de retorno
metodoAbstracto()
+metodoPrivado()
#metodoProtegido()
metododeClase()
...
+getFont(name:String):Font
+getName():String
...
Java.awt.Toolkit
#createButton(target:Button):ButtonPeer
...
+getColorModel():ColorModel
...
María Eugenia Valencia
Dpto. Ciencias de la Computación
Notación de los detalles de los miembros
de la clase
TPDV
+terminarVenta()
+introducirProducto()
+efectuarPago()
CatalogodeProductos
+especificacion()
EspecificaciondeProducto
descripcion
precio
cup
Venta
Tienda
direccion
nombre
+agregarVenta()
fecha
estaTerminada
hora
+seTermina()
+hacerLineadeProducto()
+efectuarPago()
+total()
VentasLineadeProducto
cantidad
+subtotal()
Pago
monto
María Eugenia Valencia
Dpto. Ciencias de la Computación
Descargar

Venta - Escuela de Ingeniería de Sistemas y Computación