[Php-objetos] Ping Pong jeje

Juan Marcos malditared en hotmail.com
Lun Feb 16 23:03:11 ART 2009


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

 

Bueno, para definir el tema de la desambiguación entre composición y agregación, si pudiese elegir usaría composición. 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;
}



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

 

 

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.

 

 

Nos estamos respondiendo, saludos!

 

 

- Juan Marcos.

 

---

 

 


> From: leonardot en pegasusnet.com.ar
> To: php-objetos en pato2.fi.mdp.edu.ar
> Date: Mon, 16 Feb 2009 22:17:26 -0200
> Subject: Re: [Php-objetos] Ping Pong jeje
> 
> 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
> 
> _______________________________________________
> Php-objetos mailing list
> Php-objetos en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-objetos

_________________________________________________________________
Descargá ya gratis y viví la experiencia Windows Live.
http://www.descubrewindowslive.com/latam/index.html
------------ 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/20090216/be52c747/attachment-0001.htm 


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