Está en la página 1de 6

Diseño Orientado por Objetos

Taller No. 3
Documento de Diseño

Andrea Linares Cod. 200615663


Nubia Noguera Cod. 200615685
Ciro Ibáñez Cod. 200615667
Giovanny Bravo Cod. 200615672

Mayo 2006
1 DISEÑO DE CAJAS GRISES
El diseño que proponemos se puede descomponer en cuatro partes básicas siendo las mismas:
? Interfaz gráfica: se encarga de la interacción entre el modelo del mundo y entre las agendas
? Modelo del mudo de la agenda: modela la agenda y los componentes de la misma
? Comunicación de la agenda con otras agendas: se encarga de la interacción entre agendas
? Persistencia de la información de la agenda: se encarga de la persistencia de la información propia
de la agenda.
A continuación el diagrama de cajas grises que proponemos para solucionar el problema.

<<JFrame>>
InterfazAgenda
(from interfaz)

Persistencia Agenda ComunicadorAgendas


(from mundo) (from mundo) (from comunicaciones)

La interfaz gráfica que proponemos tendrá el siguiente aspecto

CU004 Consultar Cita Día

CU003 Cancelar Cita CU002 Pedir Cita


Periódica

CU009 Generar Reporte Días


CU001 Pedir Cita
Ocupados

Documento Diseño 2
CU006 Localizar Agenda
Amiga

CU005 Cita Grupo

CU008 Enviar CU007 Enviar


Archivo Agenda Mensaje
Interfaz con las citas y sus respectivos comandos

Ubicación de los requerimientos identificados en el análisis dentro de las cajas grises identificadas
anteriormente.

Requerimiento Caja Gris


CU001 Pedir Cita Agenda
CU002 Pedir Cita Periódica Agenda
CU003 Cancelar Cita Agenda
CU004 Consultar Cita Día Agenda
CU005 Cita Grupo Agenda – Comunicación
CU006 Localizar Agenda Amiga Agenda - Comunicación
CU007 Enviar Mensaje Agenda Agenda – Comunicación
CU008 Enviar Archivo Agenda Agenda – Comunicación
CU009 Generar Reporte Días Ocupados Agenda
RNF01 Comunicación independiente Comunicación
RNF02 Interfaz gráfica Interfaz gráfica
RNF03 Persistencia Persistencia
RNF04 Configuración Agenda - Persistencia
RNF05 Sincronización Agenda – Comunicación

Documento Diseño 3
2 DISEÑO DETALLADO
1. Diagrama del Mundo
Nuestro modelo del mundo tiene como clase principal Agenda, la cual contiene los años que a su vez están
compuestos de meses que además están compuestos de semanas y días, estos últimos contienen las citas
de la agenda. Para que una agenda pueda estar informada sobre el estado de las agendas amigas se usará
un patrón observador en el que la agenda será observadora de sus agendas amigas y viceversa.

Persistencia
(from mundo)
nombreArchivo
Agenda
leeDatos() (from mundo)
escribeDatos() id
direccion IP

pedirCita()
pedirCitaPeriodica()
Año
+Años ArrayList +Lista cancelarCita()
(from mundo)
(from util) consultarCitasDia()
numeroAño reporteDiasOcupados()
1 1
localizarAgendaAmiga()
citaGrupo()
enviarMensajeAgendas()
+meses del Año enviarArchivoAgenda()
12
Mes
(from mundo)
numeroMes

1 +dias del mes


1..31

+semanas del mes Dia


5 Cita
(from mundo)
(from mundo)
Semana fecha +citas
(from mundo) inicio
+dia de la Semana inicioCitas 48
numeroSemana fin
fechaInicial 1 1..7 descripcion
fechaFinal

2. Diagrama de Comunicaciones
En el modulo de comunicaciones encontramos la presentación del protocolo para la comunicación entre las
agendas. Para lograr independencia de la implementación (Corba, RMI, SOAP, etc.) en la comunicación de
las agendas se usa el patrón “Forwarder-Receiver”junto con una cola para recepción de mensajes en cada
agenda la cual mejora la disponibilidad de la comunicación.

PresentacionComunicacion Forwarder
(from comunicaciones) +mensajes (from comunicaciones)

1
creaMensaje() marshal()
deliver()
0..n sendMsg()
+enviaSolicitud
1..1

Agenda +operacion <<IPC>>


(from mundo)
1..1
1
Receiver
(from comunicaciones)

receive()
ColaMensaje
(from comunicaciones)
unMarshal()
receiveMsg()
+mensajeRecibido
IPC msg()
enColaMensaje()
1
darMensaje()

Documento Diseño 4
3. Diagrama de la Interfaz
La interfaz consta de un panel principal junto con unos paneles auxiliares que permiten agrupar los
componentes según la funcionalidad.

ListaCitas Calendario
(from interfaz) (from interfaz)
<<JPanel>>
ListaContactos
(from interfaz)

AccionAgenda <<JPanel>>
(from interfaz)
AccionContactos
(from interfaz)

<<JPanel>> <<JPanel>>
PanelTabAgenda PanelTabContactos
(from interfaz)
(from interfaz)

<<JMenu>>
MenuAgenda <<JFrame>>
(from interfaz) InterfazAgenda
(from interfaz)
JTabbedPane contenedor

4. Propiedades
a. Localización

Elemento del Analisis Elemento del Diseño


RF CU001 Pedir Cita Agenda
RF CU002 Pedir Cita Periódica Agenda
RF CU003 Cancelar Cita Agenda
RF CU004 Consultar Cita Día Agenda
RF CU005 Cita Grupo Agenda – Comunicación
RF CU006 Localizar Agenda Amiga Agenda - Comunicación
RF CU007 Enviar Mensaje Agenda Agenda – Comunicación
RF CU008 Enviar Archivo Agenda Agenda – Comunicación
RF CU009 Generar Reporte Días Ocupados Agenda
RNF01 Comunicación independiente Comunicación
RNF02 Interfaz gráfica Interfaz gráfica
RNF03 Persistencia Persistencia
RNF04 Configuración Agenda – Persistencia
RNF05 Sincronización Agenda – Comunicación
Clase Agenda Clase agenda de diseño
Clase Año Clase Año de diseño
Clase Mes Clase Mes de diseño
Clase Semana Clase Semana de diseño
Clase Día Clase Dia de diseño
Clase Cita Clase Semana de diseño

Documento Diseño 5
b. Aislamiento
Al descomponer la agenda en unidades pequeñas y funcionales se logra limitar el impacto de un
cambio sobre el modelo del mundo. Por ejemplo si se requiere programar una cita semanal la clase
“Semana”se debe modificar sin que se requieran cambios en las otras clases.

c. Flexibilidadad
Las comunicaciones de nuestro diseño son flexibles, para esto usamos el patrón “Forwarder-
Receiver”

d. Reutilización
Debido al aislamiento de los componentes para la solución de esta aplicación, es posible reutilizar el
componente de comunicaciones en futuras aplicaciones en las cuales se requiera independencia de
la implementación en el esquema de comunicación.

e. Evolución
Los requerimientos futuros pueden cubrirse haciendo cambios a las clases definidas en nuestro
modelo.

5. Complejidad de las operaciones criticas

Requerimiento Espacio Tiempo Complejidad O(f(n))


RF-CU001 Agenda contendrá una colección en la cual O(n) donde n es el número de años para los
Pedir Cita almacenará los años para los que existen citas. cuales exista al menos una cita en la agenda. El
Cada año contendrá un arreglo con los meses y a resto de asociaciones entre las diferentes clases
su vez los meses contendrán un arreglo para los del modelo se implementarán usando arreglos
días y otro para las semanas. lo cual permite que su operación sea O(1)
mejorando el desempeño.
RF-CU002 Idem RF-CU001 O(n) donde n es el número de años para los
Pedir Cita Periódica cuales exista al menos una cita en la agenda.

RF-CU003 Idem RF-CU001 O(n) donde n es el número de años para los


Cancelar Cita cuales exista al menos una cita en la agenda.

RF-CU004 Idem RF-CU001 O(n) donde n es el número de años para los


Consultar Cita Día cuales exista al menos una cita en la agenda.

RF-CU005 Idem RF-CU001 pero aumentará el tiempo O(n) donde n es el número de años para los
Cita Grupo dependiendo la comunicación con las agendas cuales exista al menos una cita en la agenda.
amigas
RNF03 La cantidad de información del archivo se cargará O(n) donde n es el número de líneas que
Persistencia dependiendo de la política establecida en el contiene el archivo
archivo de configuración, con el fin de mejorar
desempeño o de ocupar menos espacio.

Documento Diseño 6