Tutorials
Het Princiepe OOP
Leer wat het princiepe is van OOP in PHP
Pagina 1
Voorwoord
Na aanleiding van Sebastiaan zijn tutorial wil ik graag een uitbreiding hier op schrijven. Dit omdat in zijn tutorial eigenlijk alleen de syntax behandeld wordt en het hele princiepe van OOP niet wordt uitgelegd.
OOP, staat zoals sommige al waarschijnlijk weten voor: Object Orientated Programming. en OO staat voor Object Orientated.
In deze tutorial behandel ik OOP in PHP4, omdat de meeste servers hier nog op draaien, en PHP5 OOP veel verder gaat.
OOP, staat zoals sommige al waarschijnlijk weten voor: Object Orientated Programming. en OO staat voor Object Orientated.
In deze tutorial behandel ik OOP in PHP4, omdat de meeste servers hier nog op draaien, en PHP5 OOP veel verder gaat.
Pagina 2
OOP, Waarom?
OOP, is een manier hoe je je applicaties ontwikkeld. OOP brengt vele voordelen met zich mee, alle voordelen hier in een lijstje:
- OOP is zeer overzichtelijk (mits je het goed inplementeerd)
- Je code is voor veel dingen (en als het goed is) met geen aanpassingen in elke applicatie te gebruiken (hergebruik van je code dus)
- Je kunt blokken code afzonderlijk van elkaar testen
- Je ontwikkeld in hogere snelheden
- Dynamisch programmeren
- Veel objecten door anderen gemaakt, op internet te vinden en zonder aanpassingen te gebruiken
- in PHP5 uitgebreide mogelijkheden
- OOP is zeer overzichtelijk (mits je het goed inplementeerd)
- Je code is voor veel dingen (en als het goed is) met geen aanpassingen in elke applicatie te gebruiken (hergebruik van je code dus)
- Je kunt blokken code afzonderlijk van elkaar testen
- Je ontwikkeld in hogere snelheden
- Dynamisch programmeren
- Veel objecten door anderen gemaakt, op internet te vinden en zonder aanpassingen te gebruiken
- in PHP5 uitgebreide mogelijkheden
Pagina 3
Wat is een object?
Als je programmeert in OOP werk je met objecten. Een object heeft verschillende eigenschappen net zoals bijvoorbeeld een mens die heeft. (haarkleur, lengte, huiskleur etc etc zijn eigenschappen van een mens)
Ook heeft een object een aantal "functies" (ook wel "methoden" genoemd.). Net zoals een mens functies heeft (lopen, praten, horen, schijten etc etc). Deze functies werken samen met elkaar net zoals bij een mens interne lichaamsdelen (functies) met elkaar samenwerken.
In een object, maken functies ook weer gebruik van interne eigenschappen. Volgens de OOP regels horen ook alleen eigenschappen intern benaderd te worden.
Maargoed, genoeg geluld even een duidelijk code voorbeeld geven.
Ook heeft een object een aantal "functies" (ook wel "methoden" genoemd.). Net zoals een mens functies heeft (lopen, praten, horen, schijten etc etc). Deze functies werken samen met elkaar net zoals bij een mens interne lichaamsdelen (functies) met elkaar samenwerken.
In een object, maken functies ook weer gebruik van interne eigenschappen. Volgens de OOP regels horen ook alleen eigenschappen intern benaderd te worden.
Maargoed, genoeg geluld even een duidelijk code voorbeeld geven.
Pagina 4
Voorbeeld
<?
Class Mens {
var $leeftijd;
var $huidskleur;
var $lengte; // in centimeters
var $gewicht; // in grammen
var $laatsteKeerGegeten;
var $meterGelopen;
Function Mens() {
// ---
// Deze functie noemen ze de "constructor", dat wilt zeggen dat bij het aanmaken van een nieuw object deze functie uitgevoert wordt.
// Later wordt dit duidelijker
// ---
$this->laatMensLeven();
// ---
// Stel standaard waarden in, van een pas geboren baby
// ---
$this->lengte = 30;
$this->leeftijd = 0;
$this->gewicht = 2500;
// ---
// $this verwijst naar zijn eigen object, vandaar de naam "this" dat betekend "dit". $this is ook door PHP gereseveerde variabele.
// $this gebruik je dus alleen in het maken van de klasse.
// ---
}
Function verjaardag() {
// ---
// Stel dat een mens een jaar ouder wordt, verhoog dan de leeftijd met 1
// ---
$this->leeftijd++;
}
Function laatMensLopen( $aantalMeter ) {
// ---
// Laat een mens een aantal meter lopen
// ---
$this->meterGelopen += $aantalMeter;
// ---
// Als je loopt dan verbrand je energie en verlies je gewicht
// ---
$this->gewicht = $this->gewicht*0.95; //5% gaat er van zijn gewicht af.
}
Function laatMensLeven( ) {
// ---
// Start het leven van een mens
// ---
}
function gaDood( ) {
// ---
// Wanneer een mens dood gaat
// Zet alle eigenschappen van het mens weer op niks dus
// ---
$this->leeftijd = 0;
$this->huiskleur = '';
$this->lengte = '';
$this->gewicht = '';
$this->meterGelopen = 0;
}
Function nuttigEten( $aantalGram ) {
// ---
// Laat een mens wat eten, en als je te weinig gram als parameter geeft dan krijg je een waarschuwing
// ---
if( $aantalgram > 0 ) {
$this->laatsteKeerGegeten = time();
$this->_verhoogGewicht($aantalGram);
// ---
// laat het mens 10 procent van het voedsel groeien, uiteraard klopt hier niks van maar het gaat om het princiepe
// ---
$this->_groei($aantalGram/0.9);
}
}
Function _verhoogGewicht( $aantalGram ) {
// ---
// Deze functie verhoogt het gewicht van een mens.
// Er staat een underscore ("_") voor de functie naam omdat het een private functie is. Ofwel, een functie die alleen aangroepen mag
// worden door het object zelf, en niet van buiten af.
// ---
$this->gewicht += $aantalGram;
}
Function _groei($aantalCentimeter) {
// ---
// Ook weer een interne functie welke een mens kan laten groeien.
// ---
$this->lengte += $aantalCentimeter;
}
}
// ---
// Uiteraard is de klasse nog niet helemaal klaar maar we kunnen nu een aantal dingen:
// ---
// ---
// Start een nieuw leven, bij het aanmaken van een nieuw object wordt meteen de constructor aangeroepen (ofwel de functie: Mens();
// ---
$jantje = New Mens;
// ---
// Laat jantje een aantal keer eten, zo wordt hij zwaarder, en langer
// ---
$jantje->nuttigEten(1000); // pak lasagne
$jantje->nuttigEten(40); // kroket
$jantje->nuttigEten(50); // pakje kwark
$jantje->nuttigEten(300); // bakje friet, wat een snoeperd!
// ---
// En er was weer een jaar voorbij en jantje is jarig!
// ---
$jantje->verjaardag();
// ---
// Omdat jantje zoveel gegeten had, moest hij van zijn moeder meer gaan lopen om wat af te vallen.
// Jantje vondt dat een goed idee en ging een flink eind lopen
// ---
$jantje->laatMensLopen(3000); // boswandeling van 3 kilometer
// ---
// Triest genoeg, maar jantje kreeg een auto ongeluk en overleegd...
// ---
$jantje->gaDood();
// ---
// Omdat ie dood is, hebben we jantje niet meer nodig, en begraven we hem door het object leeft te maken en de waarde NULL te geven.
// ---
$jantje = NULL;
?>
Class Mens {
var $leeftijd;
var $huidskleur;
var $lengte; // in centimeters
var $gewicht; // in grammen
var $laatsteKeerGegeten;
var $meterGelopen;
Function Mens() {
// ---
// Deze functie noemen ze de "constructor", dat wilt zeggen dat bij het aanmaken van een nieuw object deze functie uitgevoert wordt.
// Later wordt dit duidelijker
// ---
$this->laatMensLeven();
// ---
// Stel standaard waarden in, van een pas geboren baby
// ---
$this->lengte = 30;
$this->leeftijd = 0;
$this->gewicht = 2500;
// ---
// $this verwijst naar zijn eigen object, vandaar de naam "this" dat betekend "dit". $this is ook door PHP gereseveerde variabele.
// $this gebruik je dus alleen in het maken van de klasse.
// ---
}
Function verjaardag() {
// ---
// Stel dat een mens een jaar ouder wordt, verhoog dan de leeftijd met 1
// ---
$this->leeftijd++;
}
Function laatMensLopen( $aantalMeter ) {
// ---
// Laat een mens een aantal meter lopen
// ---
$this->meterGelopen += $aantalMeter;
// ---
// Als je loopt dan verbrand je energie en verlies je gewicht
// ---
$this->gewicht = $this->gewicht*0.95; //5% gaat er van zijn gewicht af.
}
Function laatMensLeven( ) {
// ---
// Start het leven van een mens
// ---
}
function gaDood( ) {
// ---
// Wanneer een mens dood gaat
// Zet alle eigenschappen van het mens weer op niks dus
// ---
$this->leeftijd = 0;
$this->huiskleur = '';
$this->lengte = '';
$this->gewicht = '';
$this->meterGelopen = 0;
}
Function nuttigEten( $aantalGram ) {
// ---
// Laat een mens wat eten, en als je te weinig gram als parameter geeft dan krijg je een waarschuwing
// ---
if( $aantalgram > 0 ) {
$this->laatsteKeerGegeten = time();
$this->_verhoogGewicht($aantalGram);
// ---
// laat het mens 10 procent van het voedsel groeien, uiteraard klopt hier niks van maar het gaat om het princiepe
// ---
$this->_groei($aantalGram/0.9);
}
}
Function _verhoogGewicht( $aantalGram ) {
// ---
// Deze functie verhoogt het gewicht van een mens.
// Er staat een underscore ("_") voor de functie naam omdat het een private functie is. Ofwel, een functie die alleen aangroepen mag
// worden door het object zelf, en niet van buiten af.
// ---
$this->gewicht += $aantalGram;
}
Function _groei($aantalCentimeter) {
// ---
// Ook weer een interne functie welke een mens kan laten groeien.
// ---
$this->lengte += $aantalCentimeter;
}
}
// ---
// Uiteraard is de klasse nog niet helemaal klaar maar we kunnen nu een aantal dingen:
// ---
// ---
// Start een nieuw leven, bij het aanmaken van een nieuw object wordt meteen de constructor aangeroepen (ofwel de functie: Mens();
// ---
$jantje = New Mens;
// ---
// Laat jantje een aantal keer eten, zo wordt hij zwaarder, en langer
// ---
$jantje->nuttigEten(1000); // pak lasagne
$jantje->nuttigEten(40); // kroket
$jantje->nuttigEten(50); // pakje kwark
$jantje->nuttigEten(300); // bakje friet, wat een snoeperd!
// ---
// En er was weer een jaar voorbij en jantje is jarig!
// ---
$jantje->verjaardag();
// ---
// Omdat jantje zoveel gegeten had, moest hij van zijn moeder meer gaan lopen om wat af te vallen.
// Jantje vondt dat een goed idee en ging een flink eind lopen
// ---
$jantje->laatMensLopen(3000); // boswandeling van 3 kilometer
// ---
// Triest genoeg, maar jantje kreeg een auto ongeluk en overleegd...
// ---
$jantje->gaDood();
// ---
// Omdat ie dood is, hebben we jantje niet meer nodig, en begraven we hem door het object leeft te maken en de waarde NULL te geven.
// ---
$jantje = NULL;
?>
Pagina 5
Nawoord
Zoals je ziet, heb je zojuist het framework van een leven gemaakt, en heb je een mens laten leven volgens jouw framework. Uiteraard is de klasse "mens" nog niet erg uitgebreid en kun je er erg weinig mee. Maar hopelijk wordt je hiermee wel een beetje duidelijk gemaakt wat Objecten zijn in PHP. Voor overige mogelijkheden wil ik je verwijzen naar de php manual, of sebastiaan zijn tutorial.
Er is een kans dat ik deze tutorial zal uitbreiden komende dag, maar het is nu 12 uur dus ga ik slapen ($jantje->slaap(8uur); haha)
Succes ermee, zijn er vragen dan hoor ik het graag!
Er is een kans dat ik deze tutorial zal uitbreiden komende dag, maar het is nu 12 uur dus ga ik slapen ($jantje->slaap(8uur); haha)
Succes ermee, zijn er vragen dan hoor ik het graag!
Reacties
0