[Php-objetos] Ejercicio1

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Mar Feb 10 03:02:23 ART 2009


Hola Gerardo,

El lun, 09-02-2009 a las 22:23 -0300, Gerardo Valiani escribió:
> >> 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.

	Bueno, pero tendrías que pensar el vector como a un objeto con una
semántica particular, y además limitar los setter y getters para que no
se pueda agregar más de un elemento al vector, ya que no tiene sentido
que un auto funcione con 2 combustibles a la vez... llegados a este
punto también podrías haber pensado esto como dos atributos, uno string,
y el otro decimal.

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

	Este sería el camino más "purista", y te ahorra los problemas que
menciono arriba.

>  Pero solo tendria dos atributos y ningun metodo.

	Bueno, al menos tendría 2 setter y 2 getter...

>  Un objeto de este tipo no seria muy pobre? Es decir, seria un buen
> diseño?

	Si mirás el objeto combustible solo, es una porquería de diseño, pero
si lo mirás como una parte del vehículo que lo incluye, la cosa se pone
más interesante, no?
	No pierdas de vista que estás diseñando el "auto".

	Una casa puede tener un muy buen diseño, y al verla, nadie pensaría en
la simpleza del ladrillo. A veces un buen diseño, un diseño genial,
combina de forma simple y elegante un montón de partes básicas.

	De cualquiera de las 2 formas estaría bien: si el programa funciona, el
diseño no es "malo". Veremos durante el curso como hacer mejores
diseños.

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

	Efectivamente, es un caso similar.

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

	Sí, pasa incluso después de años... hay que aprender a concentrarse en
el problema, y lo demás dejarlo para futuras refactorizaciones de
código.

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

	Es lógico! A no desanimarse!

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

	Todo diseño es criticable y muchas veces mejorables. Respecto al
ejemplo, es uno de los diseños más simples que resuelven ese problema.
Eso lo hace valioso para el apunte. Por otra parte, me imagino la
impaciencia, pero "no quemes etapas". 
	Vas a ver que ahora harás un buen modelo (porque funcionará) y yo y los
demás diremos que está bueno, pero en un par de meses lo vas a mirar y
querer tirar a la basura. Es lo normal y lo esperado, porque al
atravesar la experiencia de hacer el curso, te perspectiva va a cambiar,
pero sin hacer estas cosas no hay como atravesar el proceso del
aprendizaje.

	Nos vemos!

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