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 = $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 = (2 / ( $this->n + 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);
}
}
?>