Documente Academic
Documente Profesional
Documente Cultură
Control 5
Juan Alvarez Nelson Baloian Kurt Schwarze Erich Reimberg Andrs Muoz
Tabla de Contenidos
TABLA DE CONTENIDOS 1. CAJERO
AUTOMTICO
2 3 4 5 6 7 11 12 14 15 18 21 25 28
2. VENDOMTICA 3. APUESTAMTICO 4. VIDEOJUEGO 5. EJERCICIO UML AO 2001 6. CENTRAL TELEFNICA 7. LA BIBLIOTECA 8. EL VUELO 9. FUTBOL ON-LINE 10. EJERCICIO UML AO 2002 11. JUEGO
DE
DAMAS
COMPRAS
1. Cajero automtico
El banco EstafaBank necesita ayuda para modelar el sistema que har funcionar sus nuevos cajeros automticos porttiles. stos, del porte de un telfono pblico, le permitirn al usuario realizar slo las operaciones ms simples: retirar, depositar y consultar saldo (ni soar con movimientos entre cuentas o compras de tarjetas de prepago telefnico). Para ello ten en consideracin que: Se pide ingresar la clave del usuario posteriormente al paso de la tarjeta por la ranura. No se puede retirar ms fondos de los que realmente hay, notificando de esta situacin al usuario.
In g r e s a r c la v e
C la v e n o v lid a
R e tir a r
S a ld o n o a lc a n z a
<<u s e s >>
C o n s u lt a r S a ld o
<<u s e s >>
D e p o s it a r
2. Vendomtica
La empresa Nerdcaf tiene planes para instalar una nueva mquina vendomtica inteligente en la facultad. Inteligente porque cuando detecte que un cliente intenta comprar un producto agotado, se conectar automticamente a la central de abastecimiento y dar aviso para realizar la reposicin. Adems, como buena vendomtica, debe dar vuelto y no dejar que la hagan lesa pagando menos del precio de lo que est vendiendo.
In g r e s a r d in e r o / r e tir a r v u e lt o
< <e x te n d s >>
M o n to n o a lc a n z a
S e le c c io n a r p r o d u c to C lie n te
P ro d u c to s in s t o c k
<<u s e s >>
C o n e x i n
C e n tr a l d e a b a s te c im ie n to
3. Apuestamtico
Esta es la ltima papita para los apostadores empedernidos: una mquina que les permite obtener informacin de caballosc / carreras / premios, cargar crdito de dinero desde su cuenta corriente (accesible va RedBanc), realizar apuestas y hasta imprimir un boleto que es cambiable por efectivo en la caja del local de apuestas (ya que volver a depositarla es incentivo para que no la gaste). No se aceptan apuestas que involucren ms dinero que el del crdito actual El crdito que el apostador desee cargar debe solicitarse al servidor de redbanc mediante una conexin. Tanto la obtencin de informacin como el pago de apuestas utilizan la impresora incluida en el apuestamtico. La informacin de carreras/caballos/apuestas se mantiene en un computador con la base de datos de Teletrak
O b te n e r r e s u lta d o s c a rre ra s
<<u s e s >>
C o n s u lt a
<<u s e s >>
P a g a rs e
<<u s e s >>
Im p r e s i n
B D T e le tr a k
C a rg a r c r d ito A p o s ta d o r e m p e d e r n id o A p o s ta r
<<u s e s >>
T r a n s a c c i n
C r d ito n o a lc a n z a
R edbanc
4. Videojuego
Esto es una invencin de los aos 70, que para ser revividos dentro de un computador hogareo deben utilizarse los llamados emuladores. Para construir uno se te pide comenzar por disear los casos de uso del sistema (suponiendo que es una mquina arcade original) en que el jugador puede escoger un personaje, una misin, jugar la misin y, si logra un buen desempeo, ingresar su top-score. Tambin se pide incluir los casos en que el jugador conoce del tema y activa las claves para acceder a los personajes y misiones ocultas del juego.
E scoger p e r s o n a je
E scoger p e r s o n a je s o c u lto s
E scoger m is i n
<<u s e s >>
E scoger m is i o n e s o c u lta s
J ugar m is i n J ugador
<<u s e s >>
G u a rd a r T o p -s c o r e
Usuario
Verificar
<<uses>> Aerolnea
Realizar Reserva Cancelar Reserva
Cliente
Algunas pautas para corregir: Solo hay 3 actores. Si no reconocen los 3 actores, descontar 0.5 por cada actor que no vean o 0.5 por actor de ms. Es cruel, pero no reconocern ms de 4 actores. Los procesos base representables en casos de uso son: Registro (1 punto y obvio), Reserva (2 puntos) y Cancelar (2 puntos). El caso de uso Verificar es solo un caso especial en el caso de realizar reserva. Tambin es posible que Cancelar sea un <<extends>> de Reserva. No es necesario que usen <<uses>> o <<extends>>
Respuesta de la Pregunta 2
3. Diagrama de Interaccin
Identifique los objetos (2 puntos) y dibuje el Diagrama de Secuencia (5 puntos) para el proceso de reserva de avin del problema anterior, considerando que: (a) Se debe verificar si el usuario es cliente. (b) Se debe verificar la disponibilidad en la aerolnea deseada para la fecha y hora sealada. (c) Una vez que se verifica todo, se cursa la Reserva.
Al igual que en la Preg 2, esta es solo una solucin (aunque es ms facil que la lgica sea obvia de revisar):
una Reserva
un Cliente
un Vuelo
cliente := verifica()
un Pasaje
compra()
Ese funcionamiento tambin se basa en: Los objetos base son: Reserva (1 punto), Pasaje (1 punto). Cliente y Vuelo son objetos que pueden ser creados para que cada uno verifique las condiciones. Los importante es que en el diagrama aparezcan las verificaciones y condiciones (a) de 1 punto (b) de 1 punto y (c) de 1 punto. Los puntos restantes son por darse cuenta que Pasaje se crea solo cuando todo es verdadero y ste debe comprar fsicamente la reserva (2 puntos). ver_aerolnea() y compra() son autodelegaciones para llamar al software externo.
Respuesta de la Pregunta 3
4. Diagramas de Estado
Elija uno de los objetos dibujados en el problema 3 y dibuje su Diagrama de Estados (7 puntos). Si no hizo la pregunta 3, suponga que tiene la clase Reserva y piense qu estados posee.
Al igual que en la Preg 2 y 3, esta es solo una solucin de otras alternativas: Ingreso validar reserva Verificacin do/ver cliente do/ver vuelo
[falla]
[se realiza]
completar
Esta pauta es ms compleja y hay que considerar que: Los estados no sean acciones condicionadas, sino que verdaderos estados. Aqu estn todos los estados de una Reserva (3 puntos). Las actividades corresponden a las acciones que puede realizar la reserva en cada estado y no a condiciones o una secuencia de llamadas a mtodos (2 puntos). Las transiciones son acciones condicionadas o no. Solo son condiciones si tienen ms de una salida. Las otras son transiciones con o sin etiqueta. (2 puntos) Recuerden que pueden hacer cualquier objeto (pasaje por ejemplo) que es ms facil.
Respuesta de la Pregunta 4
10
6. Central Telefnica
Se quiere modelar una llamada a travs de una central telefnica.
Gentileza del Profesor Kurt Schwarze
Para esto se tienen cuatro objetos involucrados: dos interlocutores (s y r), una central y una conversacin. La secuencia empieza cuando un interlocutor enva un mensaje a la central al descolgar al auricular. La central da el tono de llamada, y el interlocutor marca el numero al que desea llamar. El tiempo de marcado debe ser menor que 30 segundos. Se pide dibujar el diagrama de interaccin (solo el de secuencia) para esta situacin.
11
7. La Biblioteca
Se quiere modelar el comportamiento de una biblioteca con diagramas de clases. Este comportamiento se puede modelar de la siguiente forma:
Gentileza del Profesor Kurt Schwarze
En donde los diamantes indican los conceptos de Agregacin y Composicin. La agregacin es simple de leer, puesto que en el caso de la clase Biblioteca y la clase Lector se puede decir que biblioteca tiene como integrantes a los lectores, sin embargo ambos pueden vivir por separado (rombos sin rellenar). La composicin es una agregacin ms fuerte y quiere encarecer la necesidad de una clase de la otra, en el caso del diagrama, tenemos que si el Libro desaparece, sus Pginas tambin son destruidas con l (rombo negro). Veamos el cdigo en Java que representa este diagrama de clases:
public class Libro{ public Pagina pags[]; } public class LibroBiblioteca extends Libro{ private Lector usuario; } public class Persona{ } public class Lector extends Persona{ private LibroBiblioteca lb[4]; } public class Prestamo{ }
12
Estas son las clases que son generadas. Para agregar funcionalidades a los metodos de las clases, es necesario ver el diagrama de estado correspondiente a cada clase.
13
8. El Vuelo
Se desea modelar con un diagrama de estados un Vuelo. Esto es, desde que se toma el taxi hasta que despega el avin.
Gentileza del Profesor Kurt Schwarze
Vemos que el diagrama puede poseer cero o ms puntos de salida, pero solo un punto de partida.
14
9. Futbol On-Line
La ANFP quiere comprar un software para mantener en lnea los resultados de los partidos de ftbol en un servidor web existente. Este software debe ser operado por unos especialistas que se encuentran en la caseta de transmisin del estadio, y sera alimentado con los siguientes datos: Al inicio del software, ingresa los nombres de los equipos y la nmina de jugadores. Durante el partido se van almacenando los goles indicando el minuto, el jugador y equipo que convirti el equipo. Tambin se pueden ingresar casualidades como tarjetas amarillas, tarjetas rojas, lesiones y cambios en la formacin del equipo.
Considere que el servidor web est fuera del sistema a modelar. (a) Identifique los casos de uso y los actores que permitan dibujar un diagrama bsico del sistema. Operador Ingresar Equipo
<<uses>>
<<uses>>
Ingresar Lesin
15
Escoja el proceso Ingresar Equipo del sistema y escriba un diagrama de Interaccin, identificando los objetos que participan en ese proceso.
(c) (d)
Propuesto: Elija otro proceso y haga el diagrama de interaccin. Para el objeto Jugador, dibuje un diagrama de estados.
(e)
16
17
Problema 2
Dado el siguiente sistema de control de salidas de buses, en su especificacin de casos de uso: Proceso de Inscripcin de Mquina: En este proceso, el operador ingresa un bus identificado por su patente, chofer, sobrecargo, capacidad de pasajeros y distribucin de asientos y queda guardado en la base de datos del sistema. Proceso de Ingreso de Planilla : En este proceso, el operador indica las patentes de los buses que deben salir, andn y el horario de salida de ste. Esto se hace 1 vez al da y se planifican todas las salidas del da. Proceso de Ingreso de Salida: En este proceso, el operador ingresa la patente del bus que va saliendo y el sistema guarda la hora de llegada. Adems, el sistema actualiza que el andn en el cul estaba ahora est vaco. Proceso de Ingreso de Llegada: En este proceso, el operador ingresa la patente del bus que viene llegando y el sistema guarda la hora de llegada. Adems, el sistema devuelve el andn en el cul debe estacionarse el bus (andn vaco). Proceso de Consulta de Salida y Llegadas : En este proceso, el usuario ve una planilla obtenida desde la base de datos con todas las prximas salidas (prxima hora) y las llegadas que han ocurrido en esa ltima media hora.
18
Ingreso Planillas
Operador
Ingreso Salida
Ingreso Llegada
Consulta Salidas y Llegadas Usuario (a) Dibuje el diagrama de Secuencia para el proceso de Ingreso de Llegada. Recuerde que si no hay andn vaco, el bus debe quedar en espera hasta que lo haga. una ventana
consulta() ex := falso
un bus
un andn
asignar_a_bus()
19
inscribir INSCRITO patente, chofer, sobrec, cap asignar en planilla ASIGNADO anden hora_salida
llegar a andn
VIAJANDO destino
llegar a terminal
20
21
Posicin (Pos)
Pieza
x: int y: int
Tablero
Celda
Controlador
Jugador
Movida
22
un Controlador
un Tablero
un Jugador
una Movida
inicializar()
m := obtenerMovida()
new
movOk := validar(m)
[movOk] ejecutar(m)
[movOk] cambiarTurno()
23
3. Dibujar el diagrama de estados del sistema considerando que: Comienza el jugador 1 La movida entregada por el jugador pasa por una validacin: en caso de ser anulada se vuelve a esperar la movida del mismo jugador; si no, se ejecuta. Despus de cada ejecucin, se analiza si el juego puede continuar o si alguno de los jugadores gan (o sea, no le quedan fichas a su oponente).
inicializando
[jugada vlida]
ejecutando
gana jug. 1
bloqueado
gana jug. 2
24
viajar
do / Ir al piso
DIAGRAMA DE CLASE
Ascensor direccion: boolean piso_actual mover() detener() status()
1 m
Boton iluminar: boolean=false
Boton_Ascensor piso_num:int
Solucin
class Ascensor{ public int direccion; public int piso_actual; public Ascensor(){ } public void mover(){ piso_actual+=direccion; } public void detener(){ direccion=0; } public int status(){ return direccion;
25
26
static public void main(String args[]){ for(int i=0;i<n;i++){ bp[i]=new Boton_Piso(i); ba[i]=new Boton_Piso(i); } while(true){ //vemos que pisos han sido apretaods y los agregamos a la cola for(int i=0;i<n;i++){ if(bp[i].status()&(bp[i].piso_numa.piso_actual)/a.direccion=1){ cola.encolar(bp[i]); bp[i].cancelar_linuminar(); } if(ba[i].status()& (ba[i].piso_numa.piso_actual)/a.direccion=1){ cola.encolar(bp[i]); ba[i].cancelar_linuminar(); } } if (cola.vacia() && TimeAhora()-T_ultimo< T_espera){ cola.encolar(1); direccion = -1; } //recorremos los pisos while(!cola.vacia()){ while(a.piso_actual!=c.sacar()){ a.mover() } puerta.abrir(); //se suben/bajan puerta.cerrar(); T_ultimo=TiempoAhora(); } a.detener(); } } }
27
28