[Php-objetos] Ejercicio1
Gerardo Valiani
gerardovaliani en gmail.com
Lun Feb 9 23:23:01 ART 2009
>> 2.- Combustible, es un objeto? O es una atributo tipo vector que tiene
>> las claves tipo y valor.
>
> Si estamos hablando de vectores, no estamos hablando de Objetos...
> mezclar paradigmas no es sano.
> Sobre este tema puntualmente tratamos la clase que viene.
Yo pensaba hacer un atributo vector y asignarle dos valores.
Ejemplo: $combustible = Array('tipo'=>null, 'valor'=>null); Despues
hacer unos setters para ponerles el valor. Si no es correcto hacer un
atributo que sea de tipo array, entonces combustible tiene que ser
otro objeto. Pero solo tendria dos atributos y ningun metodo. Un
objeto de este tipo no seria muy pobre? Es decir, seria un buen
diseño?
>
>> Porque en un principio lo pense como un
>> objeto y este seria quien calculara el consumo. Tendria el metodo
>> "calcularConsumo" y como parametro recibiria el objeto del cual se
>> desea calcular el consumo, como auto, pickup y camion. Este sabria que
>> calculo hacer segun que tipo de objeto recibe. Pero me parecio un poco
>> enroscado como primer ejercicio. Me pregunte: Leo seria tan malo? Aun
>> no me he respondido. ( ja!, Chascarrillo!! ;-) )
>
> Te enroscaste un poco... a la hora de asignar responsabilidades al
> objeto, al menos a mí no me suena natural que "el combustible" sepa
> calcular cuanto consume un "auto"... más bien el "auto" podría saber
> cuanto "combustible" consume en determinadas condiciones.
A mi tampoco me cerraba mucho. Pero me parecio simil al ejemplo de
alumnos, maestros, alumnoAyudante, donde sacaste "sueldo" y lo
convertiste en un objeto. Me parecio un caso similar.
>
>> 3.- Por otro lado pense que auto perteneceria a una clase como
>> TransportePasajeros y, camion y pickup a otra clase llamada
>> TransporteMateriales. Y estas dos superclases a otra que seria
>> Transporte o, simil. Entonces cuando agregaramos el objeto omnibus lo
>> mandariamos a TransportePasajeros, por ejemplo.
>
> Tiene sentido... pero como te digo más arriba, es adivinar un futuro
> que no sabremos si llegará.
>
>> Pero me encontre en
>> una disyuntiva. Y cuando agregue el transporte tren? Puede tener
>> vagones de pasajeros y de materiales. Entonces me encontre que este
>> objeto tendria herencia multiple. Gane el premio!!!! Encontre un
>> ejemplo de herencia multiple!! Rapido llame a la organizacion para
>> reclamarlo. Lo unico que recibi por encomienda (lo cual me sorprendio
>> la rapidez) fue un asusta suegra y una bolsita de papel picado. Y en
>> eso pense, mirando al infinito: Leo seria tan malo de mentirnos
>> respecto al premio? Aun no me he respondido, again ;-). Hablando en
>> serio, desisti de estas superclases por esta herencia multiple.
>
> Es un buen indicio para desistir... además PHP no lo soporta ;-)
> Lo que te encontraste es que esa jerarquía de clases que proponés, no
> está bien diseñada: no es cierto que si una casa crece, se transformará
> en un edificio... una casa, cuando se agranda, se convierte en una casa
> más grande, y si tenés que hacer un edificio, la demolés y lo construís.
>
> En las clases que proponés, distinguir transportarPersonas de
> transportarMateriales, que es la base de tu "necesidad" de herencia
> múltiple, tiene sentido? qué diferencia en el comportamiento de un
> Objeto de un sistema puede haber por la cosa que transporta?
> A lo sumo el método addCosaTransportable() validará que no se agregue
> leche en un vehículo que no tiene frio, pero como este método ES de ese
> vehículo, sabrá sin problemas si tiene frío o no.
Me cuesta distinguir como diseñar los objetos. Como armarlos. Creo que
mi problema es que trato de solucionar problemas futuros que ni
siquiera se si se van a presentar. Trato de armarlos muy a futuro. Y
claro, armo unos merengues!
He aprendido algo con esta sola clase. Me aclaro mas el panorama, pero
cuando me siento a diseñar. Me surgen las preguntas y la embarro.
El cuadro que esta al final del capitulo 3 me confundio mas de lo que
estaba. Hay objetos que no se me ocurriria nunca armarlos asi. Si me
los muestra cualquiera, pensaria que esta mal diseñado. Pero supongo
que si esta en el manual como ejemplo es porque estan bien. Entonces
eso me hace pensar que no tengo ni idea de como diseñarlos.
Saludos!
Más información sobre la lista de distribución Php-objetos