Final de Programacion Orientada a Objetos, Prototipos - Cuba-Wiki

Anuncio
Final
de
Programación
Orientada
a
Objetos
Proto%pos
y
Clases
Profesor:
Máximo
Prieto
Jefe
de
Trabajos
Prác%cos:
Hernán
Wilkinson
Facultad
de
Ciencias
Exactas
y
Naturales
Universidad
de
Buenos
Aires
Federico
Larumbe
fl[email protected]
L.U.:
260/01
10
de
marzo
de
2008
Se
realiza
un
análisis
de
los
lenguajes
orientados
a
objetos
con
proto%pos
y
con
clases.
Se
adjuntan
síntesis
de
los
arUculos
fundacionales
de
la
programación
con
proto%pos.
Se
comparan
ambos
enfoques
con
sus
ventajas
y
sus
desventajas.
Introducción
En
este
informe
se
sinte%zan
los
arUculos
fundacionales
de
la
programación
orientada
a
objetos
con
proto%pos.
La
síntesis
de
cada
arUculo
va
acompañada
con
una
breve
conclusión
del
mismo.
Luego
de
los
cuatro
arUculos
se
presenta
un
análisis
compara%vo
entre
el
uso
de
sistemas
con
clases
y
de
sistemas
con
proto%pos.
Este
análisis
está
acompañado
de
una
conclusión
que
muestra
las
ventajas
y
desventajas
de
ambos
enfoques
en
dis%ntas
situaciones.
De
Tipos
y
Prototipos
El
Tratado
de
Orlando
L ynn
Andrea
Stei n,
Henry
L i eberman,
Davi d
Ungar
El obj e%vo
de
l a
programaci ón
ori entada
a
obj etos
es
proveer
una
forma
natural y
di recta
para
descri bi r
conceptos
del mundo
real .
Una
parte
fundamental es
l a
posi bi l i dad
de
compar%r
datos,
códi go
y
defini ci ones.
Así mi smo,
todos
l os
l enguaj es
ori entados
a
obj etos
proveen
al guna
forma
de
defini r
un
obj eto
en
térmi nos
de
uno
exi stente.
Muchos
l enguaj es
i mpl ementaron
el compar%r
a
través
de
cl ases.
Si n
embargo,
esto
i mpone
una
j erarquí a
de
%pos
rí gi da.
L os
firmantes
de
este
tratado
proponen
di s%ntas
sol uci ones
a
este
probl ema:
L i eberman
propuso
rempl azar
l a
herenci a
tradi ci onal por
del egaci ón
y
l as
cl ases
abstractas
por
obj etos
protoUpi cos;
Ungar
y
Smi th
tambi én
propusi eron
un
enfoque
basado
en
proto%pos
y
real i zaron
una
drás%ca
si mpl i ficaci ón
del model o
de
Smal l tal k
en
l a
cual un
si mpl e
enl ace
al obj eto
padre
reempl aza
el protocol o
cl ase/subcl ase/i nstanci a;
Stei n
señal ó
que
l a
rel aci ón
cl ase/subcl ase
es
esenci al mente
l a
“ del egaci ón” ,
o
“ herenci a
di námi ca” .
Reconocen
en
común
dos
mecani smos
fundamental es
que
l os
l enguaj es
ori entados
a
obj etos
deben
i mpl ementar
para
compar%r:
l a
empaUa,
es
deci r,
l a
posi bi l i dad
de
un
obj eto
de
compar%r
el comportami ento
de
otro
obj eto
si n
redefini ci ón
expl í ci ta;
y
l a
posi bi l i dad
de
crear
un
nuevo
obj eto
basado
en
un
templ ate
que
garan%za
en
parte
caracterí s%cas
del nuevo
obj eto.
L os
mecani smos
para
compar%r
pueden
ser
anal i zados
real i zando
el ecci ones
de
di seño
sobre
l as
si gui entes
tres
di mensi ones:
está%cos
o
di námi cos,
i mpl í ci tos
o
expl í ci tos
y
por
obj eto
o
por
grupo.
Según
l as
si tuaci ones
de
programaci ón,
di ferentes
combi naci ones
de
estas
caracterí s%cas
son
más
apropi adas:
en
un
entorno
de
programaci ón
experi mental ,
compar%r
en
forma
di námi ca,
expl í ci ta
y
por
obj eto;
en
l a
producci ón
de
sobware
extenso
y
ru%nari o,
estri ctamente
está%co,
i mpl í ci to
y
ori entado
a
grupo.
Como
l os
si stemas
evol uci onan
natural mente
de
di námi cos
y
desorgani zados
haci a
está%cos
y
más
op%mi zados,
l a
representaci ón
en
obj etos
tambi én
deberí a
evol uci onar
en
este
sen%do.
El entorno
de
desarrol l o
deberí a
proveer
representaci ones
flexi bl es
j unto
a
herrami entas
para
agregar
estructuras
mi entras
el di seño
se
estabi l i za.
Conclusión
Me
parece
una
buena
di recci ón
haci a
donde
i r
el rel aj ar
l a
j erarquí a
de
l os
%pos
y
enfocarse
en
l o
más
concreto
que
son
l os
obj etos.
Par%cul armente,
me
atraj o
l a
si mpl i ficaci ón
de
Ungar
y
Smi th
en
el l enguaj e
Sel f
y
su
proto%pado.
L as
tres
di mensi ones
de
l a
forma
de
compar%r
resul ta
ú%l para
cl asi ficar
l os
l enguaj es
de
obj etos.
En
el si gui ente
arUcul o,
se
anal i za
más
detal l adamente.
Una
visión
compartida
sobre
compartir
El
Tratado
de
Orlando
L ynn
Andrea
Stei n,
Henry
L i eberman,
Davi d
Ungar
Iden%ficamos
dos
mecani smos
fundamental es:
templ ates
y
empaUa.
L os
templ ates
crean
nuevos
obj etos
basados
en
su
propi a
i magen
y
proveen
garanUas
sobre
l a
si mi l i tud
de
l os
mi embros
del grupo.
L a
empaUa
permi te
a
un
obj eto
actuar
como
si fuera
otro
y
así permi te
compar%r
el estado
y
el comportami ento.
Dos
formas
de
compar%r
aparecen
en
l os
si stemas
ori entados
a
obj etos.
Uno
es
el an%ci pado,
si mi l i tudes
que
se
advi erten
en
l a
fase
conceptual del di seño.
En
l os
l enguaj es
ori entados
a
obj etos
tradi ci onal es,
l as
cl ases
si rven
para
este
propósi to.
L a
otra
forma
de
compar%r
es
no
an%ci pada.
L a
del egaci ón,
o
herenci a
di námi ca,
permi te
a
l os
nuevos
obj etos
reu%l i zar
el comportami ento
de
exi stentes
si n
requeri r
l a
especi ficaci ón
previ a
de
esta
rel aci ón.
L a
empaUa
puede
ser
expl í ci ta,
“ Ej ecuto
thi sObj ect:thi sRou%ne
en
mi entorno” ,
o
puede
ser
por
defecto,
“ Todo
l o
que
no
puedo
resol ver
l ocal mente,
l o
busco
en
mi padre
y
l o
ej ecuto
en
mi entorno” .
L a
herenci a
de
Si mul a
y
Smal l tal k
es
l a
determi naci ón
preprogramada
de
l os
cami nos
de
del egaci ón
por
defecto
y
por
grupo.
Un
templ ate
con%ene
todos
l os
métodos
y
defini ci ones
de
vari abl es,
punteros
a
padre,
etc.,
requeri dos
para
defini r
un
nuevo
obj eto
del mi smo
%po.
Si el obj eto
no
puede
ganar
o
perder
atri butos,
l o
l l amamos
templ ate
estri cto.
Un
templ ate
mi ni mal es
el que
permi te
a
l os
obj etos
creados
defini r
otros
atri butos.
El model o
del l enguaj e
actor
es%pul a
úni camente
obj etos
ac%vos
y
pase
de
mensaj es
en
paral el o.
L os
si stemas
actor
se
cl asi fican
como
di námi cos,
expl í ci tos
y
por
obj eto.
No
hay
templ ates
en
el núcl eo
de
estos
si stemas.
Del ega%on
es
un
fruto
de
l os
l enguaj es
actor.
Un
nuevo
obj eto
se
crea
con
un
obj eto
vací o
que
apunta
a
otro
y
l uego
se
i ngresan
l os
detal l es
que
debe
contener.
En
Del ega%on,
l a
empaUa
puede
ser
i mpl í ci ta
o
expl í ci ta.
Sel f
es
un
l enguaj e
basado
en
templ ates.
Un
nuevo
obj eto
es
creado
a
par%r
de
l a
cl onaci ón
de
otro.
L os
templ ates
son
no
estri ctos
y
l a
empaUa
es
por
obj eto,
di námi ca
e
i mpl í ci ta.
Hybri d
permi te
a
l a
tradi ci onal mente
está%ca
y
estri cta
rel aci ón
de
herenci a
ser
di námi ca
y
flexi bl e.
Conclusión
Se
anal i zan
dos
conceptos
fundamental es
de
l a
programaci ón
ori entada
a
obj etos:
cómo
nacen
l os
obj etos
y
cómo
comparten
comportami ento.
L a
extensi ón
del di nami smo
permi te
agi l i zar
l a
programaci ón
y,
por
l o
tanto,
acortar
l a
brecha
entre
l os
entes
y
l os
obj etos.
En
mi opi ni ón,
es
cómodo
tener
templ ates,
ya
sea
en
forma
de
cl ase
o
de
proto%po.
De
acuerdo
a
l os
obj etos
en
cues%ón,
uno
deberí a
poder
deci di r
l a
forma
en
que
son
creados:
si basados
en
una
cl ase,
en
un
proto%po
y
si cada
obj eto
%ene
comportami ento
par%cul ar.
L a
empaUa
i mpl í ci ta
en
uno
o
vari os
“ padres” es
ú%l porque
permi te
compar%r
el comportami ento
fáci l mente.
Tambi én
se
puede
anal i zar
l a
forma
de
compar%r
comportami ento
con
construcci ones
sobre
el l enguaj e
tal es
como
composi ci ón
o
decoraci ón.
Self:
El
Poder
de
la
Simpleza
Davi d
Ungar
y
Randal l B.
Smi th
Sel f
es
un
l enguaj e
ori entado
a
obj etos
para
programaci ón
expl oratori a
basado
en
un
reduci do
número
de
i deas
si mpl es
y
concretas:
proto%pos,
sl ots
y
comportami ento.
A
di ferenci a
de
Smal l tal k,
no
i ncl uye
ni cl ases
ni vari abl es.
Sel f
adoptó
una
metáfora
de
proto%po
para
l a
creaci ón
de
obj etos.
A
su
vez,
l os
obj etos
de
Sel f
acceden
a
l a
i nformaci ón
de
su
estado
con
el enví o
de
mensaj es
a
“ sel f” ,
el receptor
del mensaj e
actual .
A
estos
mensaj es
Sel f
debe
su
nombre.
Como
Smal l tal k,
tampoco
%ene
estructuras
de
control ;
si no
que
l as
cl áusul as
y
el pol i morfismo
permi ten
estructuras
de
control arbi trari as
dentro
del l enguaj e.
A
di ferenci a
de
Smal l tal k,
se
uni fican
obj etos,
procedi mi entos
y
cl áusul as
como
proto%pos
de
regi stros
de
ac%vaci ón.
Para
hacer
l os
obj etos
l o
más
concreto
posi bl es,
el egi mos
l os
proto%pos
y
no
l as
cl ases.
En
l os
l enguaj es
basados
en
cl ases
un
obj eto
se
crea
i nstanci ando
un
pl an
en
su
cl ase.
En
un
l enguaj e
basado
en
proto%pos
como
Sel f,
un
obj eto
se
crea
cl onando
un
proto%po.
En
l ugar
de
un
puntero
de
cl ase,
un
obj eto
de
Sel f
con%ene
sl ots
con
nombre
que
al macenan
estado
ó
comportami ento.
Si un
obj eto
reci be
un
mensaj e
y
no
%ene
el sl ot
correspondi ente,
l a
búsqueda
con%núa
a
través
del puntero
a
su
padre.
De
esta
forma,
en
Sel f
no
exi sten
dos
rel aci ones
di s%ntas
entre
obj eto
y
su
cl ase
y
entre
su
cl ase
y
otra
cl ase,
si no
que
hay
una
úni ca
rel aci ón:
un
obj eto
hereda
de
otro
obj eto.
Un
si stema
basado
en
proto%pos
permi te
al usuari o
exami nar
un
representante
Upi co
en
vez
de
tener
que
darl e
sen%do
a
par%r
de
l a
descri pci ón
de
l a
cl ase.
Tambi én,
permi te
l a
exi stenci a
de
obj etos
úni cos.
El comportami ento
se
al macena
en
el mi smo
obj eto
si n
necesi dad
de
otro
obj eto.
En
l os
obj etos
basados
en
cl ases,
si empre
se
necesi ta
un
obj eto
que
descri ba
el comportami ento
de
otro:
un
punto
es
una
i nstanci a
de
l a
cl ase
punto,
l a
cual es
una
i nstanci a
de
l a
metacl ase
Punto
y
así hasta
el i nfini to.
En
l os
si stemas
basados
en
proto%pos,
un
obj eto
puede
tener
su
propi o
comportami ento.
No
se
necesi ta
otro
obj eto
que
l e
de
vi da.
De
esta
forma,
se
el i mi na
el meta‐regress.
Nuestra
sol uci ón
para
compar%r
comportami ento
en
una
fami l i a
de
obj etos,
es
ubi car
ese
comportami ento
en
el padre
de
todos
el l os.
Este
obj eto
padre
cumpl e
un
rol pareci do
al de
l a
cl ase,
con
l a
di ferenci a
que
no
%ene
i nformaci ón
de
formato.
L a
si ntaxi s
de
Sel f
está
basada
en
l a
de
Smal l tal k
con
el agregado
de
l a
creaci ón
de
obj etos
i nl i ne
y
l a
creaci ón
de
mensaj es
automá%camente
a
par%r
de
l os
sl ots.
Conclusión
Esta
si mpl i ficaci ón
estructural hace
más
fáci l de
aprender
el l enguaj e.
Aún
más
“ mi ni mal ” que
Smal l tal k,
se
u%l i zan
l os
“ obj etos
padre” sól o
si es
necesari o
compar%r
conoci mi ento.
El naci mi ento
de
l os
obj etos
por
cl onaci ón
de
un
proto%po
me
resul ta
atrac%vo
y
es
una
buena
i dea
para
i mpl ementar
en
l os
programas
de
otros
l enguaj es
de
obj etos
como
Smal l tal k.
Usar
Objetos
Prototípicos
para
Implementar
Comportamiento
Compartido
en
Sistemas
Orientados
a
Objetos
Henry
L i eberman
El enfoque
de
l os
proto%pos
se
acerca
más
a
l a
forma
en
que
l as
personas
adqui eren
conoci mi entos
de
l as
si tuaci ones
concretas.
L os
si stemas
de
proto%pos
permi ten
crear
conceptos
i ndi vi dual es
pri mero
y
l uego
general i zarl os.
L os
si stemas
ori entados
a
conj untos
requi eren
crear
l a
descri pci ón
abstracta
del conj unto
pri mero,
antes
de
crear
l as
i nstanci as
i ndi vi dual es.
L a
del egaci ón
qui ta
l a
di s%nci ón
entre
cl ases
y
obj etos.
Para
crear
un
obj eto
que
comparte
conoci mi ento
con
un
proto%po,
se
construye
un
obj eto
extensi ó n
que
%ene
una
l i sta
que
con%ene
sus
proto%pos
l os
cual es
pueden
ser
c o mpar@do s
con
otros
obj etos,
y
comportami ento
perso nal i di osi ncrási co
al obj eto
en
sí .
Si l as
caracterí s%cas
personal es
del obj eto
no
son
rel evantes
para
responder
el mensaj e,
el obj eto
reenví a
el mensaj e
a
l os
proto%pos
para
ver
si al guno
puede
responderl o.
El enfoque
de
herenci a
requi ere
l os
pasos
adi ci onal es
para
crear
l os
obj etos
cl ases.
Tambi én
hay
dos
%pos
di ferentes
de
rel aci ones
entre
obj etos,
l a
rel aci ón
de
subcl ase
y
l a
rel aci ón
de
i nstanci a,
mi entras
que
en
el enfoque
de
del egaci ón
sól o
se
requi ere
una
rel aci ón
de
pase
de
mensaj es
entre
l os
obj etos.
¿Son
del egaci ón
y
herenci a
i gual mente
poderosas?
No,
porque
con
l a
del egaci ón
se
puede
i mpl ementar
l a
herenci a
y
con
herenci a
no
se
puede
i mpl ementar
l a
del egaci ón
por
el probl ema
de
l a
vari abl e
sel f.
L a
comparaci ón
de
efici enci a
entre
del egaci ón
y
herenci a
cae
en
un
tradeoff
de
espaci o/
%empo.
L a
herenci a
requi ere
menos
mensaj es,
pero
a
costa
de
aumentar
el tamaño
de
l os
obj etos.
L as
vari abl es
se
copi an
de
l a
supercl ase
a
l a
subcl ase.
Con
del egaci ón
aunque,
se
i ncrementa
el %empo
de
búsqueda
de
métodos,
se
puede
c ac hear
el resul tado
para
reduci rl o.
L a
del egaci ón
es
más
flexi bl e
que
l a
herenci a
para
combi nar
comportami ento
de
orí genes
múl %pl es.
El probl ema
es
que
con
herenci a
el comportami ento
combi nado
se
fij a
antes
de
que
una
i nstanci a
haya
si do
creada.
Con
del egaci ón,
el comportami ento
es
si mpl emente
programado
en
el método
del obj eto
extensi ón
combi nado,
por
l o
que
puede
vari ar
de
acuerdo
al entorno
en
ej ecuci ón.
Si un
obj eto
protoUpi co
cambi a
su
comportami ento,
todos
l os
obj etos
que
l o
menci onan
en
su
l i sta
de
compar%dos
automá%camente
“ si enten” el cambi o.
Si se
hacen
cambi os
en
un
si stema
de
herenci a,
este
cambi o
debe
ser
propagado
en
todos
l os
obj etos.
Esto
desal i enta
el cambi o
de
obj etos
cerca
de
l a
raí z
de
l a
j erarquí a.
Conclusión
L a
del egaci ón
aumenta
mucho
el di nami smo
de
un
si stema
y
l e
da
a
l os
obj etos
l a
posi bi l i dad
de
defini r
el comportami ento
en
el momento
en
que
reci ben
l os
mensaj es.
El enfoque
con
del egaci ón
es
muy
i nteresante
para
i mpl ementar
si stemas
con
desarrol l o
i ncremental .
Nuevamente
nos
centramos
en
l os
obj etos
protoUpi cos
concretos
más
que
en
l as
defini ci ones
abstractas
de
l as
cl ases.
Análisis
comparativo
y
conclusión
En
el si gui ente
cuadro
se
resumen
l as
di ferenci as
que
vi mos
en
l os
arUcul os
anteri ores:
Creaci ón
de
obj etos
Compar%r
comportami ento
Efici enci a
Model o
Cambi os
en
el model o
Clase s
Pl an
en
un
método
constructor
Herenci a
Proto/pos
Cl onaci ón
En
cada
obj eto
se
guardan
todas
l as
vari abl es
heredadas.
Ocupa
más
espaci o,
tarda
más
l a
creaci ón
y
el garbage
col l ec%ng.
Búsqueda
de
métodos
i nstantánea.
Para
i ncorporar
obj etos
deben
i ncorporarse
sus
respec%vas
cl ases.
Cada
cl ase
%ene
una
metacl ase.
Se
afectan
l as
i nstanci as
de
l as
cl ases
modi ficadas
Se
al macena
sól o
l as
di ferenci as
con
el proto%po.
Obj etos
más
chi cos.
Búsqueda
de
métodos
en
caché.
Del egaci ón
Proto%pos
y
obj etos
del model o.
Se
afectan
l os
obj etos
modi ficados
L a
cl ase
es
una
descri pci ón
abstracta
de
un
conj unto
de
obj etos.
A
su
vez,
se
u%l i za
para
crear
l os
obj etos
par%cul ares
perteneci entes
al conj unto.
En
un
caso
donde
l as
cl ases
son
i nherentes
al model o
de
l a
real i dad
como
una
taxonomí a,
el model o
de
cl ases
nos
faci l i ta
ya
tener
programado
l a
rel aci ón
entre
cl ase
e
i nstanci as.
Además,
nos
asegura
que
todos
l os
obj etos
de
cada
cl ase
comparten
l os
mi smos
métodos
y
vari abl es.
L os
si stemas
de
obj etos
o
hí bri dos
con
cl ases
que
además
%enen
%pado
expl í ci to
y
está%co
permi ten
el chequeo
de
%pos
antes
de
l a
creaci ón
de
l os
obj etos.
Esta
caracterí s%ca
puede
ser
ú%l tambi én
para
l a
construcci ón
de
l i brerí as
de
uso
masi vo
donde
l os
%pos
deben
cumpl i r
un
contrato
especí fico
y
estri cto.
Con
proto%pos,
esta
val i daci ón
deberí amos
programarl a
si l a
necesi tamos.
Una
compl i caci ón
del model o
con
cl ases
es
cómo
se
crean
l as
cl ases.
Como
cada
cl ase
es
un
obj eto
y
puede
tener
di s%ntos
mensaj es,
necesi tamos
l a
cl ase
de
cada
cl ase.
Esto
i ntroduce
un
concepto
nuevo
aún
más
abstracto
l l amado
metacl ase
donde
están
l as
vari abl es
y
l os
métodos
de
l a
cl ase.
Por
otro
l ado,
un
obj eto
puede
pertenecer
a
di s%ntos
conj untos
ortogonal es.
J uan
Pérez
pertenece
al conj unto
de
l os
al umnos
de
computaci ón
de
l a
Facul tad
de
Ci enci as
Exactas
y
Natural es
de
l a
UBA,
al conj unto
de
empl eados
de
l a
empresa
Pensob
y
al conj unto
de
hi j os
de
Augusto
Pérez.
Estos
conj untos
a
l os
que
pertenece
J uan
son
aspectos
ortogonal es.
J uan,
en
cada
aspecto,
%ene
un
comportami ento.
Como
al umno,
ri nde
el parci al de
Bases
de
Datos
el 2 de
novi embre
de
2 0 0 7 .
Como
empl eado,
trabaj a
en
el proyecto
Pensystem.
Como
hi j o,
l l eva
a
su
hermana
menor
a
nataci ón.
En
el enfoque
de
cl ases,
se
descri ben
estos
conj untos
con
l os
comportami entos
esperados
de
l os
i ntegrantes.
En
el enfoque
de
proto%pos,
se
descri be
el comportami ento
de
un
el emento
Upi co
de
cada
conj unto.
En
este
ej empl o,
j ustamente
ese
el emento
Upi co
puede
ser
J uan.
Entonces,
descri bi mos
el comportami ento
de
J uan
que
nos
i nteresa
a
efectos
de
nuestro
si stema.
Supongamos
que
construi mos
un
si stema
para
l a
admi ni straci ón
de
l a
facul tad.
Nos
enfocamos
en
el rol de
al umno
de
J uan.
Cuando
di señamos
nuestro
si stema,
i ncorporamos
a
Ari el y
a
Gabri el que
tambi én
son
al umnos.
J uan
se
i nscri be
al curso
de
Programaci ón
Ori entada
a
Obj etos
del segundo
cuatri mestre
de
2 0 0 7 .
Ari el tambi én
se
i nscri be
al mi smo
curso.
L uego,
en
l ugar
de
dupl i car
el comportami ento
de
este
mensaj e,
deci mos
que
Ari el se
comporta
como
J uan.
Gabri el ,
se
i nscri bi ó
en
Cri ptograma
en
el pri mer
cuatri mestre
de
2 0 0 8 .
Notamos
que
este
comportami ento
es
pareci do
al de
J uan
y
al de
Ari el .
Entonces,
extraemos
del mensaj e
“ J uan
se
i nscri be
a
POO
en
el segundo
cuatri mestre
de
2 0 0 7 ” l a
parte
común
al nuevo
mensaj e:
“ J uan
se
i nscri be
a
l a
materi a
X
en
el cuatri mestre
Y” .
De
esta
forma,
permi %mos
que
el comportami ento
de
Gabri el esté
i ncl ui do
en
el comportami ento
posi bl e
de
J uan.
Como
no
queremos
que
l as
acci ones
de
J uan
se
reflej en
en
l as
acci ones
de
l os
demás,
creamos
un
al umno
proto%po
con
l as
caracterí s%cas
de
un
al umno
que
aún
no
real i zó
ni nguna
acci ón
y
que
puede
real i zar
l as
acci ones
que
nombramos.
Este
es
nuestro
proto%po
de
al umno
y
J uan,
Ari el y
Gabri el se
refieren
al mi smo.
Vemos
que
de
esta
forma
nos
centramos
en
l os
obj etos
par%cul ares.
No
en
el al umno
genéri co,
ni en
el conj unto
de
todos
l os
al umnos,
si no
en
J uan,
en
Ari el y
en
Gabri el .
Segui mos
en
el ej empl o
y
en
el pri mer
cuatri mestre
de
2 0 0 8 ,
J uan
se
presenta
a
concurso
para
ayudante,
l e
va
bi en
y
comi enza
su
tarea
de
docente
en
Al gori tmos
I.
Hay
un
nuevo
comportami ento
que
nos
i nteresa
de
J uan,
su
rol como
docente.
Ahora
J uan
además
de
ser
al umno
es
un
“ protodocente” .
En
un
si stema
ori entado
a
proto%pos
esa
es
l a
forma
si mpl e
de
i mpl ementarl o:
agregar
el “ protodocente” a
l a
l i sta
de
comportami ento
compar%do
de
J uan.
Ahora
J uan
puede
comportarse
como
al umno
y
como
docente.
En
el enfoque
con
cl ases,
podemos
crear
una
cl ase
fic%ci a
Al umnoDocente
que
hereda
de
ambas.
Construi mos
un
al umnoDocente
a
par%r
de
J uan.
Perdemos
l a
i den%dad
del obj eto
porque
construi mos
uno
nuevo
copi ando
sus
caracterí s%cas.
Además,
si J uan
se
gradúa,
deberí amos
agregar
l a
cl ase
Al umnoDocenteGraduado
y
copi arl o
nuevamente.
Para
sol uci onar
esto
podemos
crear
una
cl ase
Persona
con
un
rol DeAl umno,
un
rol DeDocente
y
un
rol DeGraduado.
Cada
mensaj e
de
esta
cl ase
consi s%rí a
en
reenvi ar
el mensaj e
al rol correspondi ente.
En
este
caso,
l a
del egaci ón
es
expl í ci ta
l o
que
%ene
el probl ema
de
que
al agregar
el comportami ento
a
uno
de
l os
rol es,
debemos
agregarl o
en
l a
cl ase
Persona
tambi én.
Si agregamos
un
rol al si stema,
deberí amos
recompi l ar
cada
uno
de
l os
obj etos
Persona
con
l a
nueva
vari abl e.
Otra
sol uci ón
es,
en
l a
cl ase
Persona,
tener
una
l i sta
de
rol es.
L uego,
cuando
l l ega
un
mensaj e
reenvi ársel o
a
cada
uno
de
l os
rol es.
Cada
i nstanci a
de
Rol Al umno
deberí a
conocer
l a
persona
a
l a
que
pertenece
para
poder
envi ar
mensaj es
a
sí mi smo.
En
este
caso
vemos
que
el enfoque
de
proto%pos
es
más
i ntui %vo
y
mucho
más
si mpl e.
Si en
el enfoque
de
cl ases
permi %mos
l a
herenci a
múl %pl e
y
Persona
hereda
de
todos
l os
rol es,
se
sol uci ona
el tema
de
repe%r
el códi go
cuando
se
agrega
un
método.
Si n
embargo,
un
al umno
tendrí a
l as
vari abl es
de
todos
l os
rol es,
l o
cual es
muy
poco
óp%mo
en
espaci o
y
en
%empo
de
creaci ón.
Además,
por
cual qui er
cambi o
en
Persona,
en
un
rol o
en
el agregado
de
un
rol habrí a
que
recompi l ar
todos
l os
obj etos
Persona.
Con
proto%pos
se
puede
crear
un
rol y
afectar
sól o
a
l os
obj etos
que
haya
que
agregársel o.
Agregamos
una
nueva
si tuaci ón:
hay
dos
estudi antes
que
ganan
un
premi o
y
queremos
que
esto
conste
en
el si stema.
Sól o
harí a
fal ta
crear
un
proto%po
de
premi ado
y
agregársel o
a
l os
dos
estudi antes
en
cues%ón.
El resto
del si stema
queda
i ntacto.
L a
posi bi l i dad
de
crear
obj etos
si n
necesi dad
de
una
cl ase
nos
evi ta
el paso
del model o
de
obj etos,
al model o
de
cl ases.
Si además
contamos
con
obj etos
úni cos
que
no
comparten
comportami ento
con
otros,
más
j us%ficado
aún
porque
l a
cl ase
no
se
corresponde
con
un
ente
real .
Como
vi mos
en
el úl %mo
arUcul o
de
L i eberman,
l a
efici enci a
en
espaci o
es
mej or
en
proto%pos
l o
que
faci l i ta
l a
creaci ón
de
obj etos
y
el garbage
col l ec%ng.
El agregado
de
una
caché
gl obal permi te
reduci r
drás%camente
l a
búsqueda
de
métodos
en
l os
obj etos
de
comportami ento
compar%do.
BibliograGía
1. L ynn
Andrea
Stei n,
Henry
L i eberman,
Davi d
Ungar.
The
Treaty
of
Orl ando.
Of
Types
and
Prototypes.
2. L ynn
Andrea
Stei n,
Henry
L i eberman,
Davi d
Ungar.
The
Treaty
of
Orl ando.
A
Shared
Vi ew
of
Shari ng.
3. Davi d
Ungar
y
Randal l B.
Smi th.
Sel f:
The
Power
of
Si mpl i ci ty.
4. Henry
L i eberman.
Usi ng
Prototypi cal Obj ects
to
Impl ement
Shared
Behavi or
i n
Obj ect
Ori ented
Systems.
5. Adel e
Gol dberg
y
Davi d
Robson.
Smal l tal k‐8 0 :
The
L anguage
and
i ts
Impl ementa%on.
Descargar