[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