Professional Documents
Culture Documents
Marcello Visconti y Hernn Astudillo Departamento de Informtica Universidad Tcnica Federico Santa Mara {visconti,hernan} en inf.utfsm.cl
Fundamentos de Ingeniera de SW
Fundamentos de Ingenier a de SW
? Objetivo: Disear un esquema que permita disear objetos que den servicios (mtodos) a otros objetos para ser almacenados en un medio persistente
Fundamentos de Ingenier a de SW
Fundamentos de Ingenier a de SW
Fundamentos de Ingenier a de SW
Fundamentos de Ingenier a de SW
Traduce los objetos a registros y a la inversa para almacenarlos en algn medio de almacenamiento
Fundamentos de Ingenier a de SW
? Materializacin
? Es el acto de transformar una representacin no orientada a objetos (e.g registros) a objetos.
? Desmaterializacin
? Acto contrario a Materializar.
Fundamentos de Ingenier a de SW 9
? Referencias inteligentes
? Para hacer transparente la MLPD se crea una referencia inteligente llamada agente virtual.
? Objetos complejos
? Materializaciones de estructuras complejas de objetos.
Fundamentos de Ingenier a de SW
10
? Operaciones de transacciones
? Operaciones commit y rollback.
? Bsqueda
? Localizacin y materializacin de los objetos a partir de algunos criterios.
Fundamentos de Ingenier a de SW
11
Fundamentos de Ingenier a de SW
12
? El patrn Identificador de Objetos (IDO) propone asignar un IDO a cada registro y objeto (o agente de un objeto) que los relacione.
? En general, es un valor alfanumrico.
? Toda tabla de la base de datos relacional tiene un IDO como clave primaria, el que tambin est contenido como atributo en el objeto
Fundamentos de Ingenier a de SW
13
Venta
Ido=xyz123 Hora=10:00
seTermina()
:Venta
Clave Primaria
Fundamentos de Ingenier a de SW
14
Fundamentos de Ingenier a de SW
15
IntermediarioRelacional deEspecifdeProducto
Intermediario RelacionaldeVentas
IntermediariodeArchivos EspecifdeProductos
Intermediariode ArchivodeVentas
Fundamentos de Ingenier a de SW
16
? Estos mtodos pueden o no estar en una subclase y por general llaman a otros mtodos.
Fundamentos de Ingenier a de SW
17
operacionPrimitiva()
Fundamentos de Ingenier a de SW
18
Registro-actual-de
Una tcnica totalmente diferente para materializar a partir de archivos planos. IntermediarioRelacionaldeVentas currentRecordAsObject() : Sale
Fundamentos de Ingenier a de SW
19
Fundamentos de Ingenier a de SW
20
10
Fundamentos de Ingenier a de SW
21
? El patrn Administracin de Cach propone asignar a los intermediarios la responsabilidad de administrar el cach.
? Si se tiene un intermediario diferente para cada tipo de objeto persistente, cada uno de ellos deber tener su propia cach.
Fundamentos de Ingenier a de SW
22
11
? Otra forma de conservar los objetos es en varias cachs, segn el estado que presenten dentro del contexto de la transaccin actual. ? El intermediario conserva hasta 6 tipos diferentes de cachs lo que permite sentar las bases para realizar las transacciones sobre la BD.
Fundamentos de Ingenier a de SW
23
Fundamentos de Ingenier a de SW
24
12
Fundamentos de Ingenier a de SW
25
<<Clase>> EspecificaciondeProducto descripcion Agente_de precio description() cup 1 getRealSubject() n 1 materializeSubject() descripcion() price() precio() cup() cup() Fundamentos de Ingenier a de SW 26
13
Fundamentos de Ingenier a de SW
28
14
? Cuando se usan agentes virtuales, conviene que toda referencia a objetos se efecte a travs de objetos agente y no a travs de referencias directas.
? Todas las definiciones de atributos se refieren a objetos agentes a interfaces, no a objetos directos. ? Todos los parmetros se refieren a objetos agente o a interfaces.
Fundamentos de Ingenier a de SW
29
intermediario
15
Fundamentos de Ingenier a de SW
31
? Solucin: Aplazar la materializacin de los objetos, dependiendo de los patrones de acceso y los requerimientos de desempeo, hasta que sea necesario.
? Hay veces en que conviene materializar uno o dos niveles de profundidad ? Con un intermediario distinto para cada objeto persistente, es posible decidir, intermediario por intermediario, el grado de materializacin de los objetos persistentes y sus objetos asociados
Fundamentos de Ingenier a de SW 32
16
Cantidad
IDO p1 p2
ventasLineadeProducto
VLI -IDO vli1 vli2 EP -IDO P1 P2
EspecifdeProducto
ventasLineadeProducto-a-EspecifdeProducto
Fundamentos de Ingenier a de SW 33
//Crear el agente AgenteVentasLineadeProducto unVLI= new AgenteVentasLineadeProducto(vli1), //Causa materializacin de los objetos Int total = unVLI.subtotal();
Fundamentos de Ingenier a de SW
34
17
1: [not materialized ] materializeSubject() 1.1: b:=getBroker () o:=getRealSubject() : AgenteVentasLineaDeProducto VentasLineadeProducto vli:=new VentasLineadeProducto vli.cantidad(currentRecord.field("cantidad)) //recuperar el IDO de EspecifDeProducto asociado SELECT * from VentasLineadeProducto-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
Fundamentos de Ingenier a de SW
35
Fundamentos de Ingenier a de SW
36
18
b : IntermediarioEspecifDeProducto
Fundamentos de Ingenier a de SW
37
? El Intermediario de BD conservar cachs especiales para cada uno de estos estados y garantizar con ello que un objeto est en la cach apropiada.
Fundamentos de Ingenier a de SW
38
19
Fundamentos de Ingenier a de SW
39
Fundamentos de Ingenier a de SW
40
20
Fundamentos de Ingenier a de SW
41
Fundamentos de Ingenier a de SW
42
21
? El mtodo ServidordeAgente.rollback simplemente dirige un mensaje rollback a cada intermediario. ? Las reglas del rollback son las siguientes:
? Cach Vieja y Limpia - Ignorar, no han cambiado. ? El resto de las cachs - Eliminar en la cach.
Fundamentos de Ingenier a de SW
43
Fundamentos de Ingenier a de SW
44
22
? Las instancias asociadas se materializan utilizando Agentes Virtuales en base al valor de identificador de objetos del raz (Venta), pero cmo se prepara la escena y se introduce en la memoria esta primera instancia de Venta?
Fundamentos de Ingenier a de SW
45
23
Fundamentos de Ingenier a de SW
47
Fundamentos de Ingenier a de SW
48
24
IntermediariodeEP
IntermediariodeEPRelacional
IntermediariodeEPdeArchivos
IntermediariodeEPenMemoria
Fundamentos de Ingenier a de SW
49
? No conviene agregar directamente el conocimiento de la persistencia a las definiciones del objeto de dominio.
Fundamentos de Ingenier a de SW
50
25
Fundamentos de Ingenier a de SW
51
EstadodeTra nsaccion
commit()() rollback()()
EstadoViejoLimpio
EstadoViejoS ucio
commit()() rollback()()
commit()() rollback()()
Fundamentos de Ingenier a de SW
52
26
Fundamentos de Ingenier a de SW
53
27