[pyar] Consulta de disenio de clases.

Juan Gabardini jgabardini en gmail.com
Vie Feb 25 18:28:12 ART 2011


No están heredando de la misma. No hay herencia en el código que te pasé.

2011/2/25 Gonzalo <gonchi.sanchez en gmail.com>

>
>
> 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.
>



-- 
Juan Gabardini
twitter&skype:jgabardini | http://softwareagil.blogspot.com
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110225/3d9359c4/attachment.html>


More information about the pyar mailing list