[Php-objetos] Calculo de consumo

Gonzalo Rama yo en erama.com
Sab Feb 14 10:02:16 ART 2009


bueno.. ahi lo modifique hice esta:
//Ejercicio Nº1 POO

class  Auto extends Rodado{
    function __construct($Plasas=2){
        $this->Plasas=$Plasas;
        $this->Combustible= new Combustible();
       
    }
   
    function calularConsumo(){
        return ($this->getConsumoKm() * $this->Combustible->getValor());
    }
}

$auto = new Auto;
$auto->setCantRuedas(5);
echo 'Tengo un ejemplar de '.$auto->getCantRuedas().' ruedas que 
funciona a '.$auto->Combustible->getTipo().'<br>';
echo 'La chata me consume:'. $auto->calularConsumo(). "<br>\n"

y para el resto los mismo agregandole sus atribitos.:

----------------------------------
class  Pickup extends Rodado{
    function __construct($KgCarga=2000){
        $this->KgCarga=$KgCarga;
        $this->Combustible= new Combustible();       
    }
    // Hola Seters! del Obj-eters
    function setKgCarga($KgCarga){
        if(is_numeric($KgCarga)){
            $this->KgCarga=$KgCarga;
        }else{
            return false;
        }
    }
   
    //Vamos con los Geters
    function getKgCarga(){
        return $this->KgCarga;
    }
   
    function calularConsumo(){
        return ($this->getConsumoKm() * $this->Combustible->getValor() * 
($this->getKgCarga()/1500));
    }
}
----------------------------------------------------------------------------------------




-------- Mensaje original --------
> Hola Gonzalo,
>
> El vie, 13-02-2009 a las 18:01 -0800, yo en erama.com escribió:
>   
>> Buenas, para el calculo de consumo intente usar polimorfismo, lo que no si
>> es correcto... Hice lo sig:
>> dentro de la subclase auto:
>> class Auto extends Rodados{
>> ...
>> ...
>> function calcularConsumo(){
>> return ($this->getConsumoPorKm() * $this->combus->getCombustibleValor());
>> 	}
>> ...
>> ...
>> }
>>
>> class Consumo{
>>    function calcular($obj) {
>>       return $obj->calcularConsumo();
>>    }
>> }
>>
>> $auto=new Auto();
>> $consumo=new Consumo();
>> print "calculador: ".$consumo->calcular($auto)."<br>";
>>
>>
>> luego para la clase camión es similar agregando los kg..
>>     
>
> 	Esto no es polimorfismo... como Auto y Camión son de la misma clase, es
> natural que respondan a los mismos métodos de igual manera.
>
> 	Polimorfismo es cuando métodos se llaman igual en _distintas_  clases.
>
> 	Lo que no entiendo en tu diseño es la clase "Consumo". Tendría sentido
> una clase así si supiera calcular el consumo de varios objetos de
> distintas clases, pero así como está es muuuuy rara y posiblemente
> incorrecta en su implementación.
>
> 	Por otra parte un objeto llamado "consumo", no es natural que tenga un
> método llamado "calcular". Qué clase de comportamiento tendría un objeto
> "consumo"???
>
> 	Los nombres son importantes!
>   




Más información sobre la lista de distribución Php-objetos