Download MessageSystem

Document related concepts
no text concepts found
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í