Nu we weten wat een class, abstracte class en interface zijn is het tijd om het principe van Object Georienteerd Programmeren (OOP) te leren. OOP gaat uit van objecten. Alles in de code is in theorie een object. 

Wat is eigenlijk een object?

 Onze wereld bestaat uit objecten. Alles om ons heen is een object en/of bestaat uit meerdere objecten. Voorbeelden van objecten zijn: een glas, een tafel, de televisie, enzovoort. In theorie heeft elk object slechts één verantwoordelijkheid (single responsibility). Het kan in theorie niet meer dan één ding.

Sommige objecten bestaan uit meerdere andere objecten. Neem bijvoorbeeld een fiets. Een fiets is een object, maar heeft bijvoorbeeld twee wielen. Deze wielen zijn ook objecten.  Daarnaast heeft een fiets onder andere een ketting, een paar tandwielen, verlichting, stuur, trappers en een zadel. Dit zijn allemaal objecten.

De fiets als object is eigenlijk een verzameling van losse objecten. We noemen dit een compositie. In programmeer ‘jargon’ een composite.

Heeft de fiets dan meerdere verantwoordelijkheden? Dat de fiets uit meerdere losse objecten bestaat betekent niet dat hij meerdere verantwoordelijkheden heeft. Een fiets is een vervoersmiddel en heeft als verantwoordelijkheid: vervoeren. 

Herbruikbaarheid van objecten

Als code goed is opgezet, dan zijn objecten opnieuw te gebruiken (reusable).  We schrijven de definities van objecten als classes en instantiëren deze dan. Neem nu een wiel, als object in de echte wereld is deze op bijna elk vervoersmiddel terug te vinden: fietsen, motorfietsen, auto’s, vliegtuigen, etc. 

In de meeste gevallen is alleen de diameter verschillend. Dit is dus een bepaalde eigenschap.  Als we een definitie van een class maken voor wiel, dan zou deze er als volgt uitzien:

<?php
class Wiel {   
   protected $diameter;

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

Nu kunnen we allemaal logica gaan toevoegen die horen bij een wiel. Hierbij is te denken aan het roteren. Wellicht willen we nog een methode toevoegen die op basis van parameters aangeeft hoeveel omwentelingen we maken en dus hoe snel we gaan. Voor nu laat ik dit even buiten beschouwing.

De herbruikheid en de kracht van objecten zit in het goed uitdenken van elk concept. Een fietszadel is natuurlijk een stoel en een fiets als vervoersmiddel heeft slechts 1 stoel. Een auto heeft bijvoorbeeld ‘5’ stoelen (als we de achterbank als 3 zitplaatsen, dus drie ‘stoelen’ zien).