You are on page 1of 33

Evolucin Informtica S.A.

Clases de Software del


Mtodo Genrico de Desarrollo de
Sistemas de Informacin
Son modelos de Anlisis y Diseo, principalmente con
base en UML
Comienza desde mapa de procesos y flujograma de
informacin
Clase 2: Despacho por Ventas

MAPA DE PROCESOS
(como parte del Modelo de Negocios)

Proyeccin ventas

Adquisiciones

Ventas

Servicio postventa Macro-

procesos

Segundo Flujograma de
Informacin
RECEPCIN
POR COMPRAS

DESPACHO
POR VENTAS
Procesos
operativos

Devoluciones

Devoluciones

Flujograma : Proceso de Despacho de Productos a Clientes - (Gua Interna de Despacho por Venta )
Encargado
de Despacho

Cliente
3
Nota de 1
Venta

Despachador
(Bodega)

Cajero

Depto. de
Contabilidad

3
Nota de 1
Venta.

Emitir Gua de
Despacho

Nota :
1) Este Flujograma no sigue
todas las reglas ortodoxas
del diseo, sin embargo,
cumple con la funcin de
mostrar la emisin de la
Gua de Despacho en su
contexto.

3
G/D 1
Interna

2
1
G/D
Interna

3
G/D 1
Interna

Nota de 1
Venta.

3
2

G/D 1
Interna

Recibir
Pago

G/D 1
Interna

Nota de 1
Venta

Depto. de
Ventas

G/D 1
Interna

Despachar
Productos
de Bodega

G/D 1
Interna

25/09/2002

Normalmente la firma de
la Gua de Despacho sera en conjunto entre el
Despachador y el Cliente.
(Copias 1 y 2 ).

G/D 2
Interna

Diseo de Clases:
Diagrama de Casos de Uso
(Casos de Uso Bsicos)
Crear Gua Interna de
Recepcin por Compra

Administrador,
Encargado de Recepcin,
Encargado de Despacho...
son roles que juegan las personas
de la Organizacin. ( No necesariamente
son tres personas distintas ).

Encargado
de Recepcin
(Empleado)

Proveedor

Iniciar Sistema de
Bodegas
Cliente
Encargado
de Despacho
(Empleado)

Administrar Sistema ...


Son Casos de Uso Genricos que
en el transcurso del anlisis se desagregaran en otros Casos de Uso

25/09/2002

Crear Gua Interna de


Despacho por Venta

Administrar Sistema de
Bodega de Recepcin

Administrar Sistema de
Bodega de Despacho

Administrador
(Empleado)

Diseo de Clases: Gua de Despacho


Caso de Uso: Crear Gua Interna de
Despacho por Venta ( Productos con registro
persistente )

Comentarios relevantes :
1) Se trata de una transaccin
entre dos entidades, (con Cliente
y Encargado de Despacho).
2) Se trata de una transaccin
que implica una entrega /
recepcin de Productos.
3) Existe un Registro de Clientes .
4) Existe un Registro de Encargados de Despacho (Empleado).
5) Existe un Registro de Productos.
6) Se lleva un registro persistente
de la transaccin

Bibliografa: Esta presentacin se


basa principalmente en el libro
Applying UML and Patterns de
Craig Larman - 1998 ( Prentice Hall) ISBN 0-13-748880-7

25/09/2002

Encargado
de Despacho
(Empleado)

Caso de Uso de Alto Nivel


Terminal Despacho

Crear Gua Interna de


Despacho por Venta
Caso de Uso: Crear Gua Interna de
Despacho por Venta
Actores: Cliente, Encargado de
Despacho
Tipo: Primario
Un Cliente llega para solicitar la
entrega de Mercadera, presentando
como documentacin una Nota de
Venta. El Encargado de Despacho
registra los datos de la mercadera
emitiendo una Gua Interna de
Despacho por Venta y firma la documentacin en todos sus ejemplares
para indicar la conformidad. El
Cliente se retira para pasar a la Caja
llevado su copia de la Nota de Venta
firmada por el Encargado de Despacho, quien, a su vez, enva las partes
de la Gua de Despacho firmadas a
sus respectivos destinos. (Segn
Flujograma de Informacin )
Nota : (Craig Larman, 2.7.2, pg. 26):
Los Casos de Uso de Alto Nivel son
breves descripciones de un proceso
- usualmente dos o tres frases -
Ver tambin: (Craig Larman, 6.3.1,
pg. 49)

Cliente

Diseo de Clases :Caso de Uso: Crear Gua Interna de


Despacho por Venta ( Productos con registro persistente)
Ref. #
R1.1
R1.2

Funciones Bsicas

Funcin

Categora

Capturar y activar opciones desde un Men de Opciones, aceptar Opcin (Seleccin Manual).
Desplegar la Interfaz de Creacin de Gua de Despacho, N de Gua de Despacho (correlativo) y
Fecha de la Transaccin, - aceptar eventual modificacin de Fecha (Ingreso Manual).
Capturar el Cdigo del Encargado de Despacho (Ingreso Manual).
Desplegar datos del Encargado de Despacho registrados en almacenamiento persistente

evidente
evidente

evidente

R1.7

Capturar la informacin del Cliente usando el RUT (Ingreso Manual) y desplegar datos
pertinentes del Cliente registrados en almacenamiento persistente.
Capturar N de Nota de Venta del Cliente (Ingreso Manual), verificar validez ( No Existencia
previa) y desplegarlo.
Capturar Fecha (Propia) de Nota de Venta del Cliente (Ingreso Manual) y desplegarla.

R1.8

Capturar/Verificar. Condicin de Pago de la Venta (Ingreso Manual) y desplegarla.

evidente

R1.9

evidente

R1.10

Registrar la transaccin en proceso: los Productos a despachar. Capturar la informacin del


Producto a despachar usando el Cdigo (interno) (Ingreso Manual).
Desplegar la descripcin del Producto registrado en almacenamiento persistente

R1.11

Capturar el Precio al Cliente del Producto (Ingreso manual) y desplegarlo.

evidente

R1.12

Capturar la Cantidad de unidades del Producto respectivo (Ingreso manual). y calcular valor de
la lnea actualizando los totales de la Gua de Despacho en la Interfaz al dar OK a la lnea.
Grabar en el Detalle de la Gua de Despacho (lnea a lnea) los datos de cada lnea a medida que
se completa y calcula cada una de ellas.
Actualizar los valores de existencia y despachado de Productos (evitando doble actualizacin)
al dar OK a la Gua de Despacho en su totalidad.
Ofrecer un mecanismo de almacenamiento persistente.

evidente

R1.3
R1.4
R1.5
R1.6

R1.13
R1.14
R1.15

25/09/2002

evidente
evidente

evidente
evidente

evidente

oculta
oculta
oculta

Caso de Uso Expandido

Diseo de Clases :

Terminal Despacho

Caso de Uso: Crear Gua Interna de


Despacho por Venta ( Productos
con registro persistente).

Crear Gua Interna de


Despacho por Ventas

Caso de Uso Expandido


Nota : (Craig Larman, 2.7.2, pg. 26):
Los Casos de Uso Expandidos son
extensas narrativas de descripcin
de un proceso - pueden contener
cientos de frases -
Ver tambin: (Craig Larman, 6.3.2,
pg. 50)

Encargado de Despacho
Cliente

Caso de Uso : Crear Gua Interna de Despacho por Venta


Actores :

Cliente (Iniciador) , Encargado de Despacho (Actor Primario)

Propsito:

Capturar Datos de Despacho de Productos Vendidos.

Resumen:

Un Cliente contacta a un Encargado de Despacho para solicitar la Entrega de Productos que ha pedido, la Transaccin requerida la documenta con una Nota de
Venta. El Encargado de Despacho verifica los datos indicados por el Documento
y los ingresa en el Terminal de Despacho, al terminar confirma la Transaccin. El
Cliente recibe la 1 copia de la Nota de Venta firmada por el Encargado de Despacho, quien enva a sus respectivos destinos las copias firmadas de la Gua deDespacho y las restantes de la Nota de Venta ( segn Flujograma del Proceso ).
El Cliente se retira en direccin a la Caja.

Tipo:

Primario y real.

Este Caso de Uso comprende


desde la Hoja # 7 (la actual) hasta
la Hoja # 11

Referencias cruzadas: Funciones: R1.1, R1.2, R1.3, R1.4, R1.5, R1.6, R1.7, R1.8
R1.9, R1.10, R1.11, R1.12, R1.13, R1.14, R1.15

25/09/2002

Diseo de Clases : Caso de Uso:


Crear Gua Interna de Despacho por Venta
(Expandido ) ( Base Craig Larman )
(Productos con registro persistente)
Curso Normal de los Eventos
Accin de los actores

Respuestas del Sistema

1. Este caso comienza cuando un Cliente se contacta con un


Encargado de Despacho, presentando una Nota de Venta,
para solicitar que se efecte una Despacho de Productos.
(Peticin)
2. El Encargado de Despacho acuerda realizar la Transaccin.
(Aceptacin del compromiso) y para ello ingresa a la opcin de
Crear Gua de Despacho del Men de Opciones haciendo (Click)
y despus oprimiendo la tecla (Tab).
4. El Encargado de Despacho verifica visualmente el N de Gua de
Despacho y Fecha ofrecidos por el sistema y a continuacin
ingresa su identificacin (Cdigo) en C.
6. El Encargado de Despacho ingresa en E el RUT del Cliente y
verifica los datos del mismo desplegados por el sistema.
8. El Encargado de Despacho ingresa en M, N y O respectivamente
el N de Nota de Venta, la Fecha de la Nota de Venta y las Condiciones de Pago de la Venta.
10. El Encargado de Despacho pasa a la seccin de detalle, en el cual
ingresa el Cdigo del Producto en P.
12. El Encargado de Despacho verifica los datos del Producto e
ingresa el Precio unitario y la cantidad a despachar en R y
S. Luego oprime (Tab) para grabar la lnea actual y crear una
nueva lnea o terminar el ingreso de datos.
14. Al terminar de ingresar los Productos, el Encargado de Despacho
oprime el botn V para indicar al sistema el fin de la captura de
datos.
16. El Encargado de Despacho cierra la interfaz de Transaccin oprimiendo el botn XX para volver al Men de Opciones y entrega la
1 copia de la Nota de Venta (firmada) al Cliente (Notificacin de
cumplimiento del compromiso). El Cliente se retira en direccin a
la Caja.

Las restantes copias de la Nota de Venta y Gua Interna de Despacho (fir-

3. El sistema despliega la interfaz de Creacin de Gua de Despacho,


asigna y despliega automticamente en A el N de Gua de Despacho
correlativo correspondiente y en B la fecha del sistema.
5. El sistema obtiene y despliega el nombre del Encargado de Despacho
en D.
7. El sistema despliega los datos bsicos del Cliente (Razn Social,
Direccin, e-Mail, Comuna, Ciudad, Telfono, Fax) en F, G, H, I, J, K
y L respectivamente,
9. El sistema verifica la validez / no existencia del N de la Nota de
Venta
11. El sistema despliega el N de Lnea en LL, obtiene y despliega la
descripcin del Producto en Q.

13. El sistema calcula el valor de la lnea ingresada y lo acumula, desplegando los valores en T y U, a la vez que graba la lnea recin completada.
15. El sistema calcula los valores subtotales / total y los despliega / redespliega en los campos T y U, adems actualiza los datos de la
transaccin en el sistema de almacenamiento persistente.
Genera tres copias de la transaccin realizada utilizando la interfaz de salida indicada. Limpia la interfaz de entrada y posiciona el
cursor en A

madas), el Encargado de Despacho las enva por la va de comunicacin


preestablecida.

25/09/2002

Diseo de Clases :
Caso de Uso ( Expandido ): Crear Gua
Interna de Despacho por Venta
( Productos con registro persistente)
Interfaz de Entrada
Gua Interna de Despacho por Venta
C

Cdigo Enc. Despacho

RUT Cliente

Nota de Venta N

L.

LL

Ciudad
M

Anulada

Fono

Precio

W
Y

Cerrar X

XX

Anular Z

Salir

25/09/2002

Fax

Cond. Pago

Descripcin

e-Mail

Fecha Nota de Venta

Cdigo

Cerrada

Fecha Despacho

Direccin Cliente
Comuna

Encargado Despacho
Razn Social Cliente

N Gua Despacho

Cantidad

Valor Neto

V
Grabar

Total acumulado

Diseo de Clases :
Caso de Uso ( Expandido ): Crear Gua Interna de
Despacho por Venta
( Productos con registro persistente)
Excepciones al Curso Normal de los Eventos:

(para desarrollar los Casos de Uso correspondientes en una prxima


vuelta de la espiral )
1) Producto no registrado (Cdigo no existe)
2) N de Nota de Venta ya existe.
3) RUT de Cliente no registrado ( RUT no existe)
4) Encargado de Despacho no registrado (Cdigo no existe)
5) Existencia negativa (Inventario insuficiente)
6) Nota de Venta de ms de 6 productos

Notas adicionales a la Interfaz de Entrada:


( para desarrollar en una prxima vuelta de la espiral )
Curso Normal
1) Considerar operacion(es) de Cerrado en Encabezado
2) Considerar operacion(es) y flag de Cerrada en Lneas
Excepciones
3) Considerar operacin(es) y flag de Reversado en Encabezado
4) Considerar operacion(es) de Anulado de Encabezado
5) Considerar operacion(es) y flag de Anulada en Lneas
6) Considerar operacion(es) y flag de Reversada en Lneas
7) Considerar operacin(es) de Modificar en Encabezado
8) Considerar operacin(es de Modificar en Encabezado
9) Considerar operacin(es) de Cancelar en Encabezado
10) Considerar operacin(es) de Cancelar en Lneas

25/09/2002

10

Diseo de Clases :
Caso de Uso ( Expandido ): Crear Gua
Interna de Despacho por Venta
( Productos con registro persistente)
Interfaz de Salida
Gua de Despacho N
RUT Cliente

999.999.999 - X

Razn Social Cliente


Direccin Cliente
Comuna

XXXXXXX

Cdigo

99

XXXXXXX

e-Mail

Ciudad

XXXXXXX

L.

999.999

XXXXXXX

Fecha Nota de Venta

Descripcin

Encargado
Despacho

25/09/2002

Caja

Telfono
99/99/9999

XXXXXXX

Fax

XXXXXXX

Cond. Pago

Precio

XXXXXXXXXXXX

Conforme :

99/99/9999

XXXXXXX

Encargado Despacho

XXXXXXX

N de Nota de Venta

999.999 Fecha

9999,99

XXXXXXX

XXXXXXX

Cantidad
9999

Valor Neto
999999,99

Despachador
Cliente

Total Neto

99999999,99

11

Diseo de Clases:
Modelo Conceptual (simplificado)
Crear Gua Interna de
Despacho por Venta
(Productos con registro persistente)
Nota : En este modelo se consideran
los conceptos mnimos. En un anlisis
y desarrollo posteriores se podran incluir conceptos tales como Bodega,
Terminal, Empresa, etc.

Encabezado de
Gua Interna de
Despacho por
Venta

N de Gua
Fecha
Cliente
Nombre

Empleados
Nombre

*
Productos
Cdigo
Descripcin
Precio

*
1
1

1..*

Clientes
RUT
Nombre
Direccin

Detalle de Gua
Interna de Despacho por Venta
Descripcin
Precio
Cantidad

Notas de
Venta
N Nota de Venta
Fecha

Dentro de los requerimientos,


podra sustituirse por la consulta
a los Encabezados de Gua anteriores.
( Condicin de NO existencia previa )

25/09/2002

12

Diseo de Clases:
Diagrama de Diseo
de Clases ( Borrador inicial )
Crear Gua Interna de
Despacho por Venta
(Productos con registro persistente)
Nota: Segn Craig Larman
( pg.257 ) : Si bien la presentacin de los diagramas de clases
es posterior a la creacin de los
diagramas de interaccin, en la prctica usualmente se crean en paralelo.
Muchas clases, mtodos y relaciones
pueden bosquejarse tempranamente
en la etapa de Diseo

Nota: Segn Craig Larman


(21.8.4 a 21.8.8 - pgs.262 - 264)
Salvo casos especificos, es conveniente omitir los mtodos : crear(),
modificar(), eliminar() y consultar()
en los diagramas de clases dado que
no agregan valor y aumentan el
ruido - se consideran implcitos -

Encabezado de
Gua Interna de
Despacho por
Venta

Empleados
Nombre

*
1
Clientes

*
Productos
Cdigo
Descripcion
Precio

N de Gua
Fecha
Cliente
Nombre

RUT

1..*

1 Nombre
Direccin

Detalle de Gua
Interna de Despacho por Venta
Descripcin
Precio
Cantidad

Notas de
Venta
N Nota de Venta
Fecha

Dentro de los requerimientos,


podra sustituirse por la consulta
a los Encabezados de Gua anteriores.
( Condicin de NO existencia previa )

25/09/2002

13

Diseo de Clases: Crear Gua


Interna de Despacho por Venta
Diagrama de Secuencia del Sistema
(Productos con registro persistente)
(Base Craig Larman)
Caso de Uso:
Crear Gua de Despacho
( Curso Normal de los Eventos)
Obtener / Ingresar(Tab) N de
Gua Despacho y Fecha sistema,
verificar correlativo y fecha.
Ingresar Cdigo del Empleado y
obtener / verificar el nombre del
mismo.
Ingresar RUT del Cliente y
obtener / verificar los datos del
mismo.
Ingresar datos de Nota de Venta
( N Nota, Fecha, Condiciones )
Para cada lnea:
Ingresar el Cdigo del
Producto
Obtener / Verificar datos del
Producto
Ingresar precio y cantidad del
Producto
Dar OK a la lnea (Grabar)
Al terminar:
Dar OK a la Transaccin
(Grabar)
Salir al Men

25/09/2002

Versin en Lenguaje Natural

Encargado de Despacho

:Sistema

Ingresar a la Opcin Crear Gua de Despacho

Ingresar Cdigo del Empleado en Encabezado


Ingresar RUT del Cliente en Encabezado
Ingresar N Nota de Venta, Fecha y C. Pago en Encabezado
Ingresar Cdigo del Producto en Lnea Detalle
Reiterar hasta
que no haya
ms Productos
que ingresar

Ingresar Precio y Cantidad del Producto


Dar OK a la Lnea de Detalle
Dar OK al Final para Terminar la Creacin
Salir al Men

14

Diseo de Clases: Crear Gua Interna


de Despacho por Venta
Diagrama de Secuencia del Sistema
(Productos con registro persistente)
(Base Craig Larman)
Caso de Uso:
Crear Gua de Despacho
( Curso Normal de los Eventos)
Obtener / Ingresar(Tab) N de
Gua Despacho y Fecha sistema,
verificar correlativo y fecha.
Ingresar Cdigo del Empleado y
obtener / verificar el nombre del
mismo.
Ingresar RUT del Cliente y
obtener / verificar los datos del
mismo.
Ingresar datos de Nota de Venta
( N Nota, Fecha, Condiciones )
Para cada lnea:
Ingresar el Cdigo del
Producto
Obtener / Verificar datos del
Producto
Ingresar precio y cantidad del
Producto
Dar OK a la lnea (Grabar)
Al terminar:
Dar OK a la Transaccin
(Grabar)
Salir al Men

25/09/2002

Versin llamando los Eventos


por su Nombre
( equivalente a Operaciones del sistema)

:Sistema
Encargado de Despacho

crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)

ingresarCodEmpleado(CodigoEmpleado)
ingresarRutCliente(RutCliente)
ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)
ingresarCodProducto(CodigoProducto)
Reiterar hasta
que no haya
ms Productos
que ingresar

ingresarPrecioCantidad(Precio,Cantidad)
grabarLnea()
terminarTransaccin()
salirAMen()

15

Diseo de Clases:
Crear Gua Interna de Despacho
por Venta
Operaciones del Sistema
(Productos con registro persistente)
(Base Craig Larman)

Visin Dinmica del Sistema

Sistema
crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)
ingresarCodEmpleado(CodigoEmpleado)
ingresarRutCliente(RutCliente)
ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)
ingresarCodProducto(CodigoProducto)
ingresarPrecioCantidad(Precio,Cantidad)
grabarLnea()
terminarTransaccin()
salirAMenu()

25/09/2002

16

Diseo de Clases: Contratos


Crear Gua Interna
de Despacho
por Venta
(Productos con registro
persistente)
(Base Craig Larman)

Contrato
Nombre:
Responsabilidades:

Tipo:

crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)
Aceptar (Click) en la opcin del Men.Desplegar la Interfaz de Creacin
de Gua de Despacho. Aceptar (Tab) para iniciar el ingreso de la transaccin. Crear instancias de EncGuiaDespVenta y DetGuiaDespVenta, obtener
y desplegar NumGuiaDespVen, obtener y desplegar FechaV desde la fecha
del sistema, opcionalmente aceptar modificacin manual de la fecha.
Sistema

Referencias cruzadas: R1.1, R1.2, R1.15


Notas:
Usar Sistema de Men, Ahora() de MS Access,
- el Empleado oprime (Tab) para iniciar el ingreso Excepciones:
N/A

Nota:
Los nombres de elementos usados
en los contratos hacen referencia
al Diagrama de Secuencia de pg. 15,

Salida:
Precondiciones:

N/A
El sistema tiene el Men y la opcin Crear Gua de Despacho por Venta
requerida instalados y activos

al Modelo Funcional de pg. N 32


y al Modelo de Clases de pg. N 33.

25/09/2002

Postcondiciones: Se acept (Click) en el Men de Opciones para pasar a CrearGuaDespacho


Se despleg la interfaz de Crear Gua de Despacho por Venta (limpia)
Se cre una nueva instancia de EncGuiaDespVenta (creacin de instancia)
Se asoci EncGuiaDespVenta a Terminal (asociacin formada)
Se cre una nueva instancia DetGuiaDespVenta (creacin de instancia)
Se asoci DetGuiaDespVenta a EncGuiaDespVenta (asociacin formada)
Se posicion el cursor en A y se acept (Tab) para proseguir
Se despleg el Nmero correlativo de Gua de Despacho: NumGuiaDespVen
en A y la Fecha: FechaV en B
Se asign el Nmero correlativo de Gua de Despacho al campo:
EncGuiaDespVenta .NumGuiaDespVen (modificacin de atributos)
Se asign la Fecha del sistema al campo:
EncGuaDespVenta .FechaV ( modificacin de atributos)
Se posicion el cursor en el campo C : Cdigo Enc. Despacho

17

Diseo de Clases: Contratos


Crear Gua Interna de
Despacho por Venta
(Productos con registro
persistente)
(Base Craig Larman)

Contrato
Nombre:
Responsabilidades:

Tipo:

ingresarCodEmpleado(CodigoEmpleado)
Aceptar el ingreso de CodigoEmpleado. Basado en CodigoEmpleado,
obtener y desplegar Nombre registrado en el sistema de almacenamiento
persistente. (Alternativa a Lista de Valores Posibles).
A continuacin posicionar el cursor en el campo E.
Sistema

Nota:

Referencias cruzadas:

R1.3, R1.4, R1.15

Los nombres de elementos usados

Notas:

Usar Base de Datos MS Access y (Tab) para sucesivos campos

al Diagrama de Secuencia de pg. 15,

Excepciones:

Error en ingreso manual del Cdigo o Cdigo no registrado

al Modelo Funcional de pg. N 32

Salida:

N/A

Precondiciones:

El sistema conoce a Empleados.CodigoEmpleado (Registrado oportunamente con anterioridad)

en los contratos hacen referencia

y al Modelo de Clases de pg. N 33.

Postcondiciones: Se despleg CodigoEmpleado en C y Nombre en D..


Se asoci EncGuiaDespVenta a una instancia de Empleados basado en
una igualdad de CodigoEmpleado (asociacin formada)
Se asign CodigoEmpleado a EncGuiaDespVenta.CodigoEmpleado (modificacin de atributo)
Nota : Alternativamente ( desde Lista de Valores Posibles ) - Sustituyendo
CodigoEmpleado por Nombre - Se asign Nombre a EncGuiaDespVenta.Nombre (modificacin de
atributo).
Se posicion el cursor en el campo E: RUT Cliente

25/09/2002

18

Diseo de Clases: Contratos


Crear Gua Interna de
Despacho por Venta
(Productos con registro
persistente)
(Base Craig Larman)

Nota:
Los nombres de elementos usados
en los contratos hacen referencia

Contrato
Nombre:

ingresarRutCliente(RutCliente)

Responsabilidades:

Aceptar el ingreso de RutCliente, por su intermedio, obtener y desplegar los Datos del Cliente registrados en el sistema de almacenamiento persistente. A continuacin posicionar el cursor en el campo M.

Tipo:

Sistema

Referencias cruzadas:

R1.5, R1.15

Notas:
Excepciones:

Usar Base de Datos MS Access - el Encargado de Despacho oprime


(Tab) para pasar a los sucesivos campos Error en ingreso manual del RUT o RUT no registrado

Salida:

N/A

Precondiciones:

El sistema conoce a Clientes.RutCliente (Registrado oportunamente con anterioridad)

al Diagrama de Secuencia de pg. 15,


al Modelo Funcional de pg. N 32
y al Modelo de Clases de pg. N 33.

Postcondiciones: Se despleg RutCliente en el campo E


Se asoci EncGuiaDespVenta a una instancia de Clientes basado en una
igualdad de RutCliente (asociacin formada)
Se asign RutCliente a EncGuiaDespVenta.RutCliente (modificacin de
atributo)
Se desplegaron los datos bsicos del Cliente segn los campos de la interfaz
( RazonSocial, Direccion, eMail, Comuna, Ciudad, Fono, Fax) (Campos F,
G, H, I, J, K, L )
Se posicion el cursor en el campo M: Nota de Venta N

25/09/2002

19

Diseo de Clases: Contratos


Crear Gua Interna de
Despacho por Venta
(Productos con registro
persistente)
(Base Craig Larman)

Nota:
Los nombres de elementos usados
en los contratos hacen referencia
al Diagrama de Secuencia de pg. 15,
al Modelo Funcional de pg. N 32
y al Modelo de Clases de pg. N 33.

Contrato
Nombre:

ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)

Responsabilidades:

Aceptar el ingreso de NumNV, FecNV, CPag, verificar no existencia del


N de Nota de Venta en registros del sistema de almacenamiento persistente. A continuacin posicionar el cursor en el campo P.

Tipo:

Sistema

Referencias cruzadas:

R1.6, R1.7 y R1.8, R1.15

Notas:

Usar Base de Datos MS Access - el Encargado de Despacho oprime


(Tab) para pasar a los sucesivos campos El N de Nota de Venta ya existe.

Excepciones:
Salida:
Precondiciones:
Postcondiciones:

N/A
El sistema conoce a EncGuiaDespVenta.NumNV (Registrado oportunamente con anterioridad). Estn disponibles los Encabezados de Guas de
Despacho previas.
Se despleg NumNV, FecNV, CPag en los campos M, N y O
Se asign NumNV a EncGuiaDespVenta.NumNV (modificacin de atributo)
Se asign FecNV a EncGuiaDespVenta.FecNV (modificacin de atributo)
Se asign CPag a EncGuiaDespVenta.CPag (modificacin de atributo)
Se posicion el cursor en el campo P:Cdigo.

25/09/2002

20

Diseo de Clases: Contratos


Crear Gua Interna de
Despacho por Venta
(Productos con registro
persistente)
(Base Craig Larman)

Contrato
Nombre:

Aceptar el ingreso de CodigoProducto. Basado en CodigoProducto, obtener y desplegar los Datos del Producto registrados en el sistema de
almacenamiento persistente. Al oprimir (Tab) - fin de ingreso de CodigoProducto - asignar Nmero correlativo a la Instancia de DetGuaDespVenta.NumLinea y pasar al campo Q. Si la Descripcin es la correcta pasar (Tab) al campo R: Precio.
Tipo:
Sistema
Referencias cruzadas: R1.9, R1.10, R1.15
Responsabilidades:

Notas:
Nota:

ingresarCodProducto(CodigoProducto)

Usar Base de Datos MS Access y tecla (Tab)

Excepciones:

Error en ingreso manual del Cdigo o Cdigo no registrado

en los contratos hacen referencia

Salida:

N/A

al Diagrama de Secuencia de pg. 15,

Precondiciones:

El sistema conoce a Productos.CodigoProducto (Registrado oportunamente con anterioridad)

Los nombres de elementos usados

al Modelo Funcional de pg. N 32


y al Modelo de Clases de pg. N 33.

25/09/2002

Postcondiciones: Se redespleg CodigoProducto en P


Se despleg el Nmero de Lnea NumLnea en LL
Se asoci DetGuaDespVenta a una instancia de Productos basado en una
igualdad de CodigoProducto (asociacin formada)
Se asign NumLnea a DetGuiaDespVenta.NumLnea ( modificacin de
atributo )
Se asoci la nueva lnea de DetGuaDespVenta a EncGuaDespVenta
(asociacin formada)
Se asign CodigoProducto a DetGuiaDespVenta.CodigoProducto (modificacin de atributo)
Se despleg la Descripcin del Producto, Descripcion en Q.
Se posicion el cursor en R: Precio

21

Diseo de Clases: Contratos


Crear Gua Interna de
Despacho por Venta
(Productos con registro
persistente)
(Base Craig Larman)

Contrato
Nombre:

ingresarPrecioCantidad(Precio, Cantidad)

Responsabilidades:

Aceptar el Precio del Producto del Cliente en R, avanzar con (Tab)


hasta el campo S. Aceptar Cantidad en S.
Si todo est correcto pasar con (Tab) al campo T.

Tipo:

Sistema

Nota:

Referencias cruzadas:

R1.11 y R1.12

Los nombres de elementos usados

Notas:

Usar Base de Datos MS Access

al Diagrama de Secuencia de pg. 15,

Excepciones:

Existencia negativa ( falta producto para despachar).

al Modelo Funcional de pg. N 32

Salida:

N/A

en los contratos hacen referencia

y al Modelo de Clases de pg. N 33.

Precondiciones:
Postcondiciones:

25/09/2002

El sistema conoce a Productos.Existencia (Registrado oportunamente con anterioridad)


Se posicion el cursor en R
Se redespleg Precio en R y se posicion el cursor en S.
Se redespleg Cantidad en S
Se asign Precio a DetGuiaDespVenta.Precio y Cantidad a
DetGuiaDespVenta.Cantidad ( modificacin de atributos)
Se posicion el cursor en T: Valor Neto

22

Diseo de Clases: Contratos


Crear Gua Interna de
Despacho por Venta
(Productos con registro
persistente)
(Base Craig Larman)

Contrato
Nombre:

Responsabilidades: Aceptar avance con (Tab) hasta la siguiente lnea de la interfaz, creando
una nueva Lnea de DetGuiaDespVenta. Calcular /ValorLnea y desplegarlo en T de la lnea previa. Grabar en almacenamiento persistente un
registro de DetGuiaDespVenta con los datos ingresados/calculados en la
lnea previa (anterior). Calcular /ValorTotal y desplegarlo en U. Posicionar el cursor en P de la nueva lnea.
Tipo:
Sistema
Referencias cruzadas: R1.13, R1.15
Notas:

Nota:
Los nombres de elementos usados
en los contratos hacen referencia
al Diagrama de Secuencia de pg. 15,
al Modelo Funcional de pg. N 32
y al Modelo de Clases de pg. N 33.

grabarLnea()

Usar Base de Datos MS Access. En este punto el sistema queda listo para
reiterar el ingreso de un nuevo cdigo CodigoProducto o caso contrario,
pasar a terminarTransaccin()

Excepciones:

N/A

Salida:

N/A

Precondiciones:

N/A

Postcondiciones: Se calcul /ValorLnea y se despleg en T


Se calcul/recalcul /ValorTotal y se despleg/redespleg en U.
Se asign /ValorLnea a DetGuiaDespVenta./ValorLnea
( modificacin de atributo )
Se grab en almacenamiento persistente el registro de DetGuiaDespVenta
recin completado
Se cre una nueva Lnea de DetGuiaDespVenta (creacin de instancia)
Se asoci la nueva Lnea de DetGuiaDespVenta a EncGuiaDespVenta
(asociacin formada)
Se posicion el cursor en P de la nueva Lnea de DetGuiaDespVenta.

25/09/2002

23

Diseo de Clases: Contratos


Crear Gua Interna de
Despacho por Venta
(Productos con registro
persistente)
(Base Craig Larman)

Contrato
Nombre:

Responsabilidades: Aceptar (click) del Botn V (Grabar). Recalcular /ValorTotal y redesplegarlo en U. Grabar en almacenamiento persistente la instancia actual de
EncGuiaDespVenta.Limpiar los datos desplegados en la interfaz. Actualizar Productos.Existencia, Productos.Despachado y DetGuiaDespVenta.notAct. Posicionar en A el cursor.
Tipo:
Sistema
Referencias cruzadas:

R1.2, R1.14, R1.15

Notas:

Usar Base de Datos MS Access. Al terminar, el sistema queda listo para ingresar una nueva transaccin o volver al Men de opciones.

Nota:
Los nombres de elementos usados
en los contratos hacen referencia
al Diagrama de Secuencia de pg. 15,

terminarTransaccin()

Excepciones:
Salida:
Precondiciones:

Productos.Existencia y Productos.Despachado ya fueron actualizados.


N/A
N/A

al Modelo Funcional de pg. N 32


y al Modelo de Clases de pg. N 33.

25/09/2002

Postcondiciones: Se activ onClick_CBGrabar de commandGrabar


Se recalcul /ValorTotal y se grab/regrab en almacenamiento persistente la
instancia EncGuiaDespVenta y las lneas completadas DetGuiaDespVenta.
Se verific notAct() de DetGuiaDespVenta y se actualiz Productos.Existencia,
Productos.Despachado, regrabando los registros de Productos afectados por la
transaccin (modificacin de atributo), despus de ello, se le asign el valor
false al atributo DetGuiaDespVenta.notAct (modificacin de atributo), regrabando los registros correspondientes de DetGuiaDespVenta.
Se cre una nueva EncGuiaDespVenta (creacin de instancia) (en blanco)
La nueva EncGuiaDespVenta fue asociada a Terminal (asociacin formada)
Se cre una nueva DetGuiaDespVenta ( creacin de instancia) (en blanco)
Se asoci la nueva instancia de DetGuiaDespVenta a EncGuiaDespVenta
(asociacin formada)
Se posicion el cursor en A, esperando la prxima accin del usuario.

24

Diseo de Clases:
Creacin de EncGuiaDespVenta
Diagramas de Colaboracin
ingresarOpcion(CrearGuiaDespacho)
(Productos con registro persistente)
(Base Craig Larman)
siguiente():NumGuia
ahora():Fecha

t1:Terminal

1:NumGuiaDespVen := siguiente():NumGuia

:EncGuiaDespVenta

El mensaje invoca un mtodo de


clase ( no de instancia ), especficamente
el mtodo ahora() de la clase Fecha
2:FechaV := ahora():Fecha

Fecha

crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)

t1:Terminal

3 :[NuevaGuiaDespacho] crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)

Omisin del Contenedor de Lneas


Nota: Segn Craig Larman
( 21.8.6 - pg.262 ) : Un mensaje
a un multiobjeto se interpreta como
un mensaje al objeto contenedor / coleccin en s mismo... estas clases ( tales como
java.util.Vector... ) son clases predefinidas
de la biblioteca de clases... no es til mostrarlas explcitamente... agregan ruido
pero poca informacin nueva.

25/09/2002

d1:EncGuiaDespVenta

3.1 :[NuevaGuiaDespacho] crearDetGuiaDespVenta(NumGuiaDespVen)

l1:DetGuiaDespVenta

25

Diseo de Clases:
Creacin de EncGuiaDespVenta
Diagramas de Colaboracin
ingresarCodEmpleado(CodigoEmpleado)
ingresarRutCliente(RutCliente)
(Productos con registro persistente)
(Base Craig Larman)

ingresarCodEmpleado(CodigoEmpleado)

t1:Terminal

1:ingresarCodEmpleado(CodigoEmpleado)

d1:EncGuiaDespVenta

1.1:Nombre := consultar(CodigoEmpleado)

e1:Empleados
ingresarRutCliente (RutCliente)

t1:Terminal

2:ingresarRutCliente (RutCliente)

d1:EncGuiaDespVenta

2.1.a:RazonSocial := consultar (RutCliente)


2.1.b:Direccion := consultar (RutCliente)
2.1.c: eMail := consultar (RutCliente)
2.1.d:Comuna := consultar (RutCliente)
2.1.e:Ciudad := consultar (RutCliente)
2.1.f: Fono := consultar (RutCliente)
2.1.g:Fax := consultar (RutCliente)
c1:Clientes

25/09/2002

26

Diseo de Clases:
Creacin de EncGuiaDespVenta
Diagramas de Colaboracin
ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)

(Productos con registro persistente)


(Base Craig Larman)
ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)
t1:Terminal

1: ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)

:EncGuiaDespVenta

d1:EncGuiaDespVenta

1.1: consultar (NumNV)

La instancia especfica :
d1:EncGuaDespVenta hace la consulta a los Encabezados de Gua anteriores. ( Condicin de NO existencia previa )

25/09/2002

ll:DetGuiaDespVenta

27

Diseo de Clases:
Creacin de EncGuiaDespVenta
Diagramas de Colaboracin
ingresarCodProducto(CodigoProducto)
(Productos con registro persistente)
(Base Craig Larman)
ingresarCodProducto(CodigoProducto)
siguiente () : NumLinea

1:ingresarCodProducto(CodigoProducto)
2 *:[i:=1...6] NumLnea:= siguiente () : NumLinea

t1:Terminal

d1:EncGuiaDespVenta

1.1:aceptarCodigo(CodigoProducto)
2.1 *:[i:=1...6] NumLnea:= siguiente () : NumLinea
2.2:crearLinea(NumLinea)

1.2:Descripcion := consultar(CodigoProducto)

b1:Productos

25/09/2002

ll:DetGuiaDespVenta

Omisin del Contenedor de Lneas


Nota: Segn Craig Larman
( 21.8.6 - pg.262 ) : Un mensaje
a un multiobjeto se interpreta como
un mensaje al objeto contenedor / coleccin en s mismo... estas clases ( tales como
java.util.Vector... ) son clases predefinidas
de la biblioteca de clases... no es til mostrarlas explcitamente... agregan ruido
pero poca informacin nueva.

28

Diseo de Clases:
Creacin de EncGuiaDespVenta
Diagramas de Colaboracin
ingresarPrecioCantidad(Precio, Cantidad)
grabarLnea()
(Productos con registro persistente)
(Base Craig Larman)

ingresarPrecioCantidad(Precio, Cantidad)

t1:Terminal

1:ingresarPrecioCantidad(Precio, Cantidad)

d1:EncGuiaDespVenta

1.1:aceptarDatos(Precio, Cantidad)
calcularTotales()

ll:DetGuiaDespVentaa
t1:Terminal

2: /ValorTotal := calcularTotales()

d1:EncGuiaDespVenta

2.1*:[i:=1...6]: /ValorLnea := calcularValor()

ll:DetGuiaDespVenta

Despus de grabarLinea() el usuario vuelve a la accin anterior de


ingresarCodProducto() hasta que
no queden ms productos que
ingresar, en cuyo caso pasa a la
siguiente accin :
teminarTransaccion()

25/09/2002

29

Diseo de Clases:
Creacin de EncGuiaDespVenta
Diagramas de Colaboracin
terminarTransaccion()
(Primera Parte)

(Productos con registro persistente)


(Base Craig Larman)

Este Diagrama reitera lo indicado


en grabarLnea() al recalcular los
totales ( se expone por completitud )
calcularTotales()

t1:Terminal

1: /ValorTotal := calcularTotales()

d1:EncGuiaDespVenta

1.1*:[i:=1...6] /ValorLnea := calcularValor()


restarExistencia(CodigoProducto, Cantidad)
sumarDespachado(CodigoProducto, Cantidad)

t1:Terminal

2.a*:[i:=1...6 ][notAct] restarExistencia(CodigoProducto, Cantidad)


2.b*:[i:=1...6 ][notAct] sumarDespachado(CodigoProducto, Cantidad)

ll:DetGuiaDespVenta

d1:EncGuiaDespVenta

2.1.a*:[i:=1...6 ][notAct] restarExistencia(CodigoProducto, Cantidad)


2.1.b*:[i:=1...6 ][notAct] sumarDespachado(CodigoProducto, Cantidad)

2.3*:[i:=1...6 ][notAct] notAct := notAct(notAct := false)


2.2.a*:[i:=1...6 ][notAct] restarExistencia(CodigoProducto, Cantidad)

ll:DetGuiaDespVenta

2.2.b*:[i:=1...6 ][notAct] sumarDespachado(CodigoProducto, Cantidad)

b1:Productos

25/09/2002

30

Diseo de Clases:
Creacin de EncGuiaDespVenta
Diagramas de Colaboracin
terminarTransaccion()

Esta Segunda Parte del Diagrama


de terminarTransaccin() reitera
lo indicado en pg 25 ingresarOpcin()
( se expone por completitud )

(Segunda Parte)

(Productos con registro persistente)


(Base Craig Larman)
siguiente():NumGuia
ahora():Fecha

t1:Terminal

3:NumGuiaDespVen := siguiente():NumGuia

4:FechaV := ahora():Fecha

:EncGuiaDespVenta

Fecha

crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)

t1:Terminal

5 :[NuevaGuiaDespacho] crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)

d1:EncGuiaDespVenta

5.1 :[NuevaGuiaDespacho] crearDetGuiaDespVenta (NumGuiaDespVen)

l1:DetGuiaDespVenta

25/09/2002

31

Encabezado de Gua
de Despacho

Diseo de Clases :
Modelo Funcional
(Detallado y Generalizado)
Crear Gua Interna de
Despacho por Venta
(Productos con Registro
persistente)

N Guia de Despacho
RUT Cliente
N Nota de Venta
Fecha Despacho
Cdigo Empleado
Fecha Nota de Venta
Condicin de Pago
/ Valor Total

Transaccin Cerrada
Transaccin Anulada
1. Crear Encabezado()
2. Aceptar datos()
6. Calcular Totales()
7. Cerrar Transaccin()
8. Anular Transaccin()
9. Copiar Transaccin()
10. Siguiente()

C/E, msg1, msg2,

C/E y msg4

Terminal
Encabezado, detalle y totales segn
formato de pantalla adjunto.
1.Cargar correlativo y fecha de sistema
2. Aceptar datos.
3. Enviar mensajes de C/E a registros.
4. Enviar mensajes de consulta de datos
5. Calcular totales cumulativos
6. Enviar mensajes de actualizacin de
existencias y actualizar lnea a lnea
el registro de la transaccin

C/E y msg4

msg3,

msg6, msg10
y msg11
Detalle de Gua de
Despacho

C/E, msg4,
msg7, msg9
y msg10

N Lnea
Cdigo Producto
Precio
Cantidad
/ Valor lnea
notAct
Lnea Cerrada
Lnea Anulada

25/09/2002

Clientes

C/E, msg1, msg2,


msg6 y msg10

1. Crear Lnea()
2. Aceptar Codigo()
3. Aceptar datos()
6. Calcular Valor()
7. Cerrar Lnea()
8. Anular Lnea()
9. Copiar Lnea()
10. Siguiente()
11. notAct()

Al crear la lnea
de detalle, notAct
se incializa a: true

Productos
Cdigo Producto
Descripcin
U.Medida
Precio
Costo Unitario
Existencia Inicial
Existencia
Recibido
Despachado
4. Consultar datos()
6. Sumar Existencia()
7. Restar Existencia()
8. Sumar Recibido()
9. Sumar Despachado()
10. Existencia Negativa()
11. Calcular CPP()

RUT Cliente
Razn Social
Direccin
e_Mail
Comuna
Ciudad
Pas
Contacto
Fono
Fax
4. Consultar datos()
Empleados
Cdigo
Empleado
Nombre
...
4. Consultar datos()
C/E y msg4
Notas de Venta
N Nota
de Venta
Datos
4. Consultar datos()

32

Diseo de Clases : Modelo de Datos


Diagrama de Diseo de Clases
Crear Gua Interna de
Clientes
Despacho por Venta
RUTCliente
(Productos con Registro
RaznSocial
persistente)
Direccin
Dentro de los requerimientos,
podra sustituirse por la consulta
a los Encabezados de Gua anteriores.
( Condicin de NO existencia previa )

EncGuaDespVenta
NumGuaDespVen
RUTCliente
NumNV
FechaV
CdigoEmpleado
FecNV
CPag
/ValorTotal
TransaccinCerrada
TransaccinAnulada

*
1

eMail
Comuna
Ciudad
Pas
Contacto
Fono
Fax

crearEncGuiaDespVenta()
ingresarCodEmpleado()
ingresarRutCliente()
ingresarNumNVFechaNVCond()
ingresarCodProducto()
ingresarPrecioCantidad()
restarExistencia()
sumarDespachado()
calcularTotales()
cerrarTransaccin()
anularTransaccin()
copiarTransaccin()
siguiente()

Notas de
Venta
1
NumNV
RUTCliente
FechaNV
etc...

Nota: Segn Craig Larman


(21.8.4 a 21.8.8 - pgs.262 - 264)
Salvo casos especificos, es conveniente omitir los mtodos : crear(),
modificar(), eliminar() y consultar()
en los diagramas de clases dado que
no agregan valor y aumentan el
ruido - se consideran implcitos -

25/09/2002

1
Productos
CodigoProducto
Descripcin
UMedida
Precio
CostoUnitario
ExistenciaInicial
Existencia
Recibido
Despachado
sumarExistencia()
restarExistencia()
sumarRecibido()
sumarDespachado()
existenciaNegativa()
calcularCPP()

Empleados
1

CdigoEmpleado
Nombre

Agregado para clarificar


contexto, en principio es una
lista de valores posibles

1..*

DetGuaDespVenta
1
*

NumLinea
CodigoProducto
Precio
Cantidad
/ValorLnea
notAct
LneaCerrada
LneaAnulada
crearDetGuiaDespVenta()
crearLnea()
aceptarCodigo()
aceptarDatos()
calcularValor()
restarExistencia()
sumarDespachado()
cerrarLnea()
anularLnea()
copiarLnea()
siguiente()
notAct()

Al crear la lnea
de detalle, notAct
se incializa a: true

33