Ver Mensaje Individual
  #3 (permalink)  
Antiguo 16/09/2010, 16:34
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: metodo abstracto sin implementar ???

Hola GatorV

He intentado lo que me decis...le he quitado el PROTECTED al metodo ABSTRACTO en clases padre e hija y no me funciono!

Sigo con problemas... no logro poder hacer abstracta mi clase !

Código PHP:
<?php
/* 
  metodos: add, reset, setN, setNesimo, caculate, unDo (deshace el ultimo calculo)
*/
abstract Class Media {
  protected 
$n;
  protected 
$arr = array();
  protected 
$arrSize;
  protected 
$calculo   =null;
  protected 
$calculoAux=null// guarda valor anterior

  
protected function __construct ($n){
    
$this->setN($n);
  }
  
  
// usar solo despues... de tener el arreglo "lleno" !!
  
function setNesimo ($val){   
       
$this->arr [($this->n) - 1]=$val;
  }    
  
  function 
unDo (){
       
$this->calculo       $this->calculoAux;
  }
  
  
# private o protected  
  
function saveCalc(){ 
    
$this->calculoAux $this->calculo;
  }  
    
  function 
reset(){    
    unset (
$this->arr);
    
$this->arrSize=0;
    
$this->n=0;    
    
$this->calculoAux=null;
    
$this->calculo   =null;
  }
  
  
// agrega a $rb los elemenos de $this->arr
  
function add_array(array $rb){
    foreach (
$rb as $val){
      
$this->arr[] = $val;
    }    
  }
  
  function 
add($data) {
     
     if (
is_array($data)){
       
$this->add_array ($data);
     }else{
       
$this->arr[] = $data;       
     }    
    
    
$this->arrSize count ($this->arr);
  }
  
  function 
setN($n){
    
$this->$n;
  }
  
  abstract protected function 
caculate(); // debe ser abstracta igual que la clase!!!
  
// fin


Class MediaSimple extends Media {

  function 
__construct ($n){
    
parent::__construct($n);
  }

  private function 
summ(){
    
$res=0;
    for (
$i=0;$i<$this->arrSize;$i++){
      
$res $res $this->arr[$i];
    }
    return 
$res;
  }
    
  protected function 
calculate(){
    
$this->saveCalc;
    
$this->calculo = ($this->summ ($this->arr)/$this->n);
    return (
$this->calculo);  
  }
  
}


Class 
MediaExponencial extends Media {

  function 
__construct ($n){
    if (
$n==null$n=0;  
    
parent::__construct($n);
  }
      
  function 
setEma ($ema){
    
$this->calculo $ema;
  }  
    
    
  protected function 
calculate(){
    
$this->saveCalc();
    
    
$k = (/ ( $this->1)); 
        
    if (
$this->calculo==0)
      
$this->calculo $this->arr[0]; 
    
    for (
$i=0;$i<$this->n;$i++){ 
      
$this->calculo $this->calculo + (($this->arr[$i] - $this->calculo) * $k);      
    }
    
    return (
$this->calculo);  
  }
  
}

?>
__________________
Salu2!