Debate sobre ejercicio-carritocompra

1 view
Skip to first unread message

juanant...@gmail.com

unread,
Jan 14, 2008, 4:22:53 PM1/14/08
to ceac-j2ee
Hola a todos!
sobre las dudas de paco aquí va mi aportación:
1- sobre la duda de más metodos a implementar: podríamos tener un
metodo que calcule el total de la cesta con todos los articulos
incluidos. También deberíamos tener un metodo que borre de golpe todos
los items de un mismo producto, y otro metodo que añada varios items
de un mismo producto
Recordad que debéis hacerlo con pruebas, ya que hacerlo sin
orientación a pruebas no tiene mucha dificultad que digamos. Lo
interesante es el enfoque a pruebas vale?
2- los usuarios estarán agrupados en roles, de esta forma tendremos
por ahora el rol de cliente registrado, administrador y por último
pero muy importante el de visitante (es decir cliente sin registrar)

nos vemos el miércoles!

rOVE

unread,
Jan 16, 2008, 12:00:28 PM1/16/08
to ceac-j2ee
¿Que es mas correcto?

a) Crear un Objeto de una clase Controlador para cada Cliente, es
decir el obj cliente tiene una propiedad que es de tipo Controlador,
por lo tanto cada instancia de cliente tambien creara una instancia de
Controlador.


b)Por un lado tener una clase Controlador y para las transacciones que
haga falta en vez de tener una propiedad de tipo controlador en la
clase Cliente, en la llamada a las funciones de controlo enviarles la
instancia de la clase cliente que necesitemos en cada momento, asi
seria mas flexible y ocuparia menos en memoria.

seguramente exista otro diseño para solucionar esto.

Francisco Galvez

unread,
Jan 17, 2008, 6:23:35 AM1/17/08
to ceac...@googlegroups.com
El 16/01/08, rOVE <rove...@googlemail.com> escribió:
Lo veo mejor de la segunda manera. O bien el controlador tiene una
lista previa de todos los clientes o se le pasa al controlador el
cliente que se desea que controle en ese momento. El controlador debe
ser independiente del interfaz y en lo posible del cliente y en el
momento que el cliente contiene en si mismo al controlador se estropea
el asunto.

La explicación más simple. Imagina que para que el cliente sea dato
de alta no pueda tener deudas en el rae (y no como yo que le debo
hasta a la máquina del café). La lógica de negocio (donde el programa
realiza su labor, distinto del mostrar algo u operar con datos
directamente) es la que se debe encargar de ello, en este caso el
controlador y no el cliente. Es decir que si el cliente tuviera el
controlador debería el mismo cliente el que mire si está en el rae en
vez de dar de alta al cliente en funión de una condición externa.


Un saludo.
PD: con un papel y un lápiz me explico mejor sorry.

Paco

unread,
Jan 17, 2008, 6:37:25 AM1/17/08
to ceac-j2ee
Hola:
Por si le sirve de ayuda a algun@ (a mi todo lo que no sea pensar me
ayuda mucho).

Si estais con la prueba de registrar usuarios, debeis hacer el test y
decir este ti@ está en la lista-> puede continuar con la compra y se
le pasa a cliente registrado o bien no está en la lista -> po que se
registre.

Como hicimos ayer tengo una lista de tres cliente en una clase base de
datos y una función me dice si un nombre y contraseña corresponde a un
cliente. Pero para probar si un cliente está en esa lista tengo qye ir
uno a uno.

Por complicarme la vida quise probar el data provider del testng. Tras
un par de cabezazos lo hice funcionar y aquí va el resultado: creo un
par (cliente posible, resultado esperado para ese cliente)

PD: como comparo con un cliente y no con dos cadenas de texto para
facilitarme la vida creo el cliente del tiron con nombre y contraseña
como observareis en el constructor. El eclipse os echará una mano.


/*
* Ejemplo empleando el dataprovider
*
*/
@DataProvider(name = "listaclientes")
public Object[][] createData() {
return new Object[][] {{new Cliente("pepe","pepe"),true},{new
Cliente("paco","paco"),true},{new Cliente("luis","luis"),false}};
}

@Test(dataProvider="listaclientes")
public void pruebaRegistroUsuarioBis(Cliente clienteprueba, boolean
esCliente){
assert(controlador.examinaUsuario(clienteprueba)==esCliente):"se ha
producido un error de concordancia existe/no existe";
}

Reply all
Reply to author
Forward
0 new messages