data = $data; } public function set_data($data){ $this->data = $data; } public function get_data($data){ return $this->data; } abstract public function calc_stats() :double; } class Mean extends Operation { public function calc_stats():double{ $avg_value=0; foreach ($this->data as $array_elem){ $avg_value+=$array_elem; } $avg_value/=count($this->data); echo $avg_value; } } class Dispersion extends Operation { public function calc_stats():double{ $avg_value=0; foreach ($this->data as $array_elem){ $avg_value+=$array_elem; } $avg_value/=count($this->data); $disp_value=0; foreach ($this->data as $array_elem){ $disp_value+=($array_elem-$avg_value)**2; } $disp_value/=count($this->data); echo $disp_value; } } class Median extends Operation { public function calc_stats():double{ $sorted_arr=$this->data; sort($sorted_arr); if(count($sorted_arr)%2==1){ echo $sorted_arr[floor(count($sorted_arr)/2)]; } else{ echo ($sorted_arr[count($sorted_arr)/2]+$sorted_arr[count($sorted_arr)/2-1])/2; } } } $data_array=array(1,5,4,2,3,6); $new_op1=new Median($data_array); $new_op1->calc_stats(); ?>