Documentos de Académico
Documentos de Profesional
Documentos de Cultura
OObbjjeettooss//RReellaa
cciioonnaall
por SSeeppttiieemmbbrree
Fernando
Dodino
VVeerrssiinn
2
22000077
11..00
Objetos
Datos
Comportamiento
RDBMS
entre dos partes, quien publica un determinado servicio y quien usa ese
cantidad
servicio. En el lgebra relacional la interfaz no se convierte en ninguna
3
entidad, con lo cual hay que contar con ciertos trucos para generar objetos
que slo encapsulan comportamiento (como los strategies stateless):
Item
Prod.Fabr.
producto
cantidad
3 pregunta
Estos
memoria
La
permita
- oobjetos
La
agrupar
objeto
las
tengo
puedo
es
recuperarlos
herencia
limitada
cuales
es:
supertipos
utilizar
viven
recibo
comportamiento
este
-Mmm...
heredo.
esen
yPuedo
grafo
el
la
una
necesito
una
elda
ydefinicin
claramente
relacin
ambiente
conservar
subtipos,
En
base
que
deel
ypoder
acabamos
maana
de
Entonces
estructura
Anotamos
atributos
modelo
esttica
datos
ypropia
la
son
pero
todos
almacenar
(concepto
misma
informacin.
lgico
de
distintas
relacional
en
tengo
en
en
de
basada
somos
dibujar
que
el
la
estructura
comn.
la
de
pizarrn
distintas
los
implementacin
se
que
clase
felices.
un
en
formas
da
objetos
encaja
como
llamaremos
Diagrama
Cuando
el
entre
y similitudes
lgebra
en
de
repositorio
opciones:
de
Eluna
en
justo
yo
todas
clases,
relacionar
tema
Entidad/Relacin
un
instancio
fsica
base
persistencia).
relacional?
medio
en
las
esque
yde
una
de
que
superclases
las
diferencias
objetos,
que
entidades.
favorece
un
la
tablas
me yono
de
4
Sinpierdo
contarcontrol
los stored
cuando
procedures
hay un
Esocambio:
que
tiene
estoy
encapsulamiento
podra
muchas
esmezclando
difcil
desarrollar
contras:
as
tecnologas
conservar
desde
Mundo
Reglas
Desde
SQL
la
manuales
objetos
el
base
de negocio
detiro
datos.
etc.
RDBMS
queries
Presentacin
Bueno, hace 10 aos tenamos que manejar nosotros ese mapeo objetosrelacional. Era una tarea bastante tediosa:
Cada vez que quera persistir un objeto haba que armar un query de INSERT de
cada uno de los campos, o de UPDATE de todos los campos
Lo mismo cuando queramos recuperar los clientes que comenzaran con Q,
hacamos un SELECT de la tabla de clientes, y a partir de ah por cada registro
tenamos que hacer un
registrosRecuperadosDeLaBase do: [ :registro |
cliente := Cliente new.
Cliente nombre: (lo que estuviera en el campo nombre del registro actual)
5hagamos
Fjense
(en
Qu
que
identificador.
mensaje
Un
una
detalle
la
tabla
es
pasa
cajita
l
qu
a un
en
se
el
ypara
diferencia
ningn
query
objetos?
PEDIDO:
Estamos
de
objeto,
Cuando
comentar:
abajo),
quede
otro
PEDIDO_ID,
hablando
Manejamos
yo
no
tenemos
objeto,
ms
necesitamos
referencio
necesito
fjense
referencia
explcita
del
vs.
cada
Hablamos
FECHA_PEDIDO.
el
entonces
que
identificarlo
mismo
la
concepto
aregistro
una
clase
aparece
un
alal.
del
registro
clave
objeto,
no
informacin
de
Pedido.
Si
es
mismo
de
varias
Esto
identidad:
que
no
necesario
porque
la
se
si
lo
objeto
permite
identifique
tabla
Adems
que
tienen
veces
conozco
que
alguien
letrabajar
estamos
si
Pedido.
cada
que
del
al
estoy
el
objeto1
no
definir
mismo
objeto
cuando
comportamiento
unvocamente
me
le
enviando
recuperando:
pas
con
puedo
==
PEDIDO_ID.
sabe
columnas
un
la
objeto2.
pedir
una de
cosas.
SELECT p.FECHA_PEDIDO
FROM PEDIDO p
WHERE
En cambio, en un objeto Pedido, no repetimos en el atributo el nombre de la clase,
porque est claro dnde estamos: en la clase Cliente tenemos un atributo nombre,
y no nombreCliente1.
Claro, faltan algunas otras cosas al modelo, tenemos que manejar la relacin
Pedidos-Items-Productos. Fjense las diferencias:
Modelo relacional:
PEDIDO
ITEM
PEDIDO_ID
FECHA_PEDIDO
PEDIDO_ID (FK)
ITEM_ID
CANTIDAD
Fjense que como el Pedido es la tabla madre y los tems son hijos, la clave
principal de ITEM se compone del Identificador del Pedido y el del Item.
Esto implica que si tengo el Pedido 1 con 2 tems y el Pedido 2 con 2 tems, la
tabla Item tendra la siguiente informacin:
Pedido_Id Item_Id Cantidad
1 1
1 2
2 1
2 2
La otra opcin es definir al tem como autoincremental (la relacin es nonidentifying):
PEDIDO
PEDIDO_ID
FECHA_PEDIDO
ITEM
ITEM_ID
PEDIDO_ID (FK)
CANTIDAD
generar
claves
datos.
(cosa
IDs incrementales
mi
ITEM_IDs
mucho
autoincrementales,
Por
ltimo
dando
qu?
mspor
Item_Id
compleja
vueltas).
Porque
segn
tabla,
es
para
elque
Cmo juega el ID dentro del objeto Pedido e Item? Bueno, quizs s tenga un
atributo Id en Pedido e Item pero si yo trabajo en objetos no quiero que el que
use a ese objeto est preguntando por el Id. Depende del contexto, el id puede
ser un atributo privado que no tenga getter hacia fuera.
Modelo de objetos:
ITEM
PEDIDO
ITEM_ID
PEDIDO_ID
FECHA_PEDIDO
PRODUCTO_ID
NOMBRE
PEDIDO_ID (FK)
VALOR
CANTIDAD
PESO
PRODUCTO_ID (FK)
TIPO_PRODUCTO
TIPO_PRODUCTO
CONSERVADO
PRODUCTO_ID (FK)
DIAS_CONSERVACION
PRECIO_COMPRA
COMPRADO
FABRICADO
PRODUCTO_ID (FK)
PRODUCTO_ID (FK)
PRECIO_COMPRA
CANTIDAD_HORAS_HOMBRE
PRODUCTO
ITEM
PEDIDO
ITEM_ID
PEDIDO_ID
PRODUCTO_ID
NOMBRE
PEDIDO_ID (FK)
VALOR
CANTIDAD
PESO
PRODUCTO_ID (FK)
TIPO_PRODUCTO
FECHA_PEDIDO
CONSERVADO
COMPRADO
PRODUCTO_ID (FK)
DIAS_CONSERVACION
PRECIO_COMPRA
FABRICADO
PRODUCTO_ID (FK)
PRODUCTO_ID (FK)
PRECIO_COMPRA
CANTIDAD_HORAS_HOMBRE
CONSERVADO
ITEM_ID
CONSERVADO_ID
COMPRADO
FABRICADO
FABRICADO_ID
COMPRADO_ID
CANTIDAD_HORAS_HOMBRE
PRECIO_COMPRA
NOMBRE
NOMBRE
VALOR
VALOR
PESO
PESO
ITEM
ITEM_ID
PRODUCTO
PRODUCTO_ID
PEDIDO_ID
Cundo
Supongamos
Querys
conviene
que
polimrficos:
Opcional:
PRECIO_COMPRA
cada
tenemos
opcin:
Conservado
podemos
este
qu
comn
modelo
dejar
significa
y el
para
relacional:
Comprado
el
el
atributo
esto? NOMBRE
FECHA_PEDIDO
PEDIDO_ID
PRODUCTO_ID
CANTIDAD
CANTIDAD_HORAS_HOMBRE
PRECIO_COMPRA__529
DIAS_CONSERVACION
(FK)
(FK)
TIPO_PRODUCTO
PRECIO_COMPRA
VALOR
PESO