[St-ES] Consulta diseño e implementación.

Eduardo Ferro Aldama eduardo.ferro at hispalinux.es
Thu Aug 25 22:21:07 MDT 2005


Buenos dias.

Queria exponerles un poco de diseño que hice ayer y que no tengo claro
si en el entorno Smalltalk tiene sentido. El caso es que pretendo tener
ciertas clases de negocio, que derivan de Entidad y que representan
entidades del sistema (en este caso pueden ser proveedores, clientes,
almacenes, etc...) Se me ocurrio que podian ser las clases las que
almacenasen las entidades que estan dadas en el sistema y que me
permitirian recuperarlas usando un identificador (Id).... Para ello y
viendo que queria el mismo comportamiento en todas cree la clase Entidad
y le añadi un método para que dado un id construyese un nuevo objeto y
lo añadiese al registro de objetos.... Así mismo la idea es crar métodos
para la baja, la consulta de si existe y la recuperación de uno a partir
del id.
EL tener la creación y el acceso encapsulado también creo que me
permitiría poder evolucionar la persistencia y la inicialización (se
podrían crear proxys en vez de los objetos reales, o tener un método
para dar persistencia a todas las entidades....)

El caso es que el código del padre crea objetos de la entidad hija tal y
como se puede ver en el siguiente código de la clase Entidad:

-------------------------------
Entidad class>> nuevoConId: unId
	| entidad |
	registroEntidades ifNil: [registroEntidades := Dictionary new].
	(registroEntidades includesKey: unId) ifTrue: [ self error: 'Ya existe
la entidad'].
	
	entidad := self new.
	entidad id: unId.

	registroEntidades at: unId put: entidad.
	^ entidad
--------------------------------

El caso es que no se si lo que estoy haciendo tiene sentido en
smalltalk, si existen patrones para mantener los objetos de negocio en
un único registro, si tiene más sentido crear los objetos alli donde se
necesiten sin tener que registrarlos, etc. También me suena raro que un
padre realice la creación de objetos del hijo, hay que tener en cuenta
que esto (self new, realizado en el padre) se puede hacer en smalltalk,
pero no en los lenguajes LOO que he solido usar, por lo que me parece un
poco raro...

Comentarios sobre el diseño?
Ideas de mejora?
Cuál es el smalltalk way?


Gracias de antemano
	
	
-- 
Hasta otra!
  Eduardo Ferro Aldama        http://personales.ya.com/eferro
  eduardo.ferro en hispalinux.es
  eferro en inicia.es




More information about the Smalltalk mailing list