Isoo07 2006

También podría gustarte

Está en la página 1de 21

DISEO DETALLADO

Ingeniera de Software Orientada a


Objetos
1
DISEO DETALLADO
Diseo de objetos
Modelo de objetos del diseo
Especifica las clases que conforman al componente e ilustra la
estructura de las clases
Diseo del comportamiento
Modelo de comportamiento del diseo
Especifica la colaboracin de los objetos dentro de un
componente.
Se utilizan escenarios para refinar el diagrama de clases,
produce declaraciones de mtodos y establece las conexiones
entre las clases
2
DISEO DETALLADO
Consideremos la aplicacin Terminal Bancario, con
los siguientes requisitos:

1.El usuario puede seleccionar cualquiera de sus
cuentas

2.El usuario puede revisar el saldo de cualquiera de
sus cuentas

3.El usuario puede pagar deudas desde cualquiera
de sus cuentas

3
MODELO DE OBJETOS

Usuario
Cuenta Banco
*
1 1
est en relacin
de negocio con
posee
*
*
paga
*

Deuda
4
DILOGOS DE LA APLICACIN
E(x)it
Terminal Bancario
Saldo:
Cuenta:
Seleccionar una cuenta ...
Pagar una deuda ...
Seleccin de Cuenta
OK Cancel
$ 3540.00
204620-123456
204620-123456
204620-873899
23443-2338338
328762-192888
Pago de deudas
Cdigo:
Fecha:
Shell Oil: 23476-23987
19.06.1994
Monto:
$ 170.00
Aplicar Cerrar
Esta usted seguro ?
Confirmar
SI NO
5
Cada dilogo es implementado como una clase vista

La vista sabe como presentar las cosas al usuario y como
recibir sus acciones

La vista no decide sobre qu hacer con las acciones de los
usuarios; se las pasa al controlador

La vista contiene elementos de la interfaz grfica del usuario,
tal como widgets, y mtodos conectados con los elementos
de la interfaz

6
DILOGOS DE LA APLICACIN
DILOGOS DE LA APLICACIN
Una vista comprende tres categoras principales de
mtodos:

Mtodos de manipulacin (MM: Manipulation
Methods): mtodos (callback) que capturan acciones de
los usuarios

Mtodos de retroalimentacin (FM: FeedBack
Methods): presentan cosas al usuario

Mtodos de consultas (QM:Query Methods): son
diseados para que algn controlador pueda investigar
el estado de la vista.
7
DILOGOS DE LA APLICACIN
Ejemplos de mtodos de la vista del terminal bancario:

Mtodo de manipulacin:
BotnSeleccinDeCuentaPresionadoMM():Inform
a que el botn indicado ha sido presionado

Mtodo de retroalimentacin:
MuestreSaldoFM(int s): Muestra en un campo el
valor s correspondiente al saldo de una cuenta

Mtodo de consulta:
ObtengaCuentaSeleccionadaQM(): Devuelve el
nmero de la cuenta seleccionada por el usuario
8
COMPONENTES DE VISTA
Tpicamente cada dilogo del diagrama de dilogos
forma una clase de la vista

Si un dilogo es extremadamente simple, se puede
unir a otra clase de la vista formando un
componente de vista

Un componente de vista puede ser un dilogo o parte
de un dilogo implementado mediante una clase
reutilizable independiente, sin controlador propio
9
COMPONENTES DE VISTA
Los mtodos controladores de los componentes de vista se
codifican dentro de la clase vista que controla al componente
de vista.

Ejemplo tpico: dilogo de confirmacin. Aqu, el controlador
de la vista pregunta directamente a la vista la respuesta del
usuario, por ejemplo, llamando a un mtodo de
retroalimentacin

vistaPagoDeDeuda->confirmarFM()

El objeto vista usa el objeto confirmacin (componente de
vista) para obtener la respuesta del usuario.
10
CONJUNTO DE CLASES DE LA VISTA
textoSaldo
vistaPrincipal
botnOk
vistaSeleccinDeCuenta
botnCancelar
bOkPresionadoMM: nCuenta
bCancelarPresionadoMM
textoCuenta
botnSalir
botnSeleccionarCuenta
botnPagarDeuda
bSalirPresionadoMM
bPagarPresionadoMM
listaDeCuentas
componenteDeVistaCuenta
muestraFM(NCuentas,cuenta)
demeCuentaSeleccQM: nCuenta
textoDeConsulta
vistaConfirmacin
bSiConfirmadoMM
bNoConfirmadoMM
consultarFM(textoConsulta)
textoDeMonto
vistaPagoDeDeuda
textoDeCdigo
bAplicarPresionadoMM
bCerrarPresionadoMM
confirmarFM:respuesta
demeMontoQM:valor
demeCdigoQM:texto
botnSi
botnNo
textoFechaDePago
botnAplicar
botnCerrar
demeFechaDePago
bSeleccionarPresionadoMM
mostrarSaldoFM(valor)
mostrarCuentaFM(nCuenta)
demeCuentaSeleccQM:nCuenta
La vista Confirmacin acta
como un componente de vista
Componente de vista
Clases de tipo vista
11
EL CONTROLADOR
El controlador no slo sabe lo que (la aplicacin) el
modelo y la vista deben hacer sino cmo deben
hacerlo

El controlador no conoce la estructura o la
implementacin del modelo o de la vista

En algunos casos los subcontroladores deben
informar al controlador principal lo que hacen
cuando esa informacin es requerida por otros
objetos controladores
12
VISTA-CONTROLADOR DEL TERMINAL
BANCARIO
13
CONTROLADOR-MODELO DEL TERMINAL
BANCARIO
14
COMPONENTE CONTROLADOR
A veces puede ser necesario conectar cierta funcionalidad
externa (reutilizable) a una clase componente de vista.

En tal caso es adecuado agregar un objeto componente
controlador

El componente controlador trabaja en conjunto con un objeto
componente de vista tal como lo hace un controlador con un
objeto de la vista

Ejemplo: El componente de interfaz Lista es capaz de mostrar
cualquier lista de texto e informar a la aplicacin del elemento
seleccionado
15
16
EJEMPLOS EN C++
//Clase vista
Class vistaPagoDeDeuda{
Public
vistaPagoDeDeuda(controladorPagoDeDeuda *c)
{ miControlador=c;
...
}
int demeMontoQM()
{ char *strMonto = XmTextGetString(monto)
int intMonto = atoi(strMonto);
XtFree(strMonto);
return intMonto;
}
17
EJEMPLOS EN C++
void limpiarCamposFM()
{ //limpia todos los campos
}
private
void bAplicarPresionadoMM()
{ miControlador->efectuarPago();
}
void bCerrarPresionadoMM()
{ miControlador->cerrarDialogoDePago();
}
...
controladorPagoDeDeuda *miControlador;
...
Widget bAplicar;//elemento de IU
Widget bCerrar;//elemento de IU
Widget monto, codigo, fechaDePAgo; //elemento de IU
}
18
EJEMPLOS EN C++
//Clase Controlador
Class controladorPagoDeDeuda{
Public
controladorPagoDeDeuda
(controladorPrincipal *cP, Cuenta *cA)
{ miVista= new vistaPagoDeDeuda(this);
miControlador = cP;
cActual = cA;
//crea clase modelo
dActual= new Deuda();
}
//continua...
19
EJEMPLOS EN C++
void efectuarPago()
{
cActual->asignarMonto(miVista->demeMontoQM());
cActual->asignarCdigo(miVista->demeCodigoQM());
cActual->asignarFechaDePago(miVista-
>demeFechaDePago());
miControlador->pagoHecho();//Informa al controlador
principal
miVista->limpiarFM();
miVista->OcultarDialogoFM();
}
//continua...

20
EJEMPLOS EN C++
void cerrarDialogoDePago()
{
miControlador->pagoNoHecho();
miVista->limpiarFM();
miVista->ocultarDialogoFM();
}
private:
vistaPagoDeDeuda *miVista;
controladorPrincipal *miControlador;
Cuenta *cActual;
Deuda *dActual;
};//Fin clase controladorPagoDeDeuda
21

También podría gustarte