[Php-objetos] Delirium!
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Vie Feb 13 20:34:10 ART 2009
Hola Juan,
no puedo ni siquiera opinar al respecto.
En tus gráficas mezclás conceptos de Programación Estructurada (PE)
como variable y puntero con conceptos de POO como instancia y
"propiedad" que es un pseudónimo medio confuso para atributo.
Cuando trabajamos con Objetos: Objetos. Cuando trabajamos Estructurado:
Estructurado. Hay que tenerla muy, pero muy clara, para hablar de las
dos cosas a la vez, para hibridar, sin meter la pata hasta el cuadril
con lo que se piensa...
En la clase usé para ilustrar la misma cosa a la luz de diferentes
paradigmas, el caso de el Código Civil: no es lo mismo para el
bibliotecario que para el abogado, pero ambos usen y se refieren a la
misma cosa.
En tu mail es como si el bilbiotecario estuviera dudando de si por el
estante en que está el libro, el artículo 172 inciso B debe
interpretarse Ad Solemnitaten o Ad Probationen (!?!?!?!?!?)
Nos vemos mañana!
Acordate eso de llevar los scripts en .php y en .php.txt para
proyectarlos y verlos entre todos.
El vie, 13-02-2009 a las 19:06 -0200, Juan Marcos escribió:
>
> Mañana te lo voy a mostrar de todas formas, pero hice unos dibujos
> tratando de explicar la situacion:
>
> Los objetos, en su constructor crean un objeto de tipo Combustible,
> para que este pueda tener las propiedades que necesite.
> Si hicieramos:
>
> $auto1 = new Auto();
> $camion1 = new Camion();
>
> representado un poco grotescamente quedaria algo asi:
>
> Imagen A
>
>
> Ahora, si hacemos esto:
>
> $the_nafta = $auto1->getCombustible();
>
> quedaria algo asi:
>
> Imagen B
>
>
> Y por ultimo, asignando
>
> $camion1->setCombustible($the_nafta);
>
> quedaria:
>
> Imagen C
>
>
> (La linea punteada es para representar que deja de apuntar ahi)
>
>
> Es obvio que ésto no tiene que pasar, lo que yo consulto es, si
> deberiamos prever esto mediante la programación (por ejemplo, clonar
> el objeto Combustible antes de devolverlo, para devolver una instancia
> distinta) o está bien hecha la programación del objeto, pero el que
> tiene que tener precauciones para que esto no suceda es el
> programador. Confio en la 2da opción, pero quieria aclarar bien el
> tema por si no se entendía bien que es lo que estaba preguntando.
>
> Preferí hacer los dibujitos porque lo importante es el concepto en
> realidad, no el código en si.
>
> Esto al tener combustible dos propiedades solamente se podria haber
> solucionado con lo que seria en C un "Struct", que es una "variable
> compuesta" por asi decirlo, que simplemente la función la devolvería
> por valor, pero PHP por lo que investigué no tiene esto, y los objetos
> se pasan siempre por referencia.
>
> Bueno, ya no jodo mas! mañana hablaremos del tema a ver si esta bien o
> no jeje, saludos!
>
>
> - Juan Marcos.
>
>
> ---
>
> > From: leonardot en pegasusnet.com.ar
> > To: php-objetos en pato2.fi.mdp.edu.ar
> > Date: Fri, 13 Feb 2009 15:14:07 -0200
> > Subject: Re: [Php-objetos] Consultita Practico 1
> >
> > 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
> >
> > _______________________________________________
> > 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á GRATIS el poder del nuevo Internet Explorer 7. Internet
> Explorer 7
> _______________________________________________
> Php-objetos mailing list
> Php-objetos en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-objetos
--
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