Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2022A
1
19.3 Modelo conceptual del punto de venta
19.4 Diagramas de colaboración para la aplicación
TPDV
En esta sección estudiaremos las decisiones y
selecciones hechas al preparar un diagrama de
colaboración a partir de los patrones GRASP. Nuestras
explicaciones son deliberadamente pormenorizadas,
pues queremos demostrar que no se da una adhesión
irreflexiva cuando se crean diagramas de colaboración
bien diseñados: su construcción se basa mas bien en
principios justificables.
19.5 El diagrama de colaboración:
introducirProducto
La operación del sistema introducirProducto
ocurre cuando un cajero captura el CUP
(código universal de producto) y la cantidad
del objeto a comprar. A continuación se
incluye íntegramente un contrato; recuerde
el lector que se trata de una estimación
inicial y quizá no sea completa:
Contrato
Nombre IntroducirProducto(cup:numero
cantidad:entero)
Capturar (registrar) la venta de un producto y agregarla
Responsabilidades: a la venta. Desplegar la descripción del producto y su
precio.
El sistema conoce el CUP.
Precondiciones:
POSCONDICIONES:
▪Si se trata de una nueva venta, se crea una Venta (creación de instancia).
▪Si se trata de una nueva venta, la nueva Venta fue asociada a TPDV ( formación de
asociación).
▪Se creó una instancia VentasLineadeProducto (creación de instancia).
▪Se asocio la instancia VentasLineadeProducto a la instancia Venta (formación de
asociación).
▪Se asignó cantidad a VentasLineadeProducto.cantidad (modificación de atributo),
▪Se asoció la instancia VentaLineadeProducto a EspecificaciondeProducto, basado
esto en la correspondencia del CUP (formación de asociación).
19.5.1 Selección de la clase Controlador
Nuestra primera decisión se referirá a la elección del
controlador que se encargue del mensaje de las
operaciones del sistema introducirProducto. Desde el
punto de vista de este patrón, disponemos de las
siguientes opciones:
Representar todo el sistema (controlador de TPDV, o una clase
la fachada) nueva como
SistemaAlMenudeo
Representar la empresa o la organización Tienda
total (controlador de fachada)
IntroducirProducto(cup,cant) 3:hacerLineadeProducto(especif,cant)
:TPDV :Venta
2:especif:=especificación(cup)
1.1:crear() 3.1: crearespecif,cant()
:catalogo-
Según Experto 3.2:agregar(vli)
deproductos
vli:VentasLíneadeProducto
2.1:especif:=encontrar(cup)
descripción: Texto
Precio: Cantidad
cup: CUP
1 0..*
accesaDatos()
Aloja
1
1 Describe
Venta
TPDV *
fecha: Fecha VentasLineadeProductos
captura Contiene
estaTerminada: Booleano
cantidad: Entero
introducirProducto() 1 hora: Hora 1 1..*
1
crearVLP()
introducirProducto()
asigdatosVLP()
crearVenta()
asigDatosVenta()
1
Pagada-por Pago
monto: Cantidad
1
Diagrama de CLASES
19.6 DIAGRAMA DE COLABORACIÓN
TerminarVenta
La operación sistémica terminarVenta
ocurre cuando un cajero oprime un botón
para indicar la conclusión de una venta. He
aquí el contrato íntegro:
contrato
Nombre: terminar venta().
Responsabilidades: Registrar que se terminó de capturar
los artículos de la venta y presentar
visualmente el total de la venta.
Tipo: sistema
Referencias cruzadas: Funciones del sistema: R.1.2
Notas:
Excepciones: Si está efectuándose una venta,
indicar que se cometió un error.
Salida:
Precondiciones: el sistema conoce el CUP.
Poscondiciones:
▪ Se asignó a Venta el valor verdadero (modificación de
atributo)
19.6.1 Elección de la clase Controlador
Nuestra primera decisión se refiere a la asignación de la
responsabilidad del mensaje terminarVenta de la operación
del sistema. Basándonos en el controlador de GRASP,
como lo hicimos con introducirProducto, seguiremos
utilizando TPDV como controlador.
efectuarPago(efectivoOfrecido) 1: efectuarPago(efectivoOfrecido)
:TPDV :Venta
1.1: crearPago(efectivoOfrecido)
1.2: asigdatos(efectivo)
:Pago
19.7.3 Registro de venta
Una vez formulados, los requerimientos estipulan que la
venta debería ser colocada en un regitro histórico o
bitácora.
¿quién asume la responsabilidad de conocer todas las
ventas registradas y de llevar a cabo el registro?
Es lógico que una Tienda conozca todas las ventas
registradas, pues está estrechamente relacionada con sus
finanzas. Entre otras opciones mencionamos la inclusión
de los conceptos clásicos de la contabilidad, como un
LibroMayordeVentas. Es conveniente usar un objeto
LibroMayordeVentas conforme vaya creciendo el diseño y
la Tienda vaya perdiendo cohesión.
19.7.4 Cálculo del saldo
descripción: Texto
Precio: Cantidad
1 0..*
cup: CUP
Aloja
1
1 Describe
Venta
TPDV *
fecha: Fecha VentasLineadeProductos
captura Contiene
estaTerminada: Booleano
cantidad: Entero
efectuarPago() 1 hora: Hora 1 1..*
1
efectuarPago()
1
Pagada-por Pago
monto: Cantidad
1
crearPago()
asigDatos()