[Php-objetos] Ping Pong jeje

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Lun Feb 16 23:33:28 ART 2009


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



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