Contexto
• Sea un sistema bancario que administra transferencias entre cuentas de un banco. • Las transferencias son movimientos de dinero que tienen una cuenta de origen y
una de destino.
• Las transferencias deben registrarse tanto en la cuenta de origen como en la destino. En la cuenta origen se registran como transferencias de salida y en la cuenta de destino son transferencias de entrada.
• Todas las cuentas son en pesos, pertenecen al mismo banco y se administran con el mismo sistema.
• Los titulares de las cuentas son clientes del banco. Los mismos pueden ser clientes VIP o clientes estándar. De ellos se conoce su DNI, dirección y nombre. Una
cuenta solo tiene un titular, pero cada cliente del banco puede tener varias cuentas.
• Una vez al mes, el gerente del banco activa el cobro de mantenimiento (cobro de costos por transferencias). Por cada cuenta se calcula el costo de las transferencias hechas y se hace una transferencia del monto total a la “cuenta del banco” (es una cuenta especial, sin titular y con número 00, a la que no se le cobra mantenimiento).
• Para calcular el monto a cobrar tenga en cuenta lo siguiente.
– Si se trata de “la cuenta del banco”, no se cobra.
– Caso contrario, el costo por cada transferencia se calcula dependiendo tipo de
Qué hay que hacer?
• 1) Diseñar una solución con objetos que tenga
la funcionalidad de
efectuar transferencias
entre cuentas
y
cobrar el mantenimiento
.
– Cear un diagrama UML de clases
• 2) Crear el diagrama de secuencia para el
método que
calcula el costo de
mantenimiento de una cuenta
1
-cuentas
*
Encontrando clases y asociaciones
• Sea un sistema bancario que
administra transferencias entre
cuentas de ese banco.
• Las transferencias son movimientos de
dinero que tienen una cuenta de
origen y una de destino.
• Las transferencias deben registrarse
tanto en la cuenta de origen como en
la destino.
• En la cuenta origen se registran como
transferencias de salida (porque es
dinero que sale de la cuenta) y en la
cuenta de destino son transferencias
de entrada.
• Todas las cuentas son en pesos,
pertenecen al mismo banco y se
administran con el mismo sistema.
-nroCuenta
CuentaBancaria
Encontrando clases y asociaciones (2)
• Los titulares de las cuentas son clientes del banco.
• Los mismos pueden ser clientes VIP o clientes estándar.
• De ellos se conoce su DNI, dirección y nombre.
• Una cuenta solo tiene un titular, pero cada cliente del banco
puede tener varias cuentas.
ClienteVip ClienteEstándad
*
-clientes
*
Cliente -DNI
-monto -fecha
Transferencias
-nroCuenta
CuentaBancaria
Encontrando clases y asociaciones (3)
• Las transferencias son movimientos de dinero que tienen una cuenta de origen y una de destino.
• Las transferencias deben registrarse tanto en la cuenta de origen como en la destino.
• En la cuenta origen se registran como transferencias de salida (porque es dinero que sale de la cuenta) y en la cuenta de destino son transferencias de entrada (porque es dinero que entra).
-nroCuenta
CuentaBancaria
-monto -fecha
Transferencias
* -origen
1
-destino
1 *
-nroCuenta
CuentaBancaria
-monto -fecha
Transferencias
* -origen
-nroCuenta
CuentaBancaria
-nroCuenta
CuentaBancaria
-monto -fecha
Transferencias *
-origen 1
-destino
1 *
Encontrando clases y asociaciones (3)
• Las transferencias son movimientos de dinero que tienen una cuenta de origen y una de destino.
• Las transferencias deben registrarse tanto en la cuenta de origen como en la destino.
• En la cuenta origen se registran como transferencias de salida (porque es dinero que sale de la cuenta) y en la cuenta de destino son transferencias de entrada (porque es dinero que entra).
-transferenciasEntrada
*
-cuenta
1
-transferenciasSalida
*
-cuenta
1
Encontrando clases y asociaciones (3)
• Las transferencias son movimientos de dinero que tienen una cuenta de origen y una de destino.
• Las transferencias deben registrarse tanto en la cuenta de origen como en la destino.
• En la cuenta origen se registran como transferencias de salida (porque es dinero que sale de la cuenta) y en la cuenta de destino son transferencias de entrada (porque es dinero que entra).
TranferenciaSalida TranferenciaEntrada
-monto -fecha
Transferencias
-nroCuenta
CuentaBancaria
1
-transferencias
*
-nroCuenta
CuentaBancaria
-monto -fecha
Transferencias *
-origen 1
-destino
1 *
Encontrando clases y asociaciones (4)
• Por cada cuenta se calcula el
costo de las transferencias hechas
y se hace una transferencia del
monto total a la “cuenta del
banco” (es una cuenta especial,
sin titular y con número 00, a la
que no se le cobra
mantenimiento).
• Para calcular el monto a cobrar
tenga en cuenta lo siguiente. Si se
trata de “la cuenta del banco”, no
se cobra. Caso contrario, …….
-nroCuenta
CuentaBancaria
-nroCuenta = 00
CuentaBanco CuentaCliente Banco
-nroCuenta
CuentaBancaria
-nroCuenta = 00
CuentaBanco CuentaCliente 1 -c u e n ta P ro p ia 1
1 -cue
nt
as
*
Banco CuentaBancaria
-nroCuenta
1 -cu
e n ta s * Cliente -dni -apellido -nombre -telefono 1 -clientes * CuentaBanco
-nroCuenta = 00
Hasta aca…
Banco
-nroCuenta
CuentaBancaria
1 -cu
Pensemos en el comportamieneto….
• Dos momentos distintos
– Momento de la transferencia
• Hay que dejar constancia de la transferencia efectuada indicando
para cada cuenta participante cual fue la cuenta origen y cual la
destino
– Momento del cobro de mantenimiento
• Dependiendo del tipo de cliente hay que calcular el costo de
mantenimiento y depositarlo en la cuenta del banco
Qué hace el
transferir a:
?
extraer: unMonto
cuentaDestino : CuentaCliente cuentaOrigen : CuentaCliente
tranferir: unMonto a:cuentaDestino
depositar: unMonto
crearTransferencia(cuentaOrigen, cuentaDestino, monto)
tranfEnt : TranferenciaEntrada
Qué hace el transferir a:?
cuentaDestino : CuentaCliente cuentaOrigen : CuentaCliente
tranferir: unMonto a:cuentaDestino
depositar: unMonto
tranfSal : TranferenciaSalida crearTransferencia(cuentaOrigen, cuentaDestino, monto)
extraer: unMonto
addTransf(transfSal)
Cobrar Mantenimiento
• Una vez al mes, el gerente del banco activa el cobro de mantenimiento
(eso es, cobro de costos por transferencias).
• Por cada cuenta se calcula el costo de las transferencias hechas y se hace
una transferencia del monto total a la “cuenta del banco”
Banco
-nroCuenta
CuentaBancaria
1 -cu
e
n
ta
s
*
banco : Banco cuentas cuenta : CuentaBancaria
cobrarMantenimiento
do:
Cobrar Mantenimiento de una Cuenta Cliente
• se calcula el costo total de las transferencias hechas y se hace
una transferencia del monto total a la “cuenta del banco”
cuenta : CuentaCliente
cobrarMantenimiento
transferencias
do:
transferencia : Transferencia
totalCostos:= totalCostos+costo.
cuentaBanco:=cuentaPropia()
banco : Banco
transferirA(totalCosto, cuentaBanco)
calcularCosto
transferencia : TranferenciaSalida
calcularCosto
Calcular costo de una transferencia
costo ---> 1% del monto de la transferencia
trasferencia:TransferenciaEntr ada
calcularCosto
• el costo por cada transferencia se calcula
dependiendo tipo de transferencia:
– se debe pagar 50 centavos por cada transferencia de
entrada
– y el 1% del monto involucrado por cada transferencia de
salida
Hasta aca tenemos…..
+cobrarMantenimiento() +cuentaPropia() Banco +cobrarMantenimiento() +depositar() +extarer() CuentaBancaria -nroCuenta1 -cu
e n ta s * Cliente -dni -apellido -nombre -telefono +costoTransfEntrada() +costoTransfSalida() ClienteVip +costotranfEntrada() +costoTransfSalida() ClienteEstandar 1 -clientes * +calcularCosto() Transferencia -monto -fecha 1 -transferencias * participóEn +crearTransferencia() TranferenciaSalida +crearTransferencia() TranferenciaEntrada * -origen 1 -destino 1 * +addTransf() CuentaBanco -nroCuenta +addTransf() +depositar() +extraer() +titular() +trasnferirA() CuentaCliente -titular * -c u e n ta s P ro p ia s * 1 -c u e n ta P ro p ia 1
Ambas redefinen el