Como algunos sabéis, estoy haciendo un máster de informática.
Ha habido todo tipo de asignaturas de momento, pero en general me han gustado, aunque la de UML... buff me cuesta un huevo ponerme con los diseños.
Las otras han sido XML y servidores, JAVA con EJBs y Servicios Web, y Patrones de programación.
En una de las práticas, la de patrones de programación, tenía que hacer una aplicación que simulase un restaurante de 6 mesas, atendido por un camarero simpaticón que se llamaba "Johnny". Como digo, realizada usando patrones.
Al final, como hemos trabajado en equipo 3 colegas durante todo el máster en las diferentes asignaturas, y repito... las de uml no se me daban bien... a mi me ha tocado hacer esta práctica, casi por triplicado, pero con mucho gusto.
¡A ver, para que no nos lleve a confusión! Cada uno ha hecho sus prácticas, pero es mucho más fácil hacerlas si trabajas en equipo, orientas, ayudas, o tu haces una parte que otro no sabe, y otro hace una parte que tu no sabes, y luego así ya la puedes trabajar para que quien no la sabía, aprenda.
Así pues, como digo, la práctica de patrones me tocó a mi.
He usado los siguientes patrones
builder: nos sirve para construir el menú y cada uno de los objetos de la carta
state: controlará los estados de la mesa, que pueden ser libre, comiendo, esperando (la factura)
observer: se encargará de avisar al camarero, cuando una mesa cambie de estado
facade: me actuará de fachada para calcular el precio de la factura y ver de qué estaba compuesta
Como comento, la he hecho por triplicado.
Una era una aplicación swing normalita, con 6 mesas y botones para lanzar los cambios de estado.
Otra parecida, pero un poco más currada en cuestión de interface, con imágenes de los simpsons simulando el bar de mou.
Y en la última, que acabo de terminar, en vez de tener una aplicación hecha en swing, la he hecho básica, y que sacase los mensajes por el log.
¡Os enseño el resultado de esta última!
---------------------------------------------------------------------------------------
EL MENÚ DEL ELVIS PRESLEY'S BURGER ES:
Suspicious Mind, Increíble hamburguesa de ¼ de libra, con cebolla a la plancha, bacón y queso : 5.5
My Way, Increíble hamburguesa de ¼ de libra con lechuga y tomate e ingredientes a escoger entre: relish (salsa de pepinillo dulce picado), cebolla, huevo, bacón y queso : 4.0
Patatas:
Classics: Las patatas clásicas de corte fino, por sólo 22.0€
Delux: Patatas de corte grueso con salsa especial, por sólo 3.0€
Postres:
New York Cheese: Cake: Tarta de queso, por sólo 4.95€
Manhattan Apple: Tarta de manzana, por sólo 4.5€
Bebidas:
Elvis-Cola: , por sólo 1.5€
Surrender: Zumo de frutas, por sólo 2.0€
ABRIMOS EL RESTAURANTE POR LA MAÑANA TEMPRANO PARA USTED:
Johnny: La mesa 1 cambia al estado libre
Johnny: A limpiar la mesa para esperar nuevos clientes
Johnny: La mesa 2 cambia al estado libre
Johnny: A limpiar la mesa para esperar nuevos clientes
Johnny: La mesa 3 cambia al estado libre
Johnny: A limpiar la mesa para esperar nuevos clientes
Johnny: La mesa 4 cambia al estado libre
Johnny: A limpiar la mesa para esperar nuevos clientes
Johnny: La mesa 5 cambia al estado libre
Johnny: A limpiar la mesa para esperar nuevos clientes
Johnny: La mesa 6 cambia al estado libre
Johnny: A limpiar la mesa para esperar nuevos clientes
LA MESA 1 ES OCUPADA POR UNA AGRADABLE PAJERA QUE QUIERE ALMORZAR:
PIDEN UNA Suspicious Mind
PIDEN UNA My Way con Cebolla, Bacon, Queso
PIDEN UNAS PATATAS Classics
PIDEN 2 BEBIDAS Elvis-Cola
PIDEN 1 POSTRE New York Cheese y otro Manhattan Apple
Johnny: La mesa 1 cambia al estado comiendo
Johnny: Cocinero!!!! una de....
- Suspicious Mind, Increíble hamburguesa de ¼ de libra, con cebolla a la plancha, bacón y queso : 5.5
- My Way, Increíble hamburguesa de ¼ de libra con lechuga y tomate e ingredientes a escoger entre: relish (salsa de pepinillo dulce picado), cebolla, huevo, bacón y queso : 4.0
** Cebolla
** Bacon
** Queso
- Classics: Las patatas clásicas de corte fino, por sólo 22.0€
- Elvis-Cola: , por sólo 1.5€
- Elvis-Cola: , por sólo 1.5€
- New York Cheese: Cake: Tarta de queso, por sólo 4.95€
- Manhattan Apple: Tarta de manzana, por sólo 4.5€
LOS CLIENTES HAN TERMINADO DE COMER Y ESTÁN ESPERANDO A LA FACTURA
Johnny: La mesa 1 cambia al estado esperando
Johnny: La factura de los señores es
La factura es:
Suspicious Mind - precio:5.5
My Way - precio:4.0
Classics - precio:22.0
Elvis-Cola - precio:1.5
Elvis-Cola - precio:1.5
New York Cheese: Cake - precio:4.95
Manhattan Apple - precio:4.5
*************
A pagar: 45.45€
LOS CLIENTES DE LA MESA 1 ESTÁN CONFORMES Y LA COMIDA LES HA GUSTADO, YA SE VAN, PERO VOLVERÁN
Johnny: La mesa 1 cambia al estado libre
Johnny: A limpiar la mesa para esperar nuevos clientes
---------------------------------------------------------------------------------------
Supongo que leyendo el log, habréis observado como se construyen los objetos (usando builder). Como la mesa va cambiando de estado (State), y como estos cambios de estado desencadenan que al pobre Johnny le toque currar. (observer)
Y como finalmente, para ver el pedido y calcular su precio, uso el facade.
Sí, es un post un poco chorra... y realmente no explico mucho de programación para aquellos que hayan llegado hasta aquí ávidos de instrucciones, pero me apetecía escribir algo de mi "vida estudiante-profesional".
Si alguien está interesado en alguna cosa más, como el diseño de clases, como he implementado algún patrón, o como he hecho lo que sea, no tiene más que dejar un comentario, y su petición será atendida! :)
¡Un saludo patronil!
Buenas, buscando por internet patrones de diseño, he llegado hasta aquí! Te comento, tengo que hacer una práctica parecida a la que describes en este post, implementando varios patrones, pero no consigo obtener el diseño global de la aplicación, creo que hago demasiadas relaciones "inútiles" entre clases y por eso se me lía el diagrama de una forma exagerada. Si pudieras poner el diseño del diagrama de clases para a ver si así consigo ver cómo se pueden acoplar diferentes patrones en una misma aplicación, te lo agradecería enormemente!! Gracias!
ResponderEliminarHola!
Eliminar¡Hace casi un año de esto!
Buscaré el diseño de clases, pero no te prometo nada, porque no se si lo tendré.
De cualquier forma, te puedo ayudar con tu práctica si quieres.
Buenas!! yo también estaría enormemente agradecido si pudieres facilitarme la solución a este ejercicio, tengo que hacer uno muy similar, y tu solución me ayudaría muchísimo. Para mí, resolver este tipo de ejercicios es muy abstracto, hasta el punto de que llevo así varios días y no consigo sacar nada en concreto. Mi correo es sereluja88@hotmail.com por si pudieses enviarme por lo menos el diagrama de clases del ejercicio.
EliminarUn saludo y muchas gracias de antemano.
Buenas tardes !!!
ResponderEliminarEste correo que te escribo es por si tienes a tu disposición la práctica de patrones software para la aplicación del Elvis Presley's Burger. Estoy realizando un curso de patrones de software por Internet en el que me piden realice esta practica, y la verdad es que por más que repaso los apuntes de los patrones, no se me ocurre como puedo aplicarlo. Si no fuera abusar mucho de tu amabilidad, te agradecería me pudieras facilitar los esquemas UML, si dispones de ellos.
un saludo, muchas gracias.
mi email es: jmanuelsuape@gmail.com
Hola Chabier?, Hay alguien por aquí??? Es posible conseguir algo de ejemplo de la implementación de los patrones en esta aplicación?
ResponderEliminarMuchas gracias...