Ingeniera del Software Ejemplo TPV Diagrama de Casos

  • Slides: 32
Download presentation
Ingeniería del Software Ejemplo TPV: Diagrama de Casos de Uso TPV Comprar productos Registrar

Ingeniería del Software Ejemplo TPV: Diagrama de Casos de Uso TPV Comprar productos Registrar Productos CLIENTE CAJERO Iniciar sesión 1

Ingeniería del Software Ejemplo TPV: caso de uso real (1) Caso de uso: Actores:

Ingeniería del Software Ejemplo TPV: caso de uso real (1) Caso de uso: Actores: Propósito: Tipo: Resumen: Comprar productos en efectivo v 1 Cliente (iniciador), Cajero Capturar una venta y su pago en efectivo Primario y real Un Cliente llega a la caja registradora con los artículos que desea comprar. El Cajero registra los artículos y recibe un pago en efectivo. Al terminar la operación, el Cliente se marcha con los productos comprados. Referencias cruzadas: R 1. 1, R 1. 2, R 1. 3, R 1. 4, R 1. 5, R 1. 7 2

Ingeniería del Software Ejemplo TPV: caso de uso real (2) a e b c

Ingeniería del Software Ejemplo TPV: caso de uso real (2) a e b c d f g h i j 3

Ingeniería del Software Ejemplo TPV: caso de uso real (3) Curso normal de los

Ingeniería del Software Ejemplo TPV: caso de uso real (3) Curso normal de los eventos Acción de los actores 1. Este caso de uso comienza cuando un Cliente llega a un TPV con productos que desea comprar. 2. Para cada producto, el Cajero teclea el código de producto en a de la ventana -cp. Si hay más de un producto, es opcional añadir la cantidad en e. Se añade el producto con h. 4. Al terminar de introducir el producto, el Cajero oprime el botón i para indicar al TPV que se concluyó la captura de productos. 6. . Respuesta del sistema 3. 5. Incorpora a la transacción actual la información correspondiente. Del producto actual se presenta el precio en f de la ventana-cp. Calcula y presenta en c el total de la venta. 4

Ingeniería del Software Diagrama de clases Gerente Cajero Cliente inicia TPV gestiona inicia Sólo

Ingeniería del Software Diagrama de clases Gerente Cajero Cliente inicia TPV gestiona inicia Sólo hay una TPV! está Tienda ofrece registra Venta fecha importe esta. Terminada Catálogo contiene consta * Linea. Venta referencia cantidad * Producto cp descripción precio requiere Pago Sólo hay una venta! monto 5

Ingeniería del Software Ejemplo: Caso de uso Comprar productos : Sistema : Cajero Iniciar.

Ingeniería del Software Ejemplo: Caso de uso Comprar productos : Sistema : Cajero Iniciar. Venta() * Añadir. Producto(cp, c) Terminar. Venta() : importe Efectuar. Pago(monto) : cambio 6

Ingeniería del Software Contrato Iniciar. Venta § § § Name: Iniciar. Venta() Responsabilities §

Ingeniería del Software Contrato Iniciar. Venta § § § Name: Iniciar. Venta() Responsabilities § Iniciar el registro de una venta Preconditions § No existe una venta ya iniciada Postconditions § Se dio de alta una instancia v de Venta con fecha actual § Se dio de alta una instancia de la asociación ‘tiene’ entre v y la instancia de TPV Salida 7

Ingeniería del Software Diagrama de secuencia: Iniciar. Venta : TPV iniciar. Venta() crear() :

Ingeniería del Software Diagrama de secuencia: Iniciar. Venta : TPV iniciar. Venta() crear() : Venta 8

Ingeniería del Software Código Java Iniciar. Venta: TPV package TPV; import java. util. *;

Ingeniería del Software Código Java Iniciar. Venta: TPV package TPV; import java. util. *; class TPV { private Catalogo catalogo; private Venta venta; . . . private boolean es. Nueva. Venta() { return (venta==null) || (venta. esta. Terminada())} public void Iniciar. Venta () { if (es. Nueva. Venta()) { venta = new Venta(); } } } 9

Ingeniería del Software Código Java Añadir. Producto: Venta package TPV; import java. util. *;

Ingeniería del Software Código Java Añadir. Producto: Venta package TPV; import java. util. *; class Venta { private Vector linea. Venta = new Vector(); private Date fecha = new Date(); private float importe = 0; private boolean esta. Terminada = false; . . . } 10

Ingeniería del Software Contrato Añadir. Producto § § § Name: Añadir. Producto(cp, c) Responsabilities

Ingeniería del Software Contrato Añadir. Producto § § § Name: Añadir. Producto(cp, c) Responsabilities § Registrar una línea de venta. Preconditions § Existe un producto p con p. cp = cp § c >= 0 § Existe una Venta v asociada a TPV Postconditions § Se dio de alta una instancia de Línea. Venta lv con lv. cantidad = c § Se dio de alta una instancia de la asociación ‘consta’ entre lv y la Venta v § Se dio de alta una instancia de la asociación ‘referencia’ que asocia lv y el producto p con p. cp = cp Salida § p. descripción y p. precio 11

Ingeniería del Software Diagrama de secuencia: Añadir. Producto § Selección de la clase controlador

Ingeniería del Software Diagrama de secuencia: Añadir. Producto § Selección de la clase controlador : TPV Añadir. Producto(cp, c) : Tienda Añadir. Producto(cp, c) Fachada sistema Fachada negocio : Cajero Añadir. Producto(cp, c) Rol (actor) : Gestor Añadir. Producto(cp, c) CU o transacción 12

Ingeniería del Software Diagrama de secuencia: Añadir. Producto : TPV añadir. Producto(cp, c) :

Ingeniería del Software Diagrama de secuencia: Añadir. Producto : TPV añadir. Producto(cp, c) : Catálogo producto(cp) : Producto obtener(cp) p : Venta agregar. LV(p, c) crear(p, c) : Linea. Venta p. precio p. descripción 13

Ingeniería del Software Diagrama de clases: Añadir. Producto TPV inicia. Venta(): añadir. Producto(cp, cantidad)

Ingeniería del Software Diagrama de clases: Añadir. Producto TPV inicia. Venta(): añadir. Producto(cp, cantidad) terminar. Venta(): real efectuar. Pago(real): real Catálogo producto(cp): producto Venta fecha: date importe: float esta. Terminada: boolean agregar. LV(producto, cantidad) Producto cp: int precio: real descipcion: string obtener(cp): producto 14

Ingeniería del Software Código Java Añadir. Producto: TPV package TPV; import java. util. *;

Ingeniería del Software Código Java Añadir. Producto: TPV package TPV; import java. util. *; class TPV { private Catalogo catalogo; private Venta venta; . . . public void añadir. Producto (int cp, int cantidad) { Producto p = catalogo. producto(cp); venta. agregar. LV(p, cantidad); } } 15

Ingeniería del Software Contrato Añadir. Producto § § § Name: Añadir. Producto(cp, c) Responsabilities

Ingeniería del Software Contrato Añadir. Producto § § § Name: Añadir. Producto(cp, c) Responsabilities Quién es el responsable de comprobar esto? § Registrar una línea de venta. Preconditions § Existe un producto p con p. cp = cp § c >= 0 § Existe una Venta v asociada a TPV Postconditions § Se dio de alta una instancia de Línea. Venta lv con lv. cantidad = c § Se dio de alta una instancia de la asociación ‘consta’ entre lv y la Venta v § Se dio de alta una instancia de la asociación ‘referencia’ que asocia lv y el producto p con p. cp = cp Salida § p. descripción y p. precio 16

Ingeniería del Software Código Java Añadir. Producto: Catalogo package TPV; import java. util. *;

Ingeniería del Software Código Java Añadir. Producto: Catalogo package TPV; import java. util. *; public class Catalogo { private Hashtable catalogo = new Hashtable(); public Catalogo() { catalogo c = new catalogo. put(new } producto(100, 2, “producto 100”); Integer(100), c); producto(200, 1, “producto 200”); Integer(200), c); public producto (int cp) { return (producto) catalogo. get(new Integer (cp)); } } 17

Ingeniería del Software Código Java Añadir. Producto: Producto package TPV; public class Producto {

Ingeniería del Software Código Java Añadir. Producto: Producto package TPV; public class Producto { private int cp = 0; private float precio = 0; private String descripcion = “”; public producto (int cp, float precio, String descripcion) { this. cp = cp; this. precio = precio; this. descripcion = descripcion; }. . . } 18

Ingeniería del Software Código Java Añadir. Producto: Venta package TPV; import java. util. *;

Ingeniería del Software Código Java Añadir. Producto: Venta package TPV; import java. util. *; class Venta { private Vector linea. Venta = new Vector(); private Date fecha = new Date(); private float importe = 0; private boolean esta. Terminada = false; . . . public void agregar. LV (producto p, int c){ linea. Venta. add. Element(new Linea. Venta(p, c)); } } 19

Ingeniería del Software Código Java Añadir. Producto: Linea. Venta package TPV; class Linea. Venta

Ingeniería del Software Código Java Añadir. Producto: Linea. Venta package TPV; class Linea. Venta { private int cantidad; private Producto producto; . . . public Linea. Venta (producto p, int cantidad) { this. producto = p; this. cantidad = cantidad; } } 20

Ingeniería del Software Contrato Terminar. Venta § § § Name: Terminar. Venta() : importe

Ingeniería del Software Contrato Terminar. Venta § § § Name: Terminar. Venta() : importe Responsabilities § Finalizar el registro de una venta y mostrar el importe pagado Preconditions § Existe una Venta v asociada a TPV Postconditions § v. importe = suma de los subtotales de todas lineas de venta asociadas a la Venta v § v. terminada = verdadero Salida § importe = v. importe 21

Ingeniería del Software Diagrama de secuencia: Terminar. Venta : TPV : Venta : Linea.

Ingeniería del Software Diagrama de secuencia: Terminar. Venta : TPV : Venta : Linea. Venta : Producto terminar. Venta() terminar() total() * subtotal() precio() importe 22

Ingeniería del Software Diagrama de clases: Terminar. Venta TPV inicia. Venta(): añadir. Producto(cp, cantidad)

Ingeniería del Software Diagrama de clases: Terminar. Venta TPV inicia. Venta(): añadir. Producto(cp, cantidad) terminar. Venta(): real efectuar. Pago(real): real Catálogo producto(cp): producto Venta agregar. LV(producto, cantidad) terminar(): real Linea. Venta subtotal(): real Producto obtener(cp): producto precio() 23

Ingeniería del Software Código Java Terminar. Venta: TPV package TPV; import java. util. *;

Ingeniería del Software Código Java Terminar. Venta: TPV package TPV; import java. util. *; class TPV { private Catalogo catalogo; private Venta venta; . . . public float terminar. Venta () { venta. terminar(); return (float) venta. total(); } } 24

Ingeniería del Software Código Java Terminar. Venta: Venta package TPV; import java. util. *;

Ingeniería del Software Código Java Terminar. Venta: Venta package TPV; import java. util. *; class Venta { private Vector linea. Venta = new Vector(); private Date fecha = new Date(); private float importe = 0; private boolean esta. Terminada = false; . . . public void terminar () { esta. Terminada = true; } public float total() { float total = 0; enumeration e = linea. Venta. elements(); while (e. has. More. Elements()) { total += ( (Linea. Venta) e. next. Element() ). subtotal(); } importe = total; return total; } } 25

Ingeniería del Software Código Java Terminar. Venta: Linea. Venta package TPV; class Linea. Venta

Ingeniería del Software Código Java Terminar. Venta: Linea. Venta package TPV; class Linea. Venta { private int cantidad; private Producto producto; . . . public float subtotal () { return cantidad * producto. precio(); } } 26

Ingeniería del Software Código Java Terminar. Venta: Producto package TPV; public class Producto {

Ingeniería del Software Código Java Terminar. Venta: Producto package TPV; public class Producto { private int cp = 0; private float precio = 0; private String descripcion = “”; public float precio () { return precio; }. . . } 27

Ingeniería del Software Diagrama de secuencia: Efectuar. Pago : TPV : Venta efectuar. Pago(monto)

Ingeniería del Software Diagrama de secuencia: Efectuar. Pago : TPV : Venta efectuar. Pago(monto) crear(monto) : Pago cambio 28

Ingeniería del Software Diagrama de clases: Efectuar. Pago TPV inicia. Venta(): añadir. Producto(cp, cantidad)

Ingeniería del Software Diagrama de clases: Efectuar. Pago TPV inicia. Venta(): añadir. Producto(cp, cantidad) terminar. Venta(): real efectuar. Pago(real): real Catálogo producto(cp): producto Venta agregar. LV(producto, cantidad) terminar() importe() efectuar. Pago(real): real Producto obtener(cp): producto 29

Ingeniería del Software Código Java Efectuar. Pago: TPV package TPV; import java. util. *;

Ingeniería del Software Código Java Efectuar. Pago: TPV package TPV; import java. util. *; class TPV { private Catalogo catalogo; private Venta venta; . . . public float efectuar. Pago (float monto) { return venta. efectuar. Pago(monto); } } 30

Ingeniería del Software Código Java Efectuar. Pago: Venta package TPV; import java. util. *;

Ingeniería del Software Código Java Efectuar. Pago: Venta package TPV; import java. util. *; class Venta { private Vector linea. Venta = new Vector(); private Date fecha = new Date(); private float importe = 0; private boolean esta. Terminada = false; private Pago pago; public void efectuar. Pago (float monto) { pago = new Pago(monto) return pago. monto - importe } } 31

Ingeniería del Software Código Java Efectuar. Pago: Pago package TPV; public class Pago {

Ingeniería del Software Código Java Efectuar. Pago: Pago package TPV; public class Pago { private float monto; public Pago (float monto) { this. monto = monto; } } 32