3.1 van functie naar object (oop) - NOT FINISHED!
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.
cijferToevoegen($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
Om de basis van OOP uit te leggen ga ik eerst aan de hand van een voorbeeld met een hond een paar nieuwe begrippen uitleggen. Als we die begrippen dan kennen ga ik in het tweede filmpje uitleggen hoe we het voorbeeld van het gemiddelde kunnen omzetten naar een object waarbij we de functies en de variabelen combineren in één object.
Begrippen
Class, Object, Properties en Methods worden nog een keer duidelijk gemaakt in:
https://slides.com/jamescandan/oop-php-for-beginners-1-2/fullscreen#/5
Dus een class is een sjabloon van een object en met het commando new <class_naam> maken we een nieuw object van de sjabloon. In een class heten de variabelen proeprties en de fucnties heten methods.
Code
Nu gaan we ons gemiddelde in een class zetten.
De code die we in het filmpje uitleggen:
<?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.
Properties (Variabelen) in een object
We kunnen op drie verschillende manieren een variabele definiëren binnen een class: public, private of protected.
Public
Een public variabele in een class kan buiten de class worden gebruikt. Bijvoorbeeld:
class Test {
public $naam;
...
...
}
Nu kan je buiten de class Test de variabele naam gebruiken.
$mijnTest = new Test;
echo $mijnTest->naam;
Private
Een private variabele (zoals in het voorbeeld gebruikt) kan alleen door methods (functies) van de class worden benaderd. Je kunt buiten de class om de variabelen niet gebruiken.
Protected
Wordt later uitgelegd.