[Php-objetos] Ping Pong jeje

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Lun Feb 16 22:17:26 ART 2009


Hola Juan,

El lun, 16-02-2009 a las 20:28 -0200, Juan Marcos escribió:
> 
> Hola Leo.
> 
> 
> > La solución a esto es facilícima: en vez de pasar al constructor
> > valores del Objeto Componente, directamente pasás una instancia del
> > Objeto y listo!
> 
> Claro, eso es exactamente lo que hice! Sin embargo me lo marcaste como
> que no es el caso porque se mezcla la Agregación con la Composición.

	Te marqué que vos estás mezclando composición con agregación. Según tu
comentario, decidís usar composición; tu código sigue siendo una
agregación.

	Contame lo que vas a hacer otra vez... porque primero era agregación,
pero en tu segunda entrega era composición.
	Temo a esta altura que hayas cambiado de opinión de vuelta, y que
estemos hablando de cosas distintas :(

> > Con la implementación que me mandaste, no hay cómo hacer que
> > getCombustible() no haga lo que hace... me parece que seguís mareado
> con
> > composición/agregación.
> 
> 
> Lo que quiero consultar es si tengo que cambiar el getCombustible() y
> setCombustible(), es decir, si asi como está no es como debería. ¿Debo
> hacer que el setCombustible() tome como parámetro un objeto y éste lo
> use para obtener los valores a setear del combustible? por ejemplo:
> 
> class Vehiculo {
>     ...    
>     public function setCombustible($combustible) {
>         $this->combustible->setTipo($combustible->getTipo());
>         $this->combustible->setValor($combustible->getValor());
>         return true;
>     }
> 
>     public function getCombustible() {
>         $temp->new Combustible($this->combustible->getTipo(),
> $this->combustible->getValor());
>         return $temp;
>     }
> 
>     ...
> } // class Vehiculo

	Podés hacerlo así, o podés también usar la interfaz del Objeto
Combustible y sus propios setters y getters.
	Este punto es cuestión de gustos.
	Sin embargo tu implementación del getCombustible() no tiene mucho
sentido, porque estás creando un Combustible nuevo a cada uso.

> Si lo hacemos de este modo los setters y los getters no
> devolverían/insertarían en sí el objeto y el combustible quedaría
> "aislado" dentro de Vehículo. ¿Es así como se deberia hacer?

	Depende de que el caso sea composición, agregación u asociación.
	No hay una regla general para esto.

>  Esto haria como digo yo que Vehículo dependa aún más de Combustible,
> pero si esta es la forma en que se resuelve el ejercicio, lo hago asi.

	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.


	Como siempre en los sistemas, hay varias formas de hacer bien lo mismo.


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