[Php-objetos] Ping Pong jeje

Juan Marcos malditared en hotmail.com
Mar Feb 17 11:39:51 ART 2009


Hola Leo

> > Otra cosa: Cuando vos decis "podés también usar la interfaz del Objeto
> > Combustible y sus propios setters y getters", me podrias explicar
> > como? porque me perdí en el párrafo.
> 
> 	así: $auto->Combustible->setValor(4);


En ese caso para poder realizar eso, tendria que dejar la propiedad combustible del vehículo como Publico.


> 	Ok. Para este caso puntual, querés decir que si el Combustible cambia,
> los Vehículos cambien lo menos posible.
> 	En este caso, para que el cambio sea menor, no repliques el protocolo
> del Objeto Componente en el que lo Contiene, sino que usá la interfaz
> del propio Objeto.
> 	Es la forma en que menos código relativo al Combustible vas a tener...
Esto hasta donde entiendo yo, es pasarle por ejemplo a setCombustible() el objeto combustible, y que éste se haya creado afuera. Para mi esta es la mejor práctica, pero por lo que entendí cuando hablamos, esto se parecía más a una práctica de Agregación en lugar de composición, me cuesta darme cuenta cual es la diferencia en la práctica.

entonces vamos de vuelta, si puedo pasar y devolver el objeto combustible, uso setCombustible() y getCombustible() como lo hice originalmente en la ultima entrega, y que es lo que tengo que hacer para que sea finalmente por agregación mi implementación? tengo que hacer el new dentro del constructor de vehículo?


Espero poder entenderlo de una vez asi lo termino jeje, un abrazo!


- Juan Marcos.





> From: leonardot en pegasusnet.com.ar
> To: php-objetos en pato2.fi.mdp.edu.ar
> Date: Mon, 16 Feb 2009 23:33:28 -0200
> Subject: Re: [Php-objetos] Ping Pong jeje
> 
> Hola Juan,
> 
> El lun, 16-02-2009 a las 23:03 -0200, Juan Marcos escribió:
> > Querido Leo:
> >  
> > > Querido Juan: contame como harías para usar el Combustible y
> > depender
> > > menos del Objeto (?)
> > > O para depender más... algo que me de una pista sobre lo que estás
> > > pensando.
> > 
> > Tengo que cuidar un poco mas las palabras, porque a veces las tiro
> > pensando en un significado y por ahi mezclo cosas que no tienen nada
> > que ver.
> 
> 	Es lo que tiene la palabra escrita: el significado es más bien el
> literal.
> 	Sin embargo en tu caso, esta es una gimnasia que siempre pensé que te
> haría bien.
> 
> >  Lo que quiero decir de depender del objeto está mal expresado, me
> > refiero a que trataria de hacer todo de forma que haya que modificar
> > la menor cantidad de código posible en el caso que se modifique un
> > objeto.
> 
> 	Ok. Para este caso puntual, querés decir que si el Combustible cambia,
> los Vehículos cambien lo menos posible.
> 	En este caso, para que el cambio sea menor, no repliques el protocolo
> del Objeto Componente en el que lo Contiene, sino que usá la interfaz
> del propio Objeto.
> 	Es la forma en que menos código relativo al Combustible vas a tener...
> 
> > Bueno, para definir el tema de la desambiguación entre composición y
> > agregación,
> 
> 	Acá me perdí por completo: dónde estaban ambiguas??? Cual es la
> ambigüedad a la que te referís?
> 
> >  si pudiese elegir usaría composición.
> 
> 	Ok. Seguimos por el camino de la composición entonces.
> 
> >  Ahora, que deberia hacer para que sea bien definido de composicion?
> > el setCombustible() lo haria de forma:
> >  
> > public function setCombustible($combustible) {
> >   $this->combustible->setTipo($combustible->getTipo());
> >   $this->combustible->setValor($combustible->getValor());
> >   return true;
> > }
> 
> 	Puede ser, pero estás replicando la interfaz, así que tenés una
> dependencia de esa que mencionás más arriba que podrías evitarte.
> 
> > y como en el constructor usa éste mismo método para asignar el
> > combustible en el constructor, ambos estarían bien. Ahora, para el
> > get, ¿como devuelvo el combustible? 
> 
> 	errr.... return $this->Combustible;
> 	Qué más? Por qué más?
> 
> > Si paso un objeto de tipo Combustible para setearlo, deberia devolver
> > uno al "getearlo", el tema es como vos me comentaste, que el getter si
> > lo hago de forma:
> >  
> > public function getCombustible() {
> >   $temp->new Combustible($this->combustible->getTipo(),
> >   $this->combustible->getValor());
> >   return $temp;
> > }
> >  
> > estaría creando un objeto cáda vez que consulto el combustible, pero
> > si devuelvo el objeto mismo,
> >  corro el riesgo de que se modifique fuera del objeto. ¡¡¡¿¿¿que
> > hago???!!!
> 
> 	Sí, este código crea un Objeto Combustible a cada getter, lo cual es
> incorrecto a todas luces.
> 	No sé si tiene sentido ahorrar en el riesgo al que te referís, porque
> el código no tiene mucho sentido...
>   
> > Otra cosa: Cuando vos decis "podés también usar la interfaz del Objeto
> > Combustible y sus propios setters y getters", me podrias explicar
> > como? porque me perdí en el párrafo.
> 
> 	así: $auto->Combustible->setValor(4);
>  
> > Nos estamos respondiendo, saludos!
> 
> 	Seguimos!
> -- 
> Leonardo Tadei
> leonardot en pegasusnet.com.ar
> http://blog.pegasusnet.com.ar
> Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
> 
> _______________________________________________
> Php-objetos mailing list
> Php-objetos en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-objetos

_________________________________________________________________
Ingresá ya a MSN Deportes y enterate de las últimas novedades del mundo deportivo.
http://msn.foxsports.com/fslasc/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://www3.fi.mdp.edu.ar/cgi-bin/mailman/private/php-objetos/attachments/20090217/382c7dc5/attachment-0001.htm 


Más información sobre la lista de distribución Php-objetos