Professional Documents
Culture Documents
?
?
?
?
Clsico
Clsico con prototipado
? En espiral
? Prototipado puro
? Combinacin de estilos, etc.
?
Anlisis
Diseo
Codificacin
Pruebas
Unitarias
Anlisis
Diseo
Codificaci n
Integracin
Pruebas de
Integracin
Pruebas de
aceptaci n
Mantenimiento
10
11
12
Especificacin
?
Construccin
del Prototipo
Anlisis
Validacin
Diseo
13
REVISIN
Plan de requerimientos
Plan de ciclo de vida
Plan de
desarrollo
Planificar la siguiente
fase
Integracin y
plan de prueba
Evaluar alternativas e
identificar y resolver
riesgos
Anlisis de
riesgos
Anlisis de
riesgos
Anlisis de
Prototipo
Prototipo operacional
riesgos
3
Prototipo
Anlisis
2
de Protoriesgos tipo 1
Simulaciones, modelos,
Concepto
pruebas comparativas
de
Requerioperacin mientos de Diseo del Diseo
producto detallado
Validacin de software
Cdigo
requerimientos
Prueba de
Diseo de
unidades
Desarrollo, verificar
Prueba de
V&V
producto del siguiente
Prueba de integracin
nivel
aceptacin
Servicio
15
14
16
Documentacin de requerimientos
Documentacin de diseo
Cdigo fuente
Planes de pruebas del sistema
Principios de operacin
Instrucciones de instalacin
Procedimientos de mantenimiento
Manuales de usuario
17
Quiz
Conceptos
?
?
18
Qu es un objeto?
El mundo est lleno de objetos:
?
en la naturaleza
en entidades hechas por el hombre
? y en los productos que usamos
?
20
Conceptos
Conceptos
Mueble
21
Costo
Dimensiones
Peso
Localizaci n
Color
Comprar
Vender
Pesar
Mover
silla:Mueble
Costo: 30.000
Dim: 100x60x40
Peso: 5
Loc.:A110
Color: burdeo
Comprar
Vender
Pesar
Mover
Conceptos
Principios
?
?
23
22
24
Principios
Principios
Operaciones
Atributos:
Atributos
Operaciones:
25
Principios
Jerarqua
?
?
27
?
?
26
28
Jerarqua
Atributos
Mueble
Superclase
Subclases de la
clase mueble
Mesa
Silla
Escritorio
Sillesa
La clase auto tambin tiene un atributo motor que abarca los siguientes
valores de dominio: {valor 32 vlvulas opcin de lujo, valor 24 vlvulas
opcin deportiva, valor 15 opcin econmica}
Estas caractersticas se representan como asociaciones, no atributos
Instancias de Silla
Dra. Lioubov Dombrovskaia
29
Mensajes
31
30
32
Mensajes
Mensajes
A
op1
op2
op3
op4
op5
Valor de retorno
D
Mensaje
op10
op11
op6
op7
op8
op9
Valor de retorno
Dra. Lioubov Dombrovskaia
33
Encapsulamiento
?
Ocultamiento de la Informacin
?
35
34
36
X1
car1
car2
car3
car4
car5
+car6
X4
car1
car2
car3
car4
car5
car6
car1
car2
car3
car4
car5
car7
car1
car2
car3
car4
car1
car2
car3
car4
car5
+car6
X2b
+car7
car1
car2
car3
car4
car5
car6
car1
car2
car3
car4
car5
car7
39
+car8
car1
car2
car3
car4
car8
X4
38
car1
car2
car3
X3
X1
+car4
+car5
+car7
X3
La jerarqua de clases
mostrada permite derivar las
clases X3 y X4 con las
caractersticas (atributos u
operaciones) 1, 2, 3, 4, 5 y
6, y 1, 2, 3, 4, 5 y 7,
respectivamente
Ahora, suponga que se
desea crear una nueva
clase que tenga solamente
caractersticas 1, 2, 3, 4 y 8
X2
X2a
+car4+car5
X2
37
car1
car2
car3
40
10
grficos de lneas
grficos de tortas
histogramas
diagramas de Kiviat
case of tipo_grafico:
If tipo_grafico = grafico_linea then DibujarLinea (datos);
If tipo_grafico = grafico_torta then DibujarTortaLinea (datos);
If tipo_grafico = grafico_histograma then DibujarHisto (datos);
If tipo_grafico = grafico_kiviat then DibujarKiviat (datos);
end case
41
Introduccin a UML
tipo_grafico.dibujar
42
43
44
11
Introduccin a UML
Introduccin a UML
Historia
?
?
?
?
Rumbaugh
Booch
Jacobson
Odell
Meyer
Pre- and Post-conditions
Shlaer-Mellor
UML
Harel
State Charts
Embly
Wirfs-Brock
Singleton classes
Fusion
Responsabilities
Operation descriptions,
message numbering
Dra. Lioubov Dombrovskaia
45
Introduccin a UML
Introduccin a UML
Pros y contras
46
Inconvenientes en UML
?
47
48
12
Introduccin a UML
Muestra
Diagramas de
Secuencia
Diagramas de
Colaboracin
Diagramas de
Casos de Uso
Diagramas
de Clases
Diagramas
de Objetos
Modelo del
Sistema
Diagramas de
Estados
Diagramas de
Componentes
Diagramas de
Actividad
Diagramas de
Distribucin
49
50
51
52
13
?
?
Anlisis
Libro
ttulo
Concepto de
Dominio
53
Diseo
Construccin
public class Libro
{
public void print();
Private String titulo;
}
Representacin
en el diseo
Representacin en
programacin
54
Ejemplo
Ejemplo
Definici n de los
Casos de Uso
Definici n del
Modelo
del Dominio
Definici n de los
Diagramas de
Interaccin
Definici n de los
Diagramas de
diseo de clases
Definici n de los
Casos de Uso
Definici n del
Modelo
del Dominio
Definici n de los
Diagramas de
Interaccin
Definici n de los
Diagramas de
diseo de clases
55
56
14
Ejemplo
Ejemplo
Definici n de los
Casos de Uso
Definici n del
Modelo
del Dominio
Definici n de los
Diagramas de
Interaccin
Definici n de los
Diagramas de
diseo de clases
Definici n de los
casos de uso
Definici n del
Modelo
del Dominio
Definici n de los
Diagramas de
Interaccin
Definici n de los
Diagramas de
diseo de clases
Por ejemplo, una parte del modelo del dominio muestra los
conceptos de Jugador, Dados y Juego de dados, sus
asociaciones y atributos
Jugador
Dado
1
Lanza
nombre
2
valorMostrado
1
Juega
1
Juego de dados
1 Incluye
57
58
Ejemplo
Ejemplo
Definici n de los
casos de uso
Definici n del
Modelo
del Dominio
Definici n de los
Diagramas de
Interaccin
Definici n de los
Diagramas de
diseo de clases
Definici n de los
casos de uso
59
Definici n del
Modelo
del Dominio
Definici n de los
Diagramas de
Interaccin
Definici n de los
Diagramas de
diseo de clases
60
15
Ejemplo
Ejemplo
Definici n de los
casos de uso
Definici n del
Modelo
conceptual
Por ejemplo, la
figura muestra
grficamente el
paso esencial
del juego,
enviando
mensajes a las
instancias de
las clases
Juego y Dado
Definici n de los
Diagramas de
Interaccin
Definici n de los
Diagramas de
diseo de clases
Definici n de los
casos de uso
?
: Juego de
Dados
d1 : Dado
d2 : Dado
lanzar()
v1:= valor()
?
lanzar()
v2:= valor()
Definici n de los
Diagramas de
diseo de clases
61
Definici n de los
Diagramas de
Interaccin
jugar()
Definici n del
Modelo
conceptual
Ejemplo
Definicin
Definici n de los
casos de uso
Definici n del
Modelo
conceptual
Definici n de los
Diagramas de
Interaccin
Definici n de los
Diagramas de
diseo de clases
62
Juego de
Dados
d1 : Dado
d2 : Dado
jugar()
Dado
valor_mostrado : Integer
1
valor()
lanzar()
63
64
16
Pasos de macronivel
Inicio
RUP
Inicio
Elaboraci n
Construcci n
Aplicaci n
65
Inicio
66
67
68
17
69
71
70
72
18
?
?
?
?
Escenarios Alternativos:
?
73
No lo es
74
75
76
19
?
?
?
1.
2.
3.
4.
8.
?
?
5.
6.
7.
9.
10.
77
?
?
79
Requerimientos especiales:
?
78
80
20
?
?
81
83
82
84
21
?
?
85
Sera otro caso de uso, y una precondicin para el caso Realizar Venta
1.
2.
3.
4.
86
87
88
22
Diagrama de casos
de uso muestra
actores, casos de
uso y relaciones
entre ellos
?
Realizar Venta
Servicio
Autorizacin
Cajero
Es ms importante
concentrarse en
escribir los casos
de uso en vez de
dibujarlos en el
diagrama
Devolver Productos
Sistema Contable
Capturar ventas
Autorizar pagos con tarjetas de crdito y dbito
? Definir y aplicar las reglas de precios
?
Manejar Seguridad
Administrador
Manejar Usuarios
89
90
91
92
23
93
Etapa de Elaboracin
Actividades
94
95
96
24
Etapa de Elaboracin
Etapa de Elaboracin
Actividades
Artefactos
97
Etapa de Elaboracin
Etapa de Elaboracin
Iteracin 1
5.
6.
7.
8.
9.
10.
99
98
100
25
Etapa de Elaboracin
3b: Hay varios artculos del mismo producto (no existe una
identificaci n individual del artculo)
1.
101
A todos los sistemas se les trata como caja negra; los diagramas se
centran en los eventos que fluyen de los actores a los sistemas
? En el diagrama el tiempo avanza hacia abajo, y el ordenamiento de
los eventos debe seguir el orden indicado en el caso de uso
Dra. Lioubov Dombrovskaia
102
103
Trace una lnea que represente el sistema como una caja negra
Identifique los actores que operan directamente sobre el sistema.
Trace una lnea para cada uno de ellos
? A partir del curso normal de los eventos del caso de uso identifique
los eventos (externos) del sistema que son generados por los
actores. Mustrelos grficamente en el diagrama
? A la izquierda del diagrama puede incluir o no el texto del caso de
uso
?
104
26
105
: Sistema
: Cajero
crearNuevaVenta()
IntroducirArticulo((ID_articulo, cantidad))
IntroducirImporteOfrecido(monto) deficiente
? IntroducirPago(monto) mejor
? Pagar(monto) quiz mejor an
descripcin, precio
TerminarVenta()
total
Pagar()
vuelto, recibo
106
107
108
27
: Sistema
: Cajero
crearNuevaVenta()
IntroducirArticulo((ID_articulo, cantidad))
TerminarVenta()
Pagar()
109
110
Visualizando conceptos
?
111
112
28
Caja
Avin
Especificacin de Producto
Descripcin de Vuelo
Tienda, Cesto
Avin
Hambre
Acrofobia
113
Frases nominales
reglas y polticas
?
?
catlogos
?
?
Catalogo de Producto
Catalogo de Partes
Poltica de Reembolso
Poltica de Cancelaciones
Lnea de Crdito
Existencia
manuales, libros
?
?
Manual de Personal
Manual de Reparaciones
115
organizaciones
?
?
Departamento de Ventas
Objeto Lnea Area
eventos
Venta de Producto
Reservacin Asiento
?
?
Cajero
Piloto
papel de personas
?
?
Venta, Pago
Reservacin
Tienda
Aeropuerto
transacciones
?
lugares
?
?
114
116
29
?
?
3b: Hay varios artculos del mismo producto (no existe una
identificaci n individual del artculo)
1.
117
Obtencin de conceptos
Obtencin de conceptos
?
?
Especificaci n de producto
Lnea de Venta
Cajero
Cliente
Gerente
Catlogo de Productos
Dra. Lioubov Dombrovskaia
119
118
120
30
2.
3.
4.
121
123
122
124
31
Considere lo siguiente:
Articulo
LineaDeVenta
Pago
Cajero
CatalogoProductos
Tienda
Venta
Cliente
Gerente
EspecificacinProducto
125
126
?
?
Venta
1
1
Asociacin
127
128
32
Categor a
Ejemplos
Caja-Tienda
Ala-Avion
LineaDeVenta-Venta
TramoDeVuelo-RutaDeVuelo
Caja-Tienda Producto-Estante
Pasajero -Avion
EspecificacinProducto CatlogoProductos
Vuelo - ProgramaDeVuelo
A es una descripcin de B
EspecificacinProducto Articulo
DescripcionDeVuelo - Vuelo
LineaDeVenta -Venta
TrabajoDeManteniemiento-Mantenimiento
Registra_actual
Caja
Venta
1
1
Asociacin
129
A es miembro de B
Cajero Tienda
Piloto Avion
Departamento Tienda
Mantenimiento - LineaAerea
A usa o dirige a B
Cajero Caja
Piloto Avion
A se comunica con B
Cliente Cajero
AgenteDeReservaciones - Pasajero
Pago Recibo
Pasajero Boleto
Caja Caja
Cuidad Cuidad
A es propiedad de B
Caja Tienda
Avion LineaAerea
Dra. Lioubov Dombrovskaia
130
131
132
33
133
Asociaciones: Notacin
Persona
1
Compaa
de uno a 40
exactamente 5
134
n
Trabaja-Para
Persona
1..40
5
n
Multiplicidad
del rol
Articulo
1
Compaa
1
135
136
34
Ejemplos
Tienda
1
Contiene
Aerolinea
1..n
Caja
Registra_actual
Pagada-por
Venta
Pago
1
Emplea
Vuela-desde
Vuelo
1..n
Persona
n
Supervisa
Asignado-a
Vuelo
1
Aeropuerto
Tiene-asignado
n
Avion
n
Vuela-hacia
1
137
Asociaciones y su implementacin
139
138
140
35
CatalogoProductos registra
EspecificacionProducto
no se aplica
LineaDeVenta-Venta
Caja-Tienda
Producto-Tienda
EspecificacionProducto CatalogoProductos
CatalogoProductos - Tienda
A es una descripcin de B
EspecificacionProducto Articulo
141
142
Es-de
Descrita-por
CatalogoProductos
A se comunica con B
A se relaciona con una transaccin B
Cliente Pago
Cajero Pago
A es propiedad de B
Caja Tienda
Dra. Lioubov Dombrovskaia
Contenidas-en
1 n Capturada-en
1
1
Venta
1
Pago
143
1
Articulo 1..n
Almacena
1 1
Contiene
1
1
1
Pagada-por
Iniciada-por
n
Describe
n
Tienda
Terminadas
no aplicable
A est contiguo a B
LineaDeVenta
A usa o dirige a B
1
Se-usa-por
0..1
1
Especificacin
Producto
Contiene
1
Cliente
1..n
Caja
Iniciada-por
1 1
Gerente
1
Registra-ventas-de
Iniciada-por
1
Cajero
144
36
1
Se-usa-por
n
Tienda
Terminadas
Contenidas-en
1..n
Caja
1
Pago
145
Cliente
Gerente
Cajero
Dra. Lioubov Dombrovskaia
Requerimientos
1
Articulo
1
Pagada-por
n
Describe
1 n Capturada-en
1
1
Venta
Contiene
LineaDeVenta
1
Especificacin
Producto
Contiene
CatalogoProductos
147
146
148
37
Venta
Cajero
fecha
hora
IdCajaActual
nombre
Atributos
Usada-por
1
Cajero
nombre
149
?
?
150
151
152
38
Descrita-por
CatalogoProductos
n
1
Se-usa-por
LineaDeVenta
EspecificacinProducto
1
Contiene
descripcin
precio
1
n
id
n
Describe
cantidad
n
Terminadas
n
Tienda
Contenidas-en
1n
Venta 1 Capturada-en1
fecha
hora
1
Pagada-por
1
Articulo
1
Contiene
1..n
Caja
Gerente
1
Usada-por
1
Pago
1
Cajero
Cliente
monto
nombre
153
?
?
Descrita-por
154
EspecificacinProducto
descripcin
precio
id
n Describe 1
Articulo
n
Contenida-en
LineaDeVenta
/ cantidad
n
Terminadas
Se-usa-por
Tienda
1
CatalogoProductos
Contenidas-en
LineaDeVenta
/cantidad
1
1 n
1
Contiene
1n
1..n
Venta 1 Capturada-en 1
1 Cajero
Caja 1
fecha
Usada-por
nombre
hora
1
Producto
0..1 Registra-venta-de 1..*
Pagada-por
1
Pago
monto
Dra. Lioubov Dombrovskaia
155
156
39
Contratos de Operaciones
?
?
157
: Sistema
: Cajero
crearNuevaVenta()
IntroducirArticulo((ID_articulo, cantidad))
TerminarVenta()
Pagar()
158
Contratos de Operaciones
159
160
40
Contratos de Operaciones
Contratos de Operaciones
?
?
161
Contratos de Operaciones
Contratos de Operaciones
En lugar de
163
162
164
41
Contratos de Operaciones
Contratos de Operaciones
165
Contratos de Operaciones
Poscondiciones:
166
Contrato: crearNuevaVenta ()
Referencias: Caso de uso: Realizar Venta
Precondiciones: ninguna
Poscondiciones:
?
?
167
168
42
Contrato: TerminarVenta ()
Referencias: Caso de uso: Realizar Venta
Precondiciones : Venta esta en curso
Poscondiciones:
?
?
169
170
171
172
43
Pasando a diseo
?
?
?
Pasando a diseo
?
?
?
173
Diagramas de interaccin
Diagramas de interaccin
Notacin
Notacin
1: mensaje2()
2: mensaje3()
Instancia1 : ClaseA
174
Instancia2 : ClaseB
Instancia2 :
ClaseB
mensaje2()
mensaje3()
175
176
44
Diagramas de interaccin
Diagramas de interaccin
Ejemplo
Elaboracin de un diagrama
1: Pagar(monto)
2: pagar(monto)
: Caja
3: crear(monto)
: Venta
: Pago
: Cajero
Instancia
Vnculo
Mensaje y
parametros
: Caja
: Cajero
: Venta
: Pago
Pagar(monto)
pagar(monto)
?
crear(monto)
177
Diagramas de interaccin
Diagramas de interaccin
Notacin
?
?
?
Venta
Instancia
Instancia con
nombre
: Venta
s1: Venta
179
178
180
45
Diagramas de interaccin
Diagramas de interaccin
Notacin
Notacin
Si vemos dos instancias en una relacin de clienteservidor, una trayectoria de navegacin del cliente al
servidor significa que los mensajes pueden enviarse del
primero al segundo
?
1: Pagar(monto)
2: pagar(monto)
: Caja
: Venta
?
181
Diagramas de interaccin
Diagramas de interaccin
Notacin
Notacin
182
mens1()
:Caja
:Venta
: Caja
183
184
46
Diagramas de interaccin
Diagramas de interaccin
Notacin
Notacin
mens1()
1:crear(cajero)
:Caja
:Venta
mens1()
1:crear(cajero)
:Caja
185
:Venta
Diagramas de interaccin
Diagramas de interaccin
Notacin
Notacin
?
segundo
primero
1: mens2()
: ClaseA
tercero
: ClaseB
2: mens4()
1.1: mens3()
cuarto
186
2.1: mens5()
quinto
mens1()
: ClaseC
1:[nuevaventa] crear()
:Caja
:Venta
2.2: mens6()
: ClaseD
Dra. Lioubov Dombrovskaia
sexto
187
188
47
Diagramas de interaccin
Diagramas de interaccin
Notacin
Notacin
Multiobjeto
Ventas : Venta
1: s := tamao(): entero
: Venta
189
: LineaDeVenta
Diagramas de interaccin
Diagramas de interaccin
Notacin
Responsabilidades y mtodos
no subrayada,
por tantouna clase
Fecha
1: d1:=hoy(): Fecha
: Venta
191
190
192
48
Diagramas de interaccin
Diagramas de interaccin
Responsabilidades y mtodos
Responsabilidades y mtodos
imprimir()
: Venta
: LineaDeVenta
2: imprimir()
vli : LineaDeVenta
Dra. Lioubov Dombrovskaia
193
194
Diagramas de interaccin
Diagramas de interaccin
Responsabilidades y mtodos
195
196
49
Diagramas de interaccin
Diagramas de interaccin
197
198
Diagramas de interaccin
Diagramas de interaccin
199
200
50
Patrones de Diseo
Patrones de Diseo
Experto
Asignar una responsabilidad a la clase que tiene la
informacin necesaria para cumplirla.
Cul es el principio fundamental en virtud del cual
asignaremos las responsabilidades a los objetos?
201
Patrones de Diseo
202
Patrones de Diseo
Experto
Patrones GRASP
Experto
? Creador
? Bajo Acoplamiento
? Alta Cohesin
? Controlador
203
204
51
Patrones de Diseo
Patrones de Diseo
Experto
Experto
LineaDeVenta
/cantidad
Descritas -por
EspecificaciondeProductos
1..*
Contenidas -en
1
Venta
fecha
hora
205
Patrones de Diseo
Patrones de Diseo
Experto
Experto
?
1: tot:=total()
2: st:=subtotal()
: Venta
3: pr:=precio()
: LineaDeVenta
: EspecificacinProducto
?
Pseudocdigo
public void total()
{ int tot:=0
for each LineaDeVenta, li
tot:= tot + li.subtotal()
return total}
207
206
208
52
Patrones de Diseo
Patrones de Diseo
Experto
Creador
Beneficios
209
Patrones de Diseo
Patrones de Diseo
Creador
Creador
211
210
212
53
Patrones de Diseo
Patrones de Diseo
Creador
Creador
Ejemplo
?
LineaDeVenta
cantidad
Descritas -por
EspecificaciondeProducto
1: CrearNuevaVenta()
2: crear()
: Caja
3: crear()
: Venta
: LineaDeVenta
1..*
Contenidas -en
1
Venta
fecha
hora
Dra. Lioubov Dombrovskaia
213
Patrones de Diseo
Patrones de Diseo
Creador
Bajo Acoplamiento
?
?
?
?
214
215
216
54
Patrones de Diseo
Patrones de Diseo
Bajo acoplamiento
Bajo acoplamiento
?
?
:Caja
1:EfectuarPago()
:Venta
1.1:Crear()
:Caja
:Pago
1:Crear()
P:Pago
2:AgregarPago(p)
:Venta
217
Patrones de Diseo
Patrones de Diseo
Bajo acoplamiento
Alta Cohesin
?
?
219
218
220
55
Patrones de Diseo
Patrones de Diseo
Alta Cohesin
Alta Cohesin
?
?
EfectuarPago()
EfectuarPago()
:Caja
:Caja
1:EfectuarPago()
:Venta
1:Crear()
P:Pago
2:AgregarPago(p)
1.1:Crear()
:Venta
:Pago
221
Patrones de Diseo
Patrones de Diseo
Alta Cohesin
Alta Cohesin
Algunos escenarios:
?
Beneficios:
?
222
223
224
56
Patrones de Diseo
Patrones de Diseo
Controlador
Controlador
?
?
Patrones de Diseo
Patrones de Diseo
Controlador
Controlador
Ejemplo:
introducirArticulo(id, cantidad)
: ???
226
Un controlador
227
228
57
Patrones de Diseo
Patrones de Diseo
Controlador
Controlador
Sistema
terminarVenta( )
introducirArticulo( )
Pagar( )
terminarVenta( )
introducirArticulo( )
Pagar( )
operaciones del
sistema descubiertas
durante el anlisis de
su comportamiento
asignacin de las
operaciones del sistema
durante su diseo, mediante
el patrn Controlador
Esta informacin ser til - por ejemplo - para identificar los eventos
del sistema fuera de secuencia (entre ellos, una operacin Pagar
antes de terminarVenta)
229
Patrones de Diseo
Patrones de Diseo
Controlador
Controlador
231
230
232
58
Patrones de Diseo
Patrones de Diseo
Controlador
Controlador
Beneficios
233
Patrones de Diseo
234
Controlador
Contenido
Tienda de Objetos
ID
Cantidad
Precio
Desc.
Total
Saldo
?
?
Ofrecido
Oprime botn
Introducir
Producto
Terminar
Venta
Efectuar
Pago
Cajero
enIntroducirProducto()
Capa de presentacin
Applet en Java
: CajaVApplet
mensaje de eventos
del sistema
1: introducirArticulo(id, cantidad)
Controlador
2: hacerLineadeProducto(id,cantidad)
: Caja
: Venta
235
236
59
Introduccin
237
238
Eligiendo controlador
introducirArticulo()
1 :???()
: Caja
terminarVenta()
1 :???()
: Caja
Pagar()
1 :???()
: Caja
iniciar()
1 :???()
: Caja
239
240
60
241
n
LineaDeVenta
1 EspecificacinProducto n
descripcin
precio
n
id
Describe
Articulo
Contenida-en
n
Terminadas
1n
Venta
Pago
monto
Paga
1 fecha
hora
Terminada : Boolean
Contrato: crearNuevaVenta ()
Referencias: Caso de uso: Realizar Venta
Precondiciones: ninguna
Poscondiciones:
?
/ cantidad
Contenidas-en
242
Tienda
1
1 Capturada-en 1
1 n
Contiene
1..n
1
Caja
1
Usada-por
1
CatalogoProductos
Se-usa-por
Cajero
nombre
243
244
61
?
?
1: CrearNuevaVenta()
2: crear()
: Caja
Controlador
y Creador
3: crear()
: Venta
: LineaDeVenta
1: IntroducirArticulo(id, cant)
: Caja
Contrato: TerminarVenta ()
Referencias: Caso de uso: Realizar Venta
Precondiciones : Venta esta en curso
Poscondiciones:
4: crearLineaVenta(espec, cant)
6: agregar(li)
: Venta
: LineaDeVenta
2: espec:=buscarEspecif(id)
5: crear(espec, cant)
:
CatalogoProductos
246
li : LineaDeVenta
3: espec:=buscar(id)
Multiobjetos, no
una instancia
: EspecificacinProducto
247
248
62
1: TerminarVenta()
1: tot:=total()
2: Terminar()
: Caja
: Venta
2: st:=subtotal()
: Venta
3: pr:=precio()
: LineaDeVenta
: EspecificacinProducto
Pseudocdigo
public void total()
{ int tot:=0
for each LineaDeVenta, li
tot:= tot + li.subtotal()
return total}
249
1: Pagar(monto)
2: pagar(monto)
: Caja
3: crear(monto)
v : Venta
: Pago
4: agregar(v)
5: agregar(v)
VentasTerminadas : Venta
: Tienda
250
3: t:=total()
1: vuelto:=calcularVuelto()
2: mnt:=obtenerMonto()
: Venta
: Pago
251
252
63
3: cargarEspecifProd()
1: crear()
2: crear()
: Tienda
6: agregar(ep)
7: crear(cp)
ep :
EspecificacinProducto
4: crear()
: Caja
: EspecificacinProducto
253
Diagramas de interaccin
Visibilidad
255
254
256
64
Diagramas de interaccin
Diagramas de interaccin
Visibilidad
Visibilidad
Class Caja
{
private cp CatalogodeProd;
introducirArticulo(id, cant)
: Caja
2: especif:=especificacion(id)
Cp: CatalogoProductos
257
Diagramas de interaccin
Diagramas de interaccin
Visibilidad de atributos
Visibilidad de atributos
introducirArticulo(id, cant)
: Caja
2: especif:=especificacion(id)
Cp: CatalogoProductos
259
258
260
65
Diagramas de interaccin
Diagramas de interaccin
Visibilidad de parmetros
Visibilidad de parmetros
?
?
1: IntroducirArticulo(id, cant)
:
CatalogoProductos
li : LineaDeVenta
3: espec:=buscar(id)
Multiobjetos, no
una instancia
: EspecificacinProducto
261
Diagramas de interaccin
Visibilidad de parmetros
263
262
: LineaDeVenta
5: crear(espec, cant)
Diagramas de interaccin
?
6: agregar(li)
: Venta
2: espec:=buscarEspecif(id)
4: crearLineaVenta(espec, cant)
: Caja
264
66
Diagramas de interaccin
Diagramas de interaccin
1: IntroducirArticulo(id, cant)
4: crearLineaVenta(espec, cant)
: Caja
6: agregar(li)
: Venta
2: espec:=buscarEspecif(id)
: LineaDeVenta
5: crear(espec, cant)
:
CatalogoProductos
li : LineaDeVenta
3: espec:=buscar(id)
Multiobjetos, no
una instancia
: EspecificacinProducto
265
266
Diagramas de interaccin
Diagramas de interaccin
Visibilidad global
?
?
<<atributo>>
:B
2: mens()
3: mens()
<<parametro>>
<<local>>
:C
:D
4: mens()
<<global>>
Dra. Lioubov Dombrovskaia
267
:E
268
67
Modelo de Diseo
Modelo de Diseo
Diagrama de Clases
Diagrama de Clases
Casilla de tres
secciones
para las
definiciones
de clase
Venta
fecha
hora
Terminada
Caja
fecha
hora
Captura
1
total( )
crearLineaVenta( )
introducirArticulo( )
Mtodos
Navegabilidad
269
Modelo de Diseo
Modelo de Diseo
Diagrama de Clases
271
270
272
68
Modelo de Diseo
Modelo de Diseo
?
?
273
Modelo de Diseo
Modelo de Diseo
EspecificacinProducto
descripcin
precio
id
LineaDeVenta
/ cantidad
?
Tienda
Pago
monto
Venta
fecha
hora
Terminada : Boolean
CatalogoProductos
274
Caja
275
276
69
Modelo de Diseo
Modelo de Diseo
En trminos generales, el
conjunto de los mensajes
enviados a la clase X a travs de
los diagramas de colaboracin
indica la mayora de los mtodos
que ha de definir la clase X
Para identificar los mtodos de
las clases se analizan los
diagramas de colaboracin
?
4: crearLineaVenta(espec, cant)
: Caja
: Venta
Venta
fecha
hora
Terminada : Boolean
terminar()
calcularVuelto()
total()
CrearLineaVenta()
277
Modelo de Diseo
Modelo de Diseo
279
278
280
70
Modelo de Diseo
Modelo de Diseo
2: especif:=especificacion(id)
: CatalogoProductos
El mensajeencontrar()
esta destinado al objeto
contenedor, no auna
EspecificaionProducto
3: especif:=buscar(id)
: EspecificacionProducto
281
Modelo de Diseo
Modelo de Diseo
?
?
CrearNuevaVenta()
IntroducirArticulo()
TerminarVenta()
Pagar()
283
CatalogoProductos
buscarEspecif()
cargarEspecifProd()
EspecificacinProducto
descripcin : String
precio : Integer
id : Long
Venta
Caja
282
fecha : Date
hora : Integer
Terminada : Boolean
LineaDeVenta
cantidad : Integer
subtotal()
terminar()
calcularVuelto()
total()
crearLineaVenta()
pagar()
Pago
monto : Integer
284
71
Modelo de Diseo
Modelo de Diseo
La ausencia de la flecha de
nevegabilidad indica que no
existe conexi n de Venta a
Caja
Venta
fecha : Date
hora : Integer
Terminada : Boolean
Caja
Captura
CrearNuevaVenta()
IntroducirArticulo()
1
TerminarVenta()
Pagar()
La clase Caja
probablemente tenga algn
atributo que apunta a Venta
terminar()
calcularVuelto()
total()
crearLineaVenta()
pagar()
La flecha de navegabilidad
indica que los objetos
Caja estn conectados
unidireccionalmente con
los objetos Venta
285
Modelo de Diseo
Modelo de Diseo
A enva un mensaje a B
A crea una instancia B
? A necesita mantener una conexin con B
?
286
287
288
72
Modelo de Diseo
Modelo de Diseo
Tienda
n
AgregarVenta()
1
3: cargarEspecifProd()
CatalogoProductos
Usa
name : String
adress : String
buscarEspecif()
cargarEspecifProd()
EspecificacinProducto
Contenida-en descripcin : String
precio : Integer
1
n id : Long
1
Mira-en
Describe
Aloja
Venta
1..n
Caja
1: crear()
2: crear()
: Tienda
6: agregar(ep)
7: crear(cp)
CrearNuevaVenta()
IntroducirArticulo()
1
TerminarVenta()
Pagar()
Terminadas
4: crear()
fecha : Date
hora : Integer
Terminada : Boolean
1
Captura
terminar()
calcularVuelto()
total()
n crearLineaVenta()
pagar()
n
LineaDeVenta
Contiene
1
cantidad : Integer
n
subtotal()
1 Pago
monto : Integer
1 Pagada-por
: Caja
: EspecificacinProducto
Dra. Lioubov Dombrovskaia
289
Modelo de Diseo
Modelo de Diseo
291
290
292
73
Modelo de Diseo
Modelo de Diseo
Tienda
name : String
adress : String
1
CatalogoProductos
Usa
n
AgregarVenta()
1
buscarEspecif()
cargarEspecifProd()
1
Mira-en
Describe
Aloja
Venta
1..n
Caja
fecha : Date
hora : Integer
Terminada : Boolean
1
Captura
CrearNuevaVenta()
IntroducirArticulo()
1
TerminarVenta()
Pagar()
Terminadas
293
terminar()
calcularVuelto()
total()
n crearLineaVenta()
pagar()
Modelo de Implementacin
Mapeando diseo a cdigo
?
?
295
cantidad : Integer
n
subtotal()
1 Pago
monto : Integer
1 Pagada-por
n
LineaDeVenta
Contiene
Modelo de Implementacin
?
EspecificacinProducto
Contenida-en descripcin : String
precio : Integer
1
n id : Long
294
296
74
Modelo de Implementacin
Modelo de Implementacin
Ciclos Iterativos
de Desarrollo
Anlisis de
Requerimientos
Anlisis de
Requerimientos
Anlisis de
Requerimientos
?
Diseo
Diseo
Diseo
Implementacin
y Pruebas
Implementacin
y Pruebas
Implementacin
y Pruebas
Tiempo
Dra. Lioubov Dombrovskaia
297
Modelo de Implementacin
Modelo de Implementacin
EspecificacinProducto
n
LineaDeVenta
subtotal()
cantidad : Integer
descripcin : String
precio : Integer
id : Long
Describe
298
299
300
75
Modelo de Implementacin
Modelo de Implementacin
EspecificacinProducto
descripcin : String
precio : Integer
id : Long
Atributo de
referencia
6: agregar(li)
: Venta
: LineaDeVenta
n
LineaDeVenta
cantidad : Integer
Atributo simple
4: crearLineaVenta(espec, cant)
: Caja
1 +EspecifProd
Describe
subtotal()
1: IntroducirArticulo(id, cant)
:
CatalogoProductos
li : LineaDeVenta
3: espec:=buscar(id)
: EspecificacinProducto
301
5: crear(espec, cant)
Modelo de Implementacin
Modelo de Implementacin
buscarEspecif()
cargarEspecifProd()
Mira-en
302
Venta
Caja
CrearNuevaVenta()
IntroducirArticulo()
1
TerminarVenta()
Pagar()
fecha : Date
hora : Integer
Terminada : Boolean
1
Captura
1
terminar()
calcularVuelto()
total()
crearLineaVenta()
pagar()
303
304
76
Modelo de Implementacin
Modelo de Implementacin
4: crearLineaVenta(espec, cant)
: Caja
6: agregar(li)
: Venta
: LineaDeVenta
5: crear(espec, cant)
li : LineaDeVenta
305
Modelo de Implementacin
Modelo de Implementacin
Orden de Implementacin
Resumen
7
Tienda
name : String
adress : String
n
AgregarVenta()
1
CatalogoProductos
Usa
buscarEspecif()
cargarEspecifProd()
1
Mira-en
1 +EspecifProd
Describe
Venta
fecha : Date
hora : Integer
Terminada : Boolean
1
Captura
CrearNuevaVenta()
IntroducirArticulo()
1
TerminarVenta()
Pagar()
Terminadas
EspecificacinProducto 2
Contenida-en descripcin : String
precio : Integer
1
n id : Long
Aloja
1..n
Caja
terminar()
calcularVuelto()
total()
n crearLineaVenta()
pagar()
n
LineaDeVenta
Contiene
1
306
cantidad : Integer
n
subtotal()
1 Pago 1
monto : Integer
1 Pagada-por
307
308
77
Iteracin 2
Iteracin 2
Introduccin
309
Iteracin 2
Iteracin 2
310
311
312
78
Iteracin 2
Iteracin 2
CU12: Pagar-a-crdito
Nivel: subfuncin
Escenario principal:
1.
2.
3.
Ms fcil entendimiento
313
Iteracin 2
Iteracin 2
?
?
314
315
316
79
Iteracin 2
Iteracin 2
Realizar Venta
<<include>>
<<include>> <<include>>
Cajero
Pagar-con-cheque
Pagar-en-Efectivo
Servicio
Autorizacin
Pagar-a-crdito
<<include>>
<<include>>
<<include>>
Sistema Contable
Realizar Prestamo
Dra. Lioubov Dombrovskaia
317
Iteracin 2
Iteracin 2
Categora
Ejemplos
ServicioAutorizacion
Categora
Ejemplos
TarjetadeCredito, Cheque
organizaciones
ServicioAutorizacion
eventos
reglas y polticas
lugares
transacciones
318
manuales, libros
319
CuentasPorCobrar
320
80
Iteracin 2
CU12: Pagar-a-crdito
Nivel: subfunci n
Escenario principal:
321
322
Iteracin 2
CU13: Pagar-con-cheque
Nivel: subfunci n
Escenario principal:
Tienda
Venta
TarjetaCrdito
Caja
CatalogoProductos
Servicio Autorizacin
Cheque
EspecificacinProducto
LineaDeVenta
PagoEfectivo
PagoCheque
Pago
PagoCrdito
CuentasPorCobrar
Dra. Lioubov Dombrovskaia
323
324
81
Generalizacin
Generalizacin
PagoEfectivo
PagoCheque
Superclase:
concepto ms
general
Pago
PagoCrdito
Subclase:
concepto ms
especializado
325
Generalizacin
Generalizacin
PagoEfectivo
PagoCheque
Pago
PagoCrdito
PagoEfectivo
PagoCheque
?
?
326
PagoCrdito
327
328
82
Generalizacin
Generalizacin
Paga
Pago
monto : Integer
Venta
1
?
PagoEfectivo
PagoCheque
PagoCrdito
329
PagoCrdito
Generalizacin
Generalizacin
?
?
As, la figura seala que todos los Pagos tienen un monto y que se
asocian a una Venta
PagoEfectivo
Venta
1
PagoCheque
330
Paga
Pago
monto : Integer
PagoCheque
Regla es-un:
?
PagoCrdito
331
332
83
?
?
ClienteVaron
ClienteMujer
333
?
?
335
334
Pagos: no aplicable
Biblioteca: Libro , subtipo de Recurso-Prestable, tiene un atributo de
ISBN
336
84
Pago
monto : Integer
Paga
Venta
Pagos: no aplicable
Biblioteca: no aplicable
? Investigacin de mercado: HumanoVaron, subtipo de Humano, no
se comporta igual que HumanoMujer respecto a los hbitos de
compra
PagoEfectivo
PagoCheque
n
Autoriza
PagoCrdito
n
Se-hace-con
1
TarjetaCrdito
Se-hace-con
1
Cheque
1
Servicio Autorizacin
Autoriza
1
Dra. Lioubov Dombrovskaia
337
Generalizacin
339
338
Transaccin
Autorizacin
Solicitud
Autorizacin
Respuesta
Autorizacin
Respuesta
Cheque
Aprobacin
Cheque
Reprobacin
Cheque
Respuesta
Crdito
Aprobacin
Crdito
Solicitud
Cheque
Solicitud
Crdito
Reprobacin
Crdito
340
85
Generalizacin
Tipos Asociativos
Transaccin
Autorizacin
Respuesta
Autorizacin
Aprobacin
Cheque
Reprobacin
Cheque
Aprobacin
Crdito
Solicitud
Autorizacin
Reprobacin
Crdito
Solicitud
Cheque
Solicitud
Crdito
Tipos Asociativos
Tipos Asociativos
Tienda
direccion : Direccion
nombre : Texto
idComercial
ServicioAutorizacion
Ambas inclusiones de id
Comercial son incorrectas,
Ya que puede haber ms de un
idComercial
direccion
nombre
idComercial
numero Telefnico
343
342
344
86
Tipos Asociativos
Tipos Asociativos
Vende
ContratodeServicio
idComercial
1..*
Tienda
ContratodeServicio
idComercial
ServicioAutorizacion
direccion
nombre
numero Telefonico
Autoriza-pago-mediante
direccion : Direccion
nombre : Texto
*
Tienda
direccion :Direccion
nombre :Texto
1..*
Un modelo mejor,
pero todavia no es
muy util .
Dra. Lioubov Dombrovskaia
Autoriza-pago-mediante
*
1..*
345
Tipos Asociativos
Agregacin y composicin
347
346
ServiciodeAutorizacion
direccion
nombre
numero Telefonico
?
?
Mano
Dedo
1
0..
0..5
348
87
Curso
Alumno
*
349
351
350
352
88
Iteracin 2
LineaDeVenta
1
n
CatalogoProductos
EspecificacinProducto
1
n
353
Iteracin 2
Iteracin 2
: Cajero
: Sistema
: Servicio
Autorizacin
354
: Sistema Contable
PagarCrdito(numTarjeta, fecha_exp)
: Sistema
: Cajero
resp:=solicitarAprobar(solicitud)
: Servicio
Autorizacin
PagarCheque(RUT)
RecibirPago(respuesta)
resp:=solicitarAprobar(solicitud)
RecibirVenta(venta)
355
356
89
Iteracin 2
Iteracin 2
Contratos
Contratos
Operacin: PagarCheque(RUT )
Referencias: Caso de uso: Realizar Venta
Precondiciones: Venta en curso, todos los art culos han sido ingresados
Poscondiciones:
Se cre PagoCrdito pc
Se acosi pc con v, Venta actual
Se cre TarjetaCrdito tc, se asignaron los atributos tc.numTarjetay
tc.fecha_exp
Se asoci tc con pc
Se cre SolicitudCrdito sc
Se asoci sc con pc
?
?
?
?
?
?
?
?
?
?
357
Diagramas de Estado
Diagramas de Estado
Notacin
?
?
359
358
360
90
Diagramas de Estado
Diagramas de Estado
?
Estadoinicial
descolgar auricular
Estado
Ocioso
Transicin
Activo
colgar auricular
Evento
361
Diagramas de Estado
Diagramas de Estado
clases de software
tipos (conceptos)
? casos de uso
?
363
362
364
91
Diagramas de Estado
Diagramas de Estado
introducirArticulo
EnEsperadelaVenta
introducirArticulo
IntroduciendoProductos
?
Eventodel sistema
(externo)
terminarVenta
EnEsperadelPago
Pagar
365
366
Diagramas de Estado
Diagramas de Estado
367
368
92
Iteracin 2
Diagramas de Estado
Punto de Venta
?
introducirArticulo
EnEsperadelaVenta
IntroduciendoProductos
terminarVenta
manejarRespuesta
EnEsperadelPago
PagarEfectivo
EnAutorizaciondePago
PagarCr dito
PagarCheque
Dra. Lioubov Dombrovskaia
369
Diagrama de Paquetes
Diagrama de Paquetes
Introduccin
?
?
371
370
372
93
Diagrama de Paquetes
Diagrama de Paquetes
Presentacin
Lgica de
aplicaciones
Almacenamiento
Registrar
Autorizar
Ventas
pagos
Base de Datos
373
Diagrama de Paquetes
Diagrama de Paquetes
?
?
Presentacin
Lgica de
aplicaciones
Almacenamiento
375
374
CajaApplet
Pago
Venta
Conceptos
del dominio
Interfaz
BasedeDatos
Generador
Reportes
Servicios
Base de Datos
376
94
Diagrama de Paquetes
Diagrama de Paquetes
Notacin
377
Diagrama de Paquetes
Diagrama de Paquetes
Notacin
Arquitectura detallada
Presentacin
Dominio
Capa de servicios
de alto nivel
orientada aobjetos
Conceptos de dominio
Elementos
bsicos
Capa de servicios
de bajo nivel
(orientada a objetos
y noorientada a
objetos)
Ventas
Interfaz de base de
datos relacional
Comunicaci n
379
Interfaz de base de
datos OO
Reportes
Esquemas de aplicaciones y
bibliotecas de soporte
Base de Datos
Relacional
378
Base de Datos
OO
380
95
Diagrama de Paquetes
Diagrama de Paquetes
Arquitectura detallada
Arquitectura detallada
?
?
381
Diagrama de Paquetes
Estratos y particiones
Elementos bsicos
Ventas
Productos
Dominio
Interfaz de base de
datos relacional
Comunicaci n
Interfaz de base de
datos OO
EstratosVerticales
382
Reportes
Patriciones horizontales
Dra. Lioubov Dombrovskaia
383
384
96
Patrones de Diseo
Fachada
Dominio
Venta
fecha : Fecha
hora : Hora
estaTerminada : Booleano
EspecificaciondeProducto
descripcion : Texto
precio : Entero
id : Entero
total( )
crearLineaVenta( )
Pagar( )
Terminar( )
Pago
monto : Entero
CatalogoProductos
especificacion( )
?
Interfaz de BDR
FachadaBD
obtener(id ): Objeto
guardar(Objeto)
Seguridad
Broker
Proxy
Fachada de Seguridad
AgregarUsuario(Usuario)
Usuario
385
Patrones de Diseo
Patrones de Diseo
Fachada
Separacin Modelo-Vista
387
386
388
97
Patrones de Diseo
Patrones de Diseo
Separacin Modelo-Vista
Separacin Modelo-Vista
1: introducirArticulo
(id, cant)
:Caja
Bien.
Mensajes de la capa de
vista de la presentacn.
Soporta la separaci n
modelo-vista.
389
Patrones de Diseo
Separacin Modelo-Vista
Separacin Modelo-Vista
391
:Caja
Mal.
No es conveniente enviar
mensajes ni realizar el
acoplamiento de la capa de
modelo a la capa de vista.
Patrones de Diseo
?
1:presentarMensaje
(mens)
390
392
98
Paquetes
Paquetes
Punto de Venta
Punto de Venta
Servicio
autorizacin
Cuentas por
Cobrar
Aprobacin
crdito
Aprobacin
cheque
Pago
cheque
Tarjeta
crdito
Cheque
Producto
Tienda
Venta
Catalogo
Productos
Cajero
Cliente
Gerente
Cdula de
Identidad
Pago
crdito
Caja
LineaDeVentas
Especificacin
Producto
Pago
efectivo
Solicitud de
aprobacin
393
Paquetes
Paquetes
Punto de Venta
Basico
Tienda
Pagos
Ventas
name : String
adress : String 1
Aloja
Caja
1..n
Emplea
Productos
Gerente
1..n
1
Transacciones
Autorizacin
394
395
396
99
Paquetes
Paquetes
Cajero
Cliente
(from Basico)
nombre
Registra
Usa
1
Caja
(from Basico)
11
Captura
1
CrearNuevaVenta()
IntroducirArticulo()
TerminarVenta()
Pagar()
1..n
Tienda
name : String
adress : String
Aloja
1
AgregarVenta()
Venta
fecha : Date
hora : Integer
Terminada : Boolean 1
n
1
Almacena
Tienda
(from Basico)
name : String
adress : String
1..n
Es-de
Describe
Contenida-en
1..n
terminar()
calcularVuelto()
total()
crearLineaVenta()
pagar()
n
(from Basico)
Articulo
CatalogoProductos
1
Inicia
1
LineaDeVenta
/ cantidad : Integer
subtotal()
n
n
EspecificacinProducto
Describe
1
descripcin : String
precio : Integer
+EspecifProd
id : Long
0..1
LineaDeVenta
(from Ventas)
cantidad : Integer
Terminadas
397
Paquetes
398
Paquetes
ContratoServicio
IDContrato
Tienda
(from Basico)
Tiene
name : String
adress : String
Pago
monto : Integer
n Servicio Autorizacin
direccin
telefono
nombre
1
Autorizado-por
PagoEfectivo
n
PagoCheque
PagoCrdito
n n
Se-guardan-en
Se-guardan-en
n
Se-hace-con
1
TarjetaCrdito
numTarjeta
fecha_exp
1
1
1
CuentasPorCobrar
Tiene
Cliente
Propiedad-de 1 (from
Ventas)
n
Se-hace-con
1
Articulo
CatalogoProductos
n
1
Almacena
1..n
Es-de
Describe
Tienda
(from Basico)
name : String
adress : String
Contenida-en
Cheque
n
n
EspecificacinProducto
Autorizado-por
0..1
1
Describe
descripcin : String
precio : Integer
+EspecifProd
id : Long
Identifica
LineaDeVenta
(from Ventas)
/ cantidad : Integer
1
CedulaIdentidad
RUT
1
Dra. Lioubov Dombrovskaia
399
400
100
Paquetes
Envia
(from Basico)
name : String
adress : String
1 Servicio Autorizacin
direccin
telefono
nombre
Envia
n
Aprobacin
Crdito
Reprobacin
Crdito
Transaccin
Autorizacin
Aprobacin
Cheque
Reprobacin
Cheque
Recibe
1
Respuesta
Autorizacin
Solicitud
Cheque
1
1
PagoCheque
1
PagoCrdito
(from Pagos)
(from Pagos)
n
n
Solicitud
Autorizacin
1
1
Objetivos:
?
(from Pagos)
?
?
Mtodo de la Plantilla
Instanciacin de Objetos complejos
Uso de Agentes virtuales
Solicitud
Crdito
1
401
Introduccin
Introduccin
?
?
403
402
404
101
Mecanismos de Almacenamiento
Esquema (Framework)
405
?
?
?
?
406
Definici
Definici
n del sistema
Esquema relacional de
persistencia de objetos
Base de
Datos
Relacional
Dra. Lioubov Dombrovskaia
407
408
102
Requerimientos del EP
Ideas a Analizar
Materializacin y Desmaterializacin
?
Mapeo
?
409
Ideas a Analizar
Ideas a Analizar
Cach
?
Operaciones de transacciones
Bsqueda
Referencias inteligentes
?
410
Objetos complejos
?
411
412
103
Mapeo
?
?
413
Conviene contar con un medio que relacione los registros con los
objetos y que asegure la no duplicidad de estos
:Venta
fecha=1/1/1997
Ido=xyz123
Hora=10:00
seTermina()
:Venta
El IDO puede
definirse en un
objeto Agente
fecha=2/2/1997
Ido=Abc345
414
Clave Primaria
Hora=14:00
415
416
104
Superclase abstracta de
todos los intermediarios de
bases de datos relacionales
?
Intermediariode
EPArchivos
Intermediariode
EPRelacional
Se define una clase plantilla, la cual puede ser utilizada para definir
el esqueleto de un algoritmo
?
IntermediariodeEP
Intermediario
IntermediariodeArchivos
Intermediariode
deEspecifProducto
RelacionaldeVentas
EspecifProductos
ArchivodeVentas
IntermediarioRelacional
417
418
Ejemplo:
metododePlantilla
{..
operacionPrimitiva ()
operacionConcreta ()
IntermediariodeEP
Clase Abstracta
MetododePlantilla()
operacionPrimitiva ()
}
Operaciones abstractas primitivas:
-partes variables
RegistrodeBDR
campo(nombredeArchivo) : Objeto
1
operacionConcreta ()
IntermediarioEPRelacional
Operaciones concretas
-comportamiento por omisi n
currentRecordAsObject() : Object
materializeWith(OID) : Object
selectFirst(query) : Object
IntermediariodeEPdeArchivos
materializeWith(OID) : Object
Clase Concreta
operacionPrimitiva ()
IntermediarioRelacionaldeEspecific
aciondeProducto
419
IntermediarioRelacionaldeVentas
currentRecordAsObject() : Sale
currentRecordAsObject() : ProdSpec
Dra. Lioubov Dombrovskaia
420
105
421
Cach
Cach
Mejorar el desempeo
?
Materializar es lento
423
422
424
106
Cach: Tipos
objectWith(anOID): Object
CachedeObjetos
1
Guarda-objetos-en
Add(OID, Object)
inCache(anOID): Object
Find(OID): Object
materializeWith(anOID): Object
isEmpty(): Boolean
425
Referencias Inteligentes
<<Clase>>
LineaDeVenta
cantidad
<<Interfaz>>
IEspecificacionProducto
descripcion ()
precio()
id()
Subtotal()
n
Descrita_por
1
Dra. Lioubov Dombrovskaia
427
426
<<Clase>>
AgenteEspecificacionProducto
ido : IDO
description()
getRealSubject()
materializeSubject ()
price()
id()
<<Clase>>
EspecificacionProducto
descripcion
precio
Agente_de
id
n
1
descripcion ()
precio()
id()
428
107
Agente-de
getRealSubject()
materializeSubject ()
IntermediariodeEP
Materializa-a partir de
1
<<Interfaz>>
InterfazdeAgente
solicitud()
<<Clase>>
AgenteVirtualConcreto
objectWith()
inCache()
materializeWith ()
return realSubject
<<Clase>>
SujetoReal
solicitud()
Dra. Lioubov Dombrovskaia
solicitud()
429
430
?
?
?
?
//mtodo de plantilla
if(broker not created)
broker:=createBroker()
Return broker
<<Clase>>
AgenteVirtual
ido : IDO
431
Mtodo Fabrica
IntermediariodeEPRelacional
intermediario
createBroker()
getBroker()
getRealSubject()
materializeSubject ()
ObjectWith()
realSubject:=
getBroker().objectWith(ido )
<<Clase>>
AgenteEspecificaciondeProducto
IntermediariodeEPRelacional
createBroker()
description()
price()
upc()
return
ProductSpecificationRelationalBroker.Instance()
Dra. Lioubov Dombrovskaia
432
108
?
?
Colocar una clave fornea del IDO en una o en las dos tablas que
representan los objetos en la relacin
Problema:
Para qu implementar Agentes Virtuales e Intermediarios
de BD?
433
434
?
?
Solucin:
Aplazar la materializacin de los objetos, dependiendo de
los patrones de acceso y los requerimientos de
desempeo, hasta que sea necesario
Cantidad
IDO
vli1
vli2
descripcion
precio
id
p1
pauelos
1.50
111
p2
tempeh
2.25
222
LineaDeVenta
EspecifdeProducto
VLI-IDO
EP-IDO
vli1
P1
vli2
P2
LineaDeVenta-a-EspecifdeProducto
Dra. Lioubov Dombrovskaia
435
436
109
?
?
1: o:=getRealSubject()
Crear("vli1")
2: t:=subtotal()
: AgenteLineaDeVenta
o : LineaDeVenta
t:=subtotal()
1: [not materialized] materializeSubject()
//Crear el agente
o:=getRealSubject()
AgenteLineaDeVenta unVLI=
N: o:=currentRecordAsObject()
: AgenteLineaDeVenta
1.2: o:=objectWith((ido)
new AgenteLineaDeVenta(vli1),
LineaDeVenta vli:=new LineaDeVenta
vli.cantidad(currentRecord.field("cantidad))
//reiderar el IDO de EspecifDeProducto asociado
SELECT *
from LineaDeVenta-a-EspecifiDeProducto
where VLI -IDO= :ido
EspecifDeProdIDO =currentRecord.field("EP-IDO")
//crear el intermediario a la EspecifDeProducto
IntermediarioEspecifdeProducto intermediario =
new IntermediarioEspecifiDeProducto(EspecifDeProdIDO )
//guardar intermediario en VLI
vli.especifdeProducto=intermediario
return vli
Finalmente, llega
a este mensaje
1.1: b:=getBroker()
437
b : IntermediarioLineaDeVenta
438
1: p:=precio()
t:=subtotal()
: LineaDeVenta
: AgenteEspecifDeProducto
3: p:=precio()
o : EspecificacionDeProducto
Finalmente, llega
a este mensaje
N: o:=currentRecordAsObject()
: AgenteEspecifDeProducto
1.2: o:=objectWith(()ido)
b : IntermediarioEspecifDeProducto
ep.descripcion=currentRecord.field("descripcion")
ep.precio=currentRecord.field("precio")
ep.id=currentRecord.field("i d")
return ep
439
440
110
Operaciones de Transacciones
Operaciones de Transacciones
?
Dra. Lioubov Dombrovskaia
441
Operaciones de Transacciones
Operaciones de Transacciones
Cmo eliminar?
443
Operacin commit
Una vez se decide instalar la transaccin, se enva un mensaje
commit a la Fachada ServidordeIntermediario
BrokerServer.instance().commit();
El mtodo ServidordeAgente.commit simplemente dirige un mensaje
commit a cada intermediario.
void BrokerServer.commit()
{
for each broker b
b.commit()
}
444
111
Operaciones de Transacciones
Operaciones de Transacciones
Operacin rollback
?
?
445
446
447
448
112
Diseos Alternos
IntermediarioRelacionaldeVentas
CurrentRecordasObject():Venta()
VentaconFechayHora(fecha,hora):Venta()
?
selectFirst("date = ",fecha,"and time = ",hora)
returncurrentRecordasObject()
Dra. Lioubov Dombrovskaia
449
450
Diseos Alternos
Diseos Alternos
Objetos Consulta
Intermediario
utilizado en las
pruebas
451
IntermediariodeEPRelacional
IntermediariodeEPdeArchivos
IntermediariodeEPenMemoria
452
113
Diseos Alternos
Diseos Alternos
Implementacin
Diseos Alternos
Diagrama de Componentes
?
EstadodeTransaccion
?
commit()()
rollback()()
EstadoViejoLimpio
454
EstadoViejoSucio
commit()()
rollback()()
commit()()
rollback()()
455
456
114
Implementacin
Implementacin
Cuerpo
Genrico
Package
specification
457
Package
body
Generic
package
458
Implementacin
Implementacin
NewPackageSpec2
Dependencia entre
dos componentes
459
460
115
Implementacin
Implementacin
NewPackageBody2
461
NewPackageSpec2
462
Implementacin
Implementacin
463
NewTaskSpec2
NewTaskBody
464
116
Implementacin
Implementacin
?
?
NewMainSubprog2
465
Implementacin
Implementacin
?
?
466
467
468
117
Implementacin
Implementacin
Espec. Subprograma
Subsistema
NewPackage2
NewPackage6
Implementacin
Implementacin
?
Subsistema
Programa Principal
NewPackage2
?
NewPackage6
471
470
472
118
Implementacin
Implementacin
Diagrama de Despliegue
Diagrama de Despliegue
?
?
Dispositivos
Procesadores
? Memoria
?
Nodo
473
Implementacin
Patrones GRASP
Diagrama de Despliegue
Introduccin
<<Procesador>
Nodo
?
?
<<dispositivo>>
nodo2
<<<<TCP/IP>>>>
conexin1
conexin7
<<RDSI>>
474
dispositivo
475
476
119
Patrones GRASP
Patrones GRASP
Polimorfismo
Polimorfismo
477
Patrones GRASP
Patrones GRASP
Polimorfismo
Polimorfismo
PagoconCheque
PagoconTarjeta
PagoenEfectivo
montoOfrecido
autorizar( )
autorizar( )
autorizar( )
479
?
Segn el polimorfismo cada
tipo de pago debe
autorizarse a si mismo
478
480
120
Patrones GRASP
Patrones GRASP
Polimorfismo
Fabricacin Pura
481
Patrones GRASP
Patrones GRASP
Fabricacin Pura
Fabricacin Pura
483
482
484
121
Patrones GRASP
Patrones GRASP
Fabricacin Pura
Fabricacin Pura
AgentedeAlmacenenamientoPersistente
guardar( )
485
Patrones GRASP
Patrones GRASP
Fabricacin Pura
Indireccin
Problemas:
?
487
486
488
122
Patrones GRASP
Patrones GRASP
Indireccin
?
?
Ejemplo: AgentedeAlmacenamientoPersistente
El ejemplo de Fabricacin Pura para desacoplar la Venta y
los servicios de la base de datos relacional introduciendo la
clase AgentedeAlmacenamientoPersistente es tambin un
ejemplo de asignar responsabilidades para apoyar la
Indireccin
El AgentedeAlmacenamientoPersistente sirve de
intermediario entre la Venta y la base de datos
489
Patrones GRASP
Patrones GRASP
491
490
492
123
Patrones GRASP
Patrones GRASP
Venta
fecha : Fecha
hora : Hora
estaTerminada :
montodePago()
Caja ::MontodePago()
{ pag: e_venta->pago()
1 total( )
crearLineaVenta( )
efectuarPago ( )
Terminar( )
pagar( )
Pagado -por
493
Patrones GRASP
Patrones GRASP
montodePago()
1: imp :=montodePago()
Venta
: Caja
Caja ::MontodePago()
{
pag: e_venta->MontodePago()
}
: Venta
pag :Pago
montoOfrecido ()
: Venta
2: imp:=montoOfrecido () : Flotante
Pago
monto : Entero
Booleano
1: pag:=pago(): Pago
: Caja
fecha : Fecha
hora : Hora
Terminada :
Booleano
total( )
crearLineaVenta( )
Pagar( )
Terminar( )
montodepago( )
494
pag : Pago
Dra. Lioubov Dombrovskaia
495
496
124
Patrones GRASP
Proceso de Desarrollo
Quiz
Objetivos
?
?
2: cid:=obtenerID()
1: autorizar()
pc :
PagoCrdito
: Caja
4: cid:=obtenerID(ct)
: Tienda
3: tc_tipo:=tipo()
:
TarjetaCrdito
?
5: sa:=buscar(tc)
: Servicio
Autorizacin
: ContratoServicio
Dra. Lioubov Dombrovskaia
497
Proceso de Desarrollo
Proceso de Desarrollo
Desafos
Desafos
?
?
Por qu molestarnos?
La respuesta salta a la vista: el desarrollo de software es
un negocio riesgoso
?
499
498
500
125
Proceso de Desarrollo
Proceso de Desarrollo
Desafios
501
Proceso de Desarrollo
Proceso de Desarrollo
502
503
504
126
Proceso de Desarrollo
Proceso de Desarrollo
505
Proceso de Desarrollo
Proceso de Desarrollo
?
?
Dra. Lioubov Dombrovskaia
507
506
508
127
Proceso de Desarrollo
Proceso de Desarrollo
509
Proceso de Desarrollo
Proceso de Desarrollo
Ciclos de desarrollo
?
?
511
?
?
?
510
512
128
Proceso de Desarrollo
Proceso de Desarrollo
Ciclos de desarrollo
Ciclos de desarrollo
?
Dra. Lioubov Dombrovskaia
Tener un equipo en otro piso del mismo edificio produce casi el mismo
impacto que si estuviera en un sitio geogrficamente distante
Equipos numerosos
513
Proceso de Desarrollo
Proceso de Desarrollo
Ciclos de desarrollo
Ciclos de desarrollo
515
514
516
129
Proceso de Desarrollo
Proceso de Desarrollo
517
518
Proceso de Desarrollo
Proceso de Desarrollo
No existe una regla infalible sobre las capas donde hay que
centrarse al iniciar el desarrollo, pero s hay algunas cuestiones a
considerar:
?
519
520
130