[Php-objetos] Consultita Practico 1
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Vie Feb 13 15:14:07 ART 2009
Hola Juan,
creo que entiendo tu dilema.
Para dilucidarlo falta ver en dónde hacés los new de cada objeto. Con
esta porción de código no se aclara.
Como planteás que si cambiás el combustible de un vehículo, pareciera
que hacés en new afuera de la clase, y por eso los cambios en uno
afectan al otro.
Si es así, no tiene sentido, porque cada vehículo debe tener su tipo de
combustible, y no compartirlo con el planeta. Por otra parte y como
indicio, si la cosa se pone muy complicada hasta llegar al extremo de
necesitar clonar un objeto... tal vez el modelo no sea el adecuado para
resolver el problema.
Tal y como descubriste, tu implementación hace que sea el MISMO
combustible, lo cual no es el caso para este problema.,,,
Espero haberte guiado un poco!
El vie, 13-02-2009 a las 11:54 -0200, Juan Marcos escribió:
> Jeje si me tomaran una evaluación con el enunciado del ejercicio yo
> seria uno de esos que no paran de preguntar, y que al final te dicen
> "el enunciado es asi, hacé lo que te parezca" jeje... Bueno, aca va mi
> preguntita:
>
> Estoy haciendo el ejercicio de forma que en los vehículos, el
> combustible es un objeto que se ingresa y se obtiene mediante un
> $auto->setCombustible($fuel) y $fuel = $auto->getCombustible()
> Funciona, hermoso, todo barbaro, ahora, mi consulta es: que se "debe"
> devolver y/o ingresar, el objeto referenciado o un nuevo objeto?
>
> Por ejemplo:
>
> Supongamos que tenemos $auto1 y $camion1, y quiero tomar el
> combustible del auto y setear el mismo en el camión, entonces hago:
>
> si mi codigo de set y put (simplificado y sin las excepciones) fuese:
>
> function putCombustible($combustible) {
> $this->combustible = $combustible;
> }
>
> function getCombustible() {
> return $this->combustible;
> }
>
> y en la implementación yo use:
>
> $the_nafta = $auto1->getCombustible();
> $camion1->setCombustible($the_nafta);
>
> con esto bien tendriamos el mismo combustible en los 2 pero... seria
> EL MISMO COMBSTIBLE!, es decir que si yo modifico combustible en
> $auto1, como el objeto combustible es el mismo esto haria que el
> camión tambien se modifique. Evidentemente es un error, y mi pregunta
> es:
>
> ¿debo devolver una instancia nueva del objeto? (una copia) ¿o dejo que
> el programador sea el que tenga esto en cuenta? y que por ejemplo use
> algo asi como:
>
> $the_nafta = clone $auto1->getCombustible();
> y ahi si:
> $camion1->setCombustible($the_nafta);
>
>
> Como dicen: No hay preguntas tontas, solo tontos (como yo ) que
> preguntan...
>
> Saludos!
>
>
> - Juan Marcos.
--
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