María Eugenia Valencia Dpto. Ciencias de la Computación Patrones para asignar responsabilidades...
-
Upload
teresa-rio-silva -
Category
Documents
-
view
220 -
download
0
Transcript of María Eugenia Valencia Dpto. Ciencias de la Computación Patrones para asignar responsabilidades...
María Eugenia ValenciaDpto. Ciencias de la Computación
Patrones para asignar Patrones para asignar responsabilidadesresponsabilidades
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 ValenciaDpto. Ciencias de la Computación
Patrones para asignar Patrones para asignar responsabilidadesresponsabilidades
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 ValenciaDpto. Ciencias de la Computación
Patrones para asignar Patrones para asignar responsabilidadesresponsabilidades
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 ValenciaDpto. Ciencias de la Computación
Las responsabilidades y los diagramas Las responsabilidades y los diagramas de interacciónde interacción
:Ventaimprimir( )
Significa que los objetos Venta tienen la responsabilidadde imprimirse en ellos mismos
Vli:VentasLineadeProducto
2: Imprimir( )
1*:[en cada] vli:= siguiente( )
:VentasLineadeProducto
María Eugenia ValenciaDpto. Ciencias de la Computación
PatrónPatró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 ValenciaDpto. Ciencias de la Computación
GRASPGRASP(General Responsability Asignment Software (General Responsability Asignment Software
Patterns o Patrones Generales de Software para Patterns o Patrones Generales de Software para Asignar Responsabilidades) 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:ExpertoCreadorAlta cohesiónBajo AcoplamientoControlador
María Eugenia ValenciaDpto. Ciencias de la Computación
Notación UML para los diagramas de Notación UML para los diagramas de claseclase
NombredeClase
Atributos
Métodos
La tercera sección estádestinada a los metodos
Las clases de software muestran los nombres de los
métodos.
María Eugenia ValenciaDpto. Ciencias de la Computación
Patrón expertoPatró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 ValenciaDpto. Ciencias de la Computación
Patrón expertoPatrón expertoEjemplo:
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 ValenciaDpto. Ciencias de la Computación
Patrón expertoPatrón expertoEsto 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?
:Ventat:= total( ) 1*:[en cada] vli:=
siguiente( )
Vli:VentasLineadeProducto
:VentasLineadeProducto
:EspecificacióndeProducto
2:st:=subtotal( )
2.1:p:=precio( )
Nuevo método
VentaFechahora
Total( )
VentasLineadeProductocantidad
subtotal( )
EspecificacióndeProducto
precio( )
DescripciónprecioCUP
María Eugenia ValenciaDpto. Ciencias de la Computación
Patrón expertoPatró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í:
Responsabilidad
Conoce el total de la venta.
Conoce el subtotal de la línea deproducto.Conoce el precio del producto.
Clase
Venta
VentasLineadeProducto
EspecificaciondeProducto
María Eugenia ValenciaDpto. Ciencias de la Computación
Patrón creadorPatrón creadorSolució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 unanueva instancia de alguna clase?
María Eugenia ValenciaDpto. Ciencias de la Computación
Patrón creadorPatró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 ValenciaDpto. Ciencias de la Computación
Patrón creadorPatrón creador
Creación de un objeto VentasLineadeProducto.
:Venta
:VentasLineadeProducto
hacerLineadeProducto(cantidad)
1:crear(cantidad)
Nuevo método
Venta
Fechahora
hacerLineadeProducto()total()
Esta asignación de responsabilidades requiere definir en
Venta un método de hacerLineadeProducto.
María Eugenia ValenciaDpto. Ciencias de la Computación
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.
Patrón bajo acoplamientoPatrón bajo acoplamiento
María Eugenia ValenciaDpto. Ciencias de la Computación
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.
Patrón bajo acoplamientoPatrón bajo acoplamiento
María Eugenia ValenciaDpto. Ciencias de la Computación
Patrón bajo acoplamientoPatró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 ValenciaDpto. Ciencias de la Computación
Patrón bajo acoplamientoPatrón bajo acoplamiento
TPDV crea Pago.
:TPDVefectuarPago( )
p:Pago
:Venta
1:crear( )
2:agregarPago(p )
Venta crea Pago
:TPDVefectuarPago( )
:Venta
:Pago
1:efectuarPago( )
1.1:crean( )
María Eugenia ValenciaDpto. Ciencias de la Computación
Patrón alta cohesiónPatrón alta cohesiónSolució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 ValenciaDpto. Ciencias de la Computación
Patrón alta cohesiónPatrón alta cohesiónUna 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 difíciles de comprender. Son difíciles de reutilizar. Son difíciles de conservar. Son 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 ValenciaDpto. Ciencias de la Computación
Patrón controladorPatrón controlador
Solución: Asignar la responsabilidad del manejo de un
mensaje de los eventos de un sistema a una clase querepresente 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 ValenciaDpto. Ciencias de la Computación
Patrón controladorPatró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 ValenciaDpto. Ciencias de la Computación
Patrón controladorPatró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 ValenciaDpto. Ciencias de la Computación
Patrón controladorPatrón controladorUn controlador es un objeto de interfaz no destinada
alusuario que se encarga de manejar un evento delsistema.
Ejemplo:En la aplicación del punto de venta se dan variasoperaciones del sistema, como se advierte en la siguientefigura:
Sistema
terminarVenta()introducirProducto()efectuarPago()
María Eugenia ValenciaDpto. Ciencias de la Computación
Patrón controladorPatrón controladorDurante el análisis del comportamiento del sistema, sus
operaciones sonasignadas al tipo Sistema, para indicar que son operaciones del
sistema.Pero ello no significa que una clase llamada Sistema las ejecute
duranteel diseño.
Más bien, durante el diseño, a la clase Controlador se le asigna laresponsabilidad de las operaciones del sistema.¿Quién debería ser el controlador de eventos sistémicoscomo introducirProducto y terminarVenta?
:???introducirProducto(cup,cantidad)
María Eugenia ValenciaDpto. Ciencias de la Computación
Diseñando con objetos y patronesDiseñ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 ValenciaDpto. Ciencias de la Computación
Diagrama de colaboración Diagrama de colaboración introducirProductointroducirProducto
:TPDV
:CatalogodeProductos
:Venta
Vli:VentasLineadeProducto
:VentasLineadeProducto
:EspecificaciondeProducto
introducirProducto(cup,cant)
1.1:crear()2:especif:=especificacion(cup)
2.1:especif:=encontrar(cup)
3:hacerLineadeProducto(especif,cant)
3.1:crear(especif,cant)
3.2:agregar(vli)
1:[nueva venta]crear()Según creador
Según experto
Mensaje dirigidoal propio objetocolección
María Eugenia ValenciaDpto. Ciencias de la Computación
Diagrama de colaboración Diagrama de colaboración terminarVentaterminarVenta
:TPDV :Venta
terminarVenta( ) seTermina( )
Según controlador Según experto
seTermina(){ estaTerminada:=verdadero}
María Eugenia ValenciaDpto. Ciencias de la Computación
Diagrama de colaboración Diagrama de colaboración total de total de VentaVenta
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.
:Venta sli:VentasLineadeProducto
EspecifProEspecificaciondeProducto
:VentasLineadeProducto
tot:=total( )
1*:[para cada]vli:=siguiente()
2:st:=subtotal()
2.1: pre:=pric()
Según ExpertoSegún Experto
María Eugenia ValenciaDpto. Ciencias de la Computación
Diagrama de colaboración Diagrama de colaboración efectuarPagoefectuarPago
:TPDV :Venta
:Pago:Tienda
:VentasLineadeProducto
efectuarPago(efectivoOfrecido) 1:efectuarPago(efectivoOfrecido)
1.1:crear(efectivoOfrecido)
Según ControladorSegún Creador,Bajo Acoplamiento
2:agregarVenta(v)
2.1:agregar(v)
Según Experto
María Eugenia ValenciaDpto. Ciencias de la Computación
Diagrama de colaboración Diagrama de colaboración iniciariniciar
• 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 ValenciaDpto. Ciencias de la Computación
Interpretación de la operación del Interpretación de la operación del sistema iniciarsistema 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 ValenciaDpto. Ciencias de la Computación
Elección del objeto inicial del dominioElecció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 TPDV, SistemaInfor-información lógico macionalMenudeo
Negocio u organización Tiendaglobal
María Eugenia ValenciaDpto. Ciencias de la Computación
El diagrama de colaboración El diagrama de colaboración guardar-guardar-crearcrear
:Tienda :TPDV
:EspecificaciondeProducto
ep:EspecificaciondeProducto
cp:CatalogodeProductos
Transmita una referencia aCatalogodeProductos y de aquía TPDV, de modo que seapermanentemente visible a éste.
El asterisco en el número desecuencia indica que el mensaje ocurre en la sección de manerarepetida o iterativa.
crear() 2:crear(cp)
1:crear() 1.1:crear()
1.2.2*:agregar(ep)
1.2.1*:crear(cup,precio,descripcion)1.2: cargarEspecifPro()
1.2.1*:crear(cup,precio,descripcion)
Según Creador
María Eugenia ValenciaDpto. Ciencias de la Computación
Cómo conectar la capa de presentación Cómo conectar la capa de presentación y la de dominioy la de dominio
:TPDVAppletcrear()
tienda:Tienda2:t:=obtenerTPDV():TPDV
1:crear()
María Eugenia ValenciaDpto. Ciencias de la Computación
Cómo conectar la capa de presentación Cómo conectar la capa de presentación y la de dominioy la de dominio
:TPDVApplet
tpdv:TPDV
1:IntroducirProducto(cup,cant)
enIntroducirProducto()
Capa depresentación
Capa deldominio
Evento del sistema
Oprime botón
María Eugenia ValenciaDpto. Ciencias de la Computación
Cómo conectar la capa de presentación Cómo conectar la capa de presentación y la de dominioy la de dominio
:TPDVApplet
tpdv:TPDV
1:IntroducirProducto(cup,cant)
enIntroducirProducto()
Capa depresentación
Capa deldominio
2:[no venta] venta:=obtenerVenta():Venta
venta:Venta
3:t:=total():Flotante
Oprime botón
María Eugenia ValenciaDpto. Ciencias de la Computación
Diagramas de clases del diseñoDiagramas 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 ValenciaDpto. Ciencias de la Computación
Ejemplo de un diagrama de clases de Ejemplo de un diagrama de clases de diseñodiseño
TPDV
introducirProducto()
Venta
FechaestaTerminada:Booleanohora
hacerLíneadeProducto()
Captura
1 1
Casilla de tres seccionespara la definición de clase Navegabilidad
Métodos Información sobre tipos
María Eugenia ValenciaDpto. Ciencias de la Computación
Diagramas de clases del diseñoDiagramas 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 ValenciaDpto. Ciencias de la Computación
Diagramas de clases del diseñoDiagramas 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 ValenciaDpto. Ciencias de la Computación
Diagramas de clases del diseñoDiagramas 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 ValenciaDpto. Ciencias de la Computación
Comparación entre el Modelo Comparación entre el Modelo ConceptualConceptual
y los Diagramas de Clases de Diseñoy los Diagramas de Clases de DiseñoTPDV
CapturaModelo Conceptual
Venta
fechaestaTerminada:Booleanohora
1 1
Concepto; abstracción
Diagrama de clasesdel diseño
TPDV
terminarVenta()introducirProducto()efectuarPago()
Venta
fechaestaTerminada:Booleanohora
hacerLineadeProducto()
Captura
1 1
Componente del software
María Eugenia ValenciaDpto. Ciencias de la Computación
Creación de Diagramas de Clases de Creación de Diagramas de Clases de DiseñoDiseño
para el punto de ventapara el punto de venta1. 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
Tiendadireccionnombre
CatalogodeProductos
cantidad
EspecificaciondeProductodescripcionprecioCUP
VentafechaestaTerminadahora
VentasLineadeProducto
cantidad
Pagomonto
María Eugenia ValenciaDpto. Ciencias de la Computación
Creación de Diagramas de Clases de Creación de Diagramas de Clases de DiseñoDiseño
para el punto de ventapara el punto de venta2. 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.
:TPDV :Venta3:hacerLineadeProductos(especif,cant)
VentafechaestaTerminada
hora
hacerLineadeProducto()
María Eugenia ValenciaDpto. Ciencias de la Computación
Creación de Diagramas de Clases de Creación de Diagramas de Clases de DiseñoDiseño
para el punto de ventapara el punto de venta TPDV
terminarVenta()introducirProducto()efectuarPago()
TiendadireccionnombreagregarVenta()
CatalogodeProductos
especificación()
EspecificaciondeProductodescripcionprecioCUP
VentafechaestaTerminadahoraseTermina()hacerLineadeProducto()efectuarPago()total()
VentasLineadeProducto
cantidad
subtotal()
Pagomonto
María Eugenia ValenciaDpto. Ciencias de la Computación
Aspectos especiales referentes a los Aspectos especiales referentes a los nombres de los métodosnombres de los métodos
El mensaje crear: En UML representa instanciación einicialización.En C++ Asignación automática o en el
almacenamiento libre con New llamada al constructor.
En JavaInvocar New seguido de la llamada a un constructor.
Se acostumbra omitir los métodos relacionados con lacreación y los constructores procedentes del diagrama
declases del diseño.
María Eugenia ValenciaDpto. Ciencias de la Computación
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).
Aspectos especiales referentes a los Aspectos especiales referentes a los nombres de los métodosnombres de los métodos
María Eugenia ValenciaDpto. Ciencias de la Computación
Mensajes a Multiobjetos: Un mensaje a un multiobjeto se interpreta como destinado al objeto contenedor/colección
Aspectos especiales referentes a los Aspectos especiales referentes a los nombres de los métodosnombres de los métodos
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.
:CatalogodeProductos
:EspecificaciondeProducto
2:especif:=especificacion(cup)
2.1:especif:=encontrar(cup)
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 ValenciaDpto. Ciencias de la Computación
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.
Aspectos especiales referentes a los Aspectos especiales referentes a los nombres de los métodosnombres de los métodos
María Eugenia ValenciaDpto. Ciencias de la Computación
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
Creación de Diagramas de Clases de Creación de Diagramas de Clases de DiseñoDiseño
para el punto de ventapara el punto de venta
María Eugenia ValenciaDpto. Ciencias de la Computación
TPDV
terminarVenta()introducirProducto(cup:Entero,cant:Entero)efectuarPago(efectivoOfrecido:Cantidad)
Tienda
direccion:Direccionnombre:Texto
agregarVenta(v.Venta)
CatalogodeProductos
especificacion(cup:Entero):EspecificaciondeProducto
EspecificaciondeProducto
descripcion:Textoprecio:Cantidadcup:CUP
Ventafecha:FechaestaTerminada:Booleanohora:Hora
seTermina()hacerLineadeProducto(especif:EspecificaciondeProd,cant:Entero)efectuarPago(efectivoOfrecido: Cantidad)total():Cantidad
VentasLineadeProducto
cantidad:Entero
subtotal():Cantidad
Pago
monto:Cantidad
Incorporación de información sobre los tipos.
Creación de Diagramas de Clases de Creación de Diagramas de Clases de DiseñoDiseño
para el punto de ventapara el punto de venta
María Eugenia ValenciaDpto. Ciencias de la Computación
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).
Creación de Diagramas de Clases de Creación de Diagramas de Clases de DiseñoDiseño
para el punto de ventapara el punto de venta
La flecha de navegabilidad indica que los objetos TPDV están conectadosunidireccionalmente con los objetos Venta.
TPDV
terminarVenta()introducirProducto()efectuarPago()
Venta
fechaestaTerminadahora
seTermina()hacerLineadeProducto()efectuarPago()total()
Captura
1 1
La clase TPDV probablemente tengaun atributo que apunta a un objetoVenta.
María Eugenia ValenciaDpto. Ciencias de la Computación
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.
Creación de Diagramas de Clases de Creación de Diagramas de Clases de DiseñoDiseño
para el punto de ventapara el punto de venta
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 ValenciaDpto. Ciencias de la Computación
Asociaciones con símbolos de Asociaciones con símbolos de navegabilidadnavegabilidad
Tienda
direccion:Direccionnombre:Texto
agregarVenta( )
TPDV
terminarVenta( )introducirProducto( )efectuarPago( )
CatalogodeProductos
especificacion( )
EspecificaciondeProducto
descripcion:Textoprecio:Cantidadcup:CUP
Ventafecha:FechaestaTerminada:Booleanohora:Hora
seTermina( )hacerLineadeProducto( )efectuarPago( )total( )
VentasLineadeProducto
cantidad:Entero
subtotal( )
Pago
monto:Cantidad
1
1
1 1
1
1
1
1 1
1 1
1
1 1..*
1..*
*Registros-terminados
Captura Contiene
Contiene
Usa
Alberga
Mira-en
Pagado-por
María Eugenia ValenciaDpto. Ciencias de la Computación
Creación de Diagramas de Clases de Creación de Diagramas de Clases de DiseñoDiseño
para el punto de ventapara el punto de venta5. 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 ValenciaDpto. Ciencias de la Computación
Tienda
direccion:Direccionnombre:Texto
agregarVenta( )
TPDV
terminarVenta( )introducirProducto( )efectuarPago( )
CatalogodeProductos
especificacion( )
EspecificaciondeProducto
descripcion:Textoprecio:Cantidadcup:CUP
Ventafecha:FechaestaTerminada:Booleanohora:Hora
seTermina( )hacerLineadeProducto( )efectuarPago( )total( )
VentasLineadeProducto
cantidad:Entero
subtotal( )
Pago
monto:Cantidad
1
1
1 1
1
1
1
1 1
1 1
1
1 1..*
1..*
*Registros-terminados
Captura Contiene
Contiene
Usa
Alberga
Mira-en
Pagado-porDependencia de TPDV que conoce sobre EspecificaciondeProducto.Se recomienda cuando existe un parámetro y visibilidad global o declarada localmente.
Creación de Diagramas de Clases de Creación de Diagramas de Clases de DiseñoDiseño
para el punto de ventapara el punto de venta
María Eugenia ValenciaDpto. Ciencias de la Computación
Notación de los detalles de los Notación de los detalles de los miembros miembros de la clasede la claseNombre de la clase
atributoatributo:tipoatributo:tipo=valor inicialatributodeClase/atributoDerivado...
metodo1()metodo2(lista de parametros):tipo de retornometodoAbstracto()+metodoPrivado()#metodoProtegido()metododeClase()...
Java.awt.Font
plain:Integer=0bold:Integer=1name:Stringstyle:Integer=0...
+getFont(name:String):Font+getName():String...
Java.awt.Toolkit
#createButton(target:Button):ButtonPeer...+getColorModel():ColorModel...
María Eugenia ValenciaDpto. Ciencias de la Computación
Notación de los detalles de los Notación de los detalles de los miembros miembros de la clasede la clase
TPDV
+terminarVenta()+introducirProducto()+efectuarPago()
Tienda
direccionnombre
+agregarVenta()
CatalogodeProductos
+especificacion()
EspecificaciondeProducto
descripcionpreciocup
VentafechaestaTerminadahora
+seTermina()+hacerLineadeProducto()+efectuarPago()+total()
VentasLineadeProducto
cantidad
+subtotal()
Pago
monto