[Php-objetos] Andrés Re: Envio Ejercicio 1
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Lun Feb 23 21:04:54 ARST 2009
Hola Andrés,
El lun, 23-02-2009 a las 14:16 -0200, Andres Manuel escribió:
> Aqui el ejercicio numero uno, tarde pero seguro, BETA por las dudas, jajaja
Está bastante bien hecho.
Una corrección y dos observaciones:
Corrección: hacés
$auto=new Auto('Gasoil',1.88,3,8,66);
$auto->combustible->setTipo('gassss');
$auto->combustible->setValor(12.44);
Lo que significa que para el constructor de Auto, pasás valores del
Combustible en el mensaje, pero después permitís usar el objeto
Combustible directamente.
O una cosa, o la otra, las dos no, porque el código queda incoherente.
O repetís la interfaz del Combustible como métodos propios del Auto para
definirlo y ponerle un valor, o le pasás al constructor un objeto
Combustible.
(la segunda opción es más corta de escribir y más entretenida de
usar...)
Observación: tenés en varios métodos cosa de la forma
if (is_int($valor)){
$this->plazas=$valor;
}else{
throw new Exception("El valor de plazas debe ser de tipo entero.");
y lo mismo para los string.
Lo que me preocupa es que sigas adelante pensando que la idea de
preguntar IF (get_class() == Pirulo) para saber si lo que recibís es de
una clase dada. Necesitar hacer esta pregunta siempre es por un error de
diseño.
Además, tu código permite para la pickup y el camión que
calcularConsumo() funcione mal sin que se generen esa excepciones....
La otra observación es que en auto tu implementación de
calcularConsumo() es:
function calcularConsumo(){
return parent::calcularConsumo();
}
su la clase Auto no tuviera un calcularConsumo() todo funciona igual.
Entendés por qué? Qué razón tenés para escribir esa implementación?
Seguimos!
PD: no dejes que Gonzalo se copie! El es capaz, solo tiene que ponerse
con ganas y dedicarle unas horas.
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
Pegasus Tech Supply
Tel: (+54)(+223) 471-2880
La Salle 1131 - Mar del Plata - Argentina
http://www.pegasusnet.com.ar / http://blog.pegasusnet.com.ar
http://www.prometeustech.com.ar / http://www.grupopegasus.com
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-objetos