[pyar] Consulta de disenio de clases.

Gonzalo gonchi.sanchez en gmail.com
Vie Feb 25 18:21:51 ART 2011


El 25 de febrero de 2011 17:58, Juan Gabardini <jgabardini en gmail.com>escribió:

> hola
> Las clases parecen muy acopladas, y en tu último ejemplo, parece que A no
> necesita conocer a B para nada.
> Quizás puedas comentar que querés resolver y podríamos tirar ideas para
> diseños alternativos.
> una forma alternativa (de lo que entendí inicialmente) sería
>
>
La idea (como dije antes) es aplicar algo de GRASP y mantener un bajo
acoplamiento, por eso puse la sugerencia de utilizar Singleton.


> class Config:
>     def __init__(self, par1, par2):
>         self.par1=par1
>         self.par2=par2
>
>     def parametros(self):
>         return self.par1, self.par2
>
> class ClaseA:
>     def __init__(self, conf):
>         self.conf= conf
>
>     def metodoA(self):
>         par1, par2 = self.conf.parametros()
>         print("los parametros en A son: %d, %d") %(par1, par2)
>
>
> class ClaseB:
>     def __init__(self, conf):
>         self.conf= conf
>
>     def metodoB(self):
>        par1, par2 = self.conf.parametros()
>        print("los parametros en B son: %d, %d") %(par1, par2)
>
> if __name__ == '__main__':
>     config= Config(1,2)
>     objetoA = ClaseA(config)
>     objetoB = ClaseB(config)
>     objetoA.metodoA()
>     objetoB.metodoB()
>
>
> Puede ser, lo dejo como alternativa, pero por el momento quiero evitar que
ambas clases hereden de una misma... Cuestiones de diseño nomas! ;)
Gracias por tu tiempo.

slds,


>
> 2011/2/25 Gonzalo <gonchi.sanchez en gmail.com>
>
> Al final no era tan complicado, algo basico. Gracias EHB, lo resolvi de la
>> siguiente manera (seguro se puede hacer mejor y mas bonito):
>>
>> class ClaseA(object):
>>     def setInstanciaB(self, objeto):
>>         self.instanciaB = objeto
>>     def setFancyMsg(self, msg):
>>         self.fancymsg = msg
>>     def hitme(self):
>>         print self.fancymsg
>>         return
>>
>> class ClaseB(object):
>>     def setInstanciaA(self, objeto):
>>         self.instanciaA = objeto
>>         return
>>     def pasarFancyMsgA(self):
>>         self.instanciaA.setFancyMsg("Hola Tarolas!")
>>         return
>>     def hacerAlgo(self):
>>         print "Calling home..."
>>         self.instanciaA.hitme()
>>         print "Done!"
>>         return
>>     def run(self):
>>         self.pasarFancyMsgA()
>>         self.hacerAlgo()
>>         return
>>
>> def main():
>>     objetoA = ClaseA()
>>     objetoB = ClaseB()
>>     objetoA.setInstanciaB(objetoB)
>>     objetoB.setInstanciaA(objetoA)
>>     objetoB.run()
>>
>> Gracias nuevamente.
>>
>> slds,
>>
>> El 25 de febrero de 2011 17:31, Gonzalo <gonchi.sanchez en gmail.com>escribió:
>>
>> Perdon nicolas, explique que no tengo enie en este teclado! ;)
>>>
>>> EHB gracias, algo asi...
>>> A los demas, por si no quedo muy clara la idea seria hacer algo como:
>>>
>>> class ClaseA:
>>>    def metodoA(par1, par2):
>>>        print("los parametros en A son: %d, %d") %(par1, par2)
>>>
>>>    def pasarParametros():
>>>        miReferenciaObjetoB.metodoB(par1, par2)
>>>
>>> class ClaseB:
>>>    def metodoB(par1, par2):
>>>        print("los parametros en B son: %d, %d") %(par1, par2)
>>>
>>>    def pasarParametros():
>>>        miReferenciaObjetoA.metodoA(par1, par2)
>>>
>>> def main:
>>>    objetoA = ClaseA()
>>>    objetoB = ClaseB()
>>>
>>>
>>> Evidentemente para que el objetoA tenga una referencia al objetoB,
>>> deberia llamar a una funcion o un objeto "mas alto" jerarquicamente, del
>>> cual poder obtener la referencia al objeto necesario... Pregunte lo del
>>> singleton porque esto una vez lo hcie en java aplicando singleton; tenia una
>>> especie de objeto "Dios", encargado de crear los demas objetos, y cada vez
>>> que desde un objeto "hijo" necesitaba pasar referencia a otro, lo hacia
>>> llamando a un "Dios.getObjetoX.pasarParametro(x,y,z)"... Que es masomenos lo
>>> que necesito aca...
>>> Podria hacerse por ejemplo con variables globales? Es decir, en mi main,
>>> objetoA y objetoB son globales, tales que se pueden llamar de cualquier
>>> clase (esto no lo probe todavia), igual esto seria medio como una fantochada
>>> porque estaria mezclando temas de distintos paradigmas, que es lo que no
>>> quiero  hacer...
>>> Muy probablemente tengo un error de conceptos, pero necesito un tip que
>>> me haga avivarme!
>>> Muchas gracias.
>>>
>>> slds,
>>>
>>> 2011/2/25 nicolás rosbaco <antiyanki en gmail.com>:
>>>
>>> > diseÑÑÑÑo
>>> >
>>> > El 25 de febrero de 2011 13:02, Gonzalo <gonchi.sanchez en gmail.com>
>>> escribió:
>>> >>
>>> >> Hola gente, como les va? Hoy tengo una consulta sobre el disenio del
>>> >> esquema de clases de mi programa, paso a explicar:
>>> >> Tengo una ClaseA, y una ClaseB dentro de un mismo file. Tambien una
>>> >> funcion main que crea un objetoA y un objetoB (de clases A y B
>>> >> respectivamente). Ahora bien, necesito llamar desde el objetoB a un
>>> >> metodo de objetoA, es decir, que el objetoA realice un metodo con
>>> >> argumentos que el objetoB conoce.
>>> >> La unica forma de hacerlo es aplicando un patron de disenio? (ejemplo
>>> >> singleton) Si es asi, alguna forma "comoda y linda" para hacerlo?
>>> >> busque pero las veo demasiado complicadas para mis vagos conocimientos
>>> >> de python.
>>> >> Quizas sea muy basico lo que estoy preguntando, es que hace poquito
>>> >> que migre "en serio" a python, antes hice scripts para nada
>>> >> complicados y no en objetos.
>>> >> Bueno, espero no molestarlos, muchas gracias de antemano!
>>> >>
>>> >> slds,
>>> >>
>>> >> PD: Perdon por la ortografia, tengo un teclado ingles... :P
>>> >>
>>> >> --
>>> >> Gonzalo.
>>> >> _______________________________________________
>>> >> pyar mailing list pyar en python.org.ar
>>> >> http://listas.python.org.ar/listinfo/pyar
>>> >>
>>> >> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>> >
>>> >
>>> >
>>> > --
>>> > "En un país colonial las oligarquías son las dueñas de los
>>> diccionarios"
>>> > (John William Cooke)
>>> >
>>> > _______________________________________________
>>> > pyar mailing list pyar en python.org.ar
>>> > http://listas.python.org.ar/listinfo/pyar
>>> >
>>> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>> >
>>>
>>>
>>>
>>> --
>>> Gonzalo.
>>>
>>>
>>
>>
>> --
>> Gonzalo.
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>
>
>
> --
> Juan Gabardini
> twitter&skype:jgabardini | http://softwareagil.blogspot.com
>
>


-- 
Gonzalo.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110225/2ed7581b/attachment.html>


More information about the pyar mailing list