[Php-objetos] Ejercicio1
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Lun Feb 9 21:46:57 ART 2009
Hola Gerardo!
El lun, 09-02-2009 a las 19:41 -0300, Gerardo Valiani escribió:
> Che, LOCO!
>
> 1.- El ejercicio 1 lo hacemos estrictamente segun el enunciado? o,
> vamos mas alla previendo que mañana agregamos otros objetos como
> avion, tren, monopatin, etc...
Nunca es una idea demasiado buena, prever extensiones que no sabremos
si se implementarán o no, porque insumen un tiempo que excede al
proyecto en sí.
Esta forma de pensar vale para 2 o 3 circunstancias concretas: acordate
de decirme el Sábado y se las cuento, porque para mail es largo.
Supongo que tu pregunta apunta a ver hasta dónde armás una jerarquía de
clases, pero fijate que el enunciado nombra específicamente "cosas en
común", lo que para este enunciado, ahorraría trabajo hacer alguna
generalización.
> 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.
> 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.
> 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.
> Saludos!!
=mente!
--
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