Title: Caso de estudio: Un sistema de mensajer
1Caso de estudio Un sistema de mensajería
- ELO-329Diseño y programación orientados a objetos
2Descripció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.
3Aná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.
4Caso 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.
5Caso 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.
6Caso 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.
7Caso 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.
8Caso 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.
9Variante 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.
10Caso 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.
11Variació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.
12Análisis/Diseño
- Tarjetas CRC para sistema de mensajería.
- Algunas clases que parecen obvias
- Casilla
- Mensaje
- SistemaMensajería
13Tarjetea CRC Iniciales
- Para Casilla (Mailbox)
- Para Cola de mensajes
- Sistema de Mensajería
14Telé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
15Conexió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.
16Conexión
17Aná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.
18Resultado del Análisis
19Aná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ú.
20Resultado de análisis
21Diagramas UML Dependencia
22Diagramas UML Diagrama de clases
23Diagramas UML Diagrama de secuencia Dejar un
mensaje
24Diagramas UML Diagrama de secuencia Escuchar
mensaje
25Diagramas de estado de una conexión
26Implementación
- Message.java
- MessageQueue.java
- Mailbox.java
- Connection.java
- MailSystem.java
- Telephone.java
- MailSystemTest.java
- Todas aquí