caso de estudio: un sistema de mensajería elo-329:diseño y programación orientados a objetos

Post on 02-Apr-2015

106 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Caso de estudio: Un sistema de mensajería

ELO-329:Diseño y programación orientados a objetos

Descripción general

Usaremos texto a cambio de voz, teclas del teléfono y denotar el colgar.

1 2 ... 0 # solos en una línea significarán teclas del teléfono.

H sobre una línea significa colgar. Toda otra entrada significará voz. Es posible definir una GUI adecuada, por

ejemplo poniendo botones para las teclas y campos de texto para los mensajes. Dejaremos esto de lado.

Análisis: como herramienta usaremos definición de casos de uso.

Caso de uso “Dar con una extensión.” 1. Usuario digita el número principal del

sistema. 2. El sistema responde:

Ingrese el número de la casilla seguido de # 3. El usuario digita el número de la

extensión. 4. El sistema responde

Usted ha dado con la casilla xxxx. Por favor deje su mensaje ahora.

Caso de uso: Dejar un mensaje

1. El llamador lleva a cabo el caso “dar con una extensión”.

2. Llamador expresa su mensaje 3. Llamador cuelga 4. EL sistema deja el mensaje en la

casilla.

Caso de uso: “Log in”

1. EL dueño de la casilla desarrolla el caso “Dar con una extensión”

2. El dueño de la casilla digita su password y #

(Default password = número de casilla. Para cambiarla, ver “Cambio de código de entrada”)

3. El sistema reproduce el menú de la casilla: Ingrese 1 para administrar sus mensajes. Ingrese 2 para cambiar su código de entrada. Ingrese 3 para cambiar su saludo.

Caso de uso: Escuchar Mensajes. 1. El dueño de la casilla lleva acabo el “Log in” 2. El dueño de la casilla selecciona la opción ”escuchar mensajes" del

menú. 3. El sistema responde con el menú:

Presione 1 para escuchar el mensaje actual Presione 2 para borrar el mensaje actual Presione 3 para grabar el mensaje actual Presione 4 para volver al menú de la casilla.

4. El dueño de la casilla selecciona ”escuchar el mensaje actual" 5. El sistema reproduce el mensaje nuevo mensaje más actual, o si no

hay nuevos mensajes, el menos antiguo. Nota: Mensajes reproducidos no implica que se remuevan de la cola. 6. El sistema reproduce el menú de mensajes. 7. Usuario selecciona “borrar mensaje actual”. 8. El sistema remueve el mensaje. 9. Continúa con paso 3.

Caso de uso: Escuchar un Mensaje

Variación #1 1.1. Llegar hasta paso 6 1.2. Usuario Selecciona ”grabar mensaje

actual". El mensaje es removido de la cola de

mensaje nuevos y es puesto en la de antiguos.

1.3. El caso de uso continúa en paso 3.

Caso de uso: Cambio de mensaje de saludo

1. El dueño de la casilla lleva a cabo el caso “Log in”

2. El dueño de la casilla selecciona la opción “Cambio de mensaje de saludo” del menú.

3. El dueño de la casilla dice el nuevo mensaje de saludo.

4. El dueño presiona # 5. El sistema configura el nuevo saludo.

Variante caso: Cambio de mensaje de saludo.

Variación #1: Cuelga antes de confirmar. 1.1. Comenzando de paso 3. 1.2. EL dueño cuelga. 1.3. El sistema mantiene le antiguo

mensaje de saludo.

Caso de uso: Cambio de password

1. El dueño de la casilla lleva a cabo el caso “Log in”

2. El dueño selecciona la opción ”cambio de password” del menú.

3. El dueño digita el nuevo código de paso.

4. El dueño presiona # 5. El sistema configura la nueva

password.

Variación a caso de uso: Cambio de password.

Variación #1: Cuelga antes de confirmar. 1.1. Comienza en paso 3 1.2. El dueño cuelga. 1.3. El sistema mantiene la antigua

password.

Análisis/Diseño

Tarjetas CRC para sistema de mensajería. Algunas clases que parecen obvias * Casilla * Mensaje * SistemaMensajería

Tarjetea CRC Iniciales

Para Casilla (Mailbox)

Para Cola de mensajes

Sistema de Mensajería

Teléfono

¿Quién interactúa con el usuario? El teléfono toma los ingresos vía teclado y

voz. El teléfono reproduce los mensajes al

usuario. Así el teléfono puede ser:

Conexión

¿Con quién se comunica el teléfono? Con el sistema de mensajería? Qué tal si hay múltiples teléfonos? Cada conexión puede estar en diferente

estado (marcando, grabando, recuperando un mensaje, ...)

Debería el sistema de mensajería seguir la pista de todas las conexiones?

Es mejor dar esta responsabilidad a una nueva clase.

Conexión

Análisis de casos de uso: Caso de uso: Dejar un mensaje 1. Usuario digita extensión. El teléfono envía número a conexión.

(Agregar Conexión como colaborador de teléfono.) 2. Conexión pide al sistema de mensajería buscar una casilla. 3. Conexión pide a casilla el mensaje de saludo.

(Agregar responsabilidad “Administrar saludo” a casilla, agregar Casilla como colaborador de conexión)

4. Conexión pide a Teléfono reproducir el saludo. 5. Usuario dice el mensaje. El teléfono pide a conexión grabarlo.

(Agregar responsabilidad “grabar entrada de voz” en conexión) 6. Usuario cuelga. Teléfono notifica a Conexión. 7. Conexión construye Mensaje. (Agregar tarjeta para clase Mensaje, agregar Mensaje como

colaborador de Conexión) 8. Conexión agrega mensaje a casilla.

Resultado del Análisis

Análisis de caso de uso: Escuchar un mensaje.

1. Usuario tipea password. Teléfono notifica a conexión. 2. Conexión pide a casilla chequear la password. (agregar responsabilidad “Administrar password” a casilla). 3. Conexión define casilla actual y pide a teléfono reproducir menú. 4. Usuario selecciona ”administrar mensajes". Teléfono pasa tecla a Conexión. 5. Conexión pide a Teléfono reproducir menú. 6. Usuario selecciona ”escuchar mensaje actual". Teléfono pasa tecla a

conexión. 7. Conexión obtiene primer mensaje desde la casilla actual (agregar ”obtener mensaje" como responsabilidad de casilla). Conexión pide al teléfono reproducir en mensaje. 8. Conexión pide a teléfono reproducir menú. 9. Usuario Selecciona ”grabar mensaje actual". Teléfono pasa tecla a conexión 10. Conexión pide a casilla grabar el mensaje (Modificar responsabilidad de Casilla para “recuperar, grabar, borrar

mensajes”) 11. Conexión pide a teléfono reproducir menú.

Resultado de análisis

Diagramas UML: Dependencia

Diagramas UML: Diagrama de clases

Diagramas UML: Diagrama de secuencia: Dejar un mensaje

Diagramas UML: Diagrama de secuencia: Escuchar mensaje

Diagramas de estado de una conexión

Implementación

Message.java MessageQueue.java Mailbox.java Connection.java MailSystem.java Telephone.java MailSystemTest.java Todas aquí

top related