Skip to main content

3.1 van functie naar object (oop)

In deze les gaan we leren wat een global variabele is en we gaan een functie maken waarbij we gebruik gaan maken van global variabelen. In sommige gevallen kan dat functioneel zijn. Zeker bij grotere programma's heeft het gebruik van global variabele nadelen en leidt snel tot fouten. Hoe we dit probleem oplossen is met object oriented programmeren en we gaan onze eerste stukje OOP maken. 

Functies en globale variabelen

In het volgende filmpje wordt een functie gemaakt en wordt een voorbeeld gegeven van het gebruik van globale variabele in een functie.

In de video wordt de onderstaande besproken. We gaan deze code aanpassen.

<?php

global $som;
global $aantal;

$som=0;
$aantal=0;

function berekenGemiddelde($cijfer){
  global $som, $aantal;
  $som=$som+$cijfer;
  $aantal++;
  $gemiddelde=$som/$aantal;
  return($gemiddelde);
}

echo "Gemiddelde: ".berekenGemiddelde(6)."<br>";
echo "Gemiddelde: ".berekenGemiddelde(7)."<br>";
echo "Gemiddelde: ".berekenGemiddelde(8)."<br>";

?>

Opgave 1

De functie berekenGemmidelde($cijfer), moet worden gesplits in twee nieuwe functies.

cijferToeveogen($cijfer), met deze functie voegen we cijfer toe.

gemiddeldeBerekenen(), met deze functie wordt het gemiddelde berekend

Met deze twee nieuwe functies moet het gemiddelde cijfer worden berekend van alle cijfers uit het volgende array.

$cijfersPHP=[5,5,6,5,7,6,7,5,8,7,8,6];

Gebruik een for-loop en voeg elke cijfer uit het array toe aan de lijst van gemiddelden met de functie cijferToevoegen($cijfer).

Als alle cijfers zijn toegevoegd, druk je het gemiddelde af met de functie gemiddeldeBerekenen().

OOP

Filmpje

 

<?php

class MijnGemiddelde {
  private $som;
  private $aantal;

  public function __construct() {
    $this->reset();
  }

  public function addNumber($number) {
    $this->som=$this->som+$number;
    $this->aantal++;
  }

  public function reset() {
    $this->som=0;
    $this->aantal=0;
  }

  public function gemiddelde() {
    if ($this->aantal) {
      return($this->som/$this->aantal);
    } else {
      return(0);
    }
  }

}

$gemiddeldePHP = new MijnGemiddelde;
$gemiddeldeJava = new MijnGemiddelde;

$gemiddeldePHP->addNumber(8);
$gemiddeldePHP->addNumber(6);
echo "Gemiddelde PHP: ".$gemiddeldePHP->gemiddelde();

echo "<hr>";

$gemiddeldeJava->addNumber(5);
$gemiddeldeJava->addNumber(7);
echo "Gemiddelde Java: ".$gemiddeldeJava->gemiddelde();

echo "<hr>";

$gemiddeldeJava->reset();
echo "Gemiddelde Java: ".$gemiddeldeJava->gemiddelde();

?>

Opdracht 2

Voeg aan de class MijnGemiddelde een method toe waarmee je cijfers kunt toevoegen die 2x meetellen.