PHP gevorderde |
|
In het voorbeeld compositie heb je duidelijk te maken met een object van class B die je in een object van class A hebt gestoken. Dit betekent dat dat object niet meteen toegankelijk is van buitenaf, en minstens 1 actie moet doen via dat object van class A om dat object van class B te bewerken of terug te krijgen via bv. een getB() methode.
Om kort samen te vatten bewaard een object van class A een object van class B in een interne variabele.
In het voorbeeld overerving heb je slechts 1 object dat de methodes en variabelen van class A en B. Met een object van class B kan je de handelingen uitvoeren die aangemaakt werden in zowel class A en B, terwijl een object van class A alleen methodes kan doen in class A zelf.
In tegenstelling tot compositie bewaar je geen objecten, je neemt enkel de functionaliteit over.
Om dit kort samen te vatten, heeft object van class B de methodes en variabelen uit A (door de extend).
Conclusie: Er is een groot verschil.
Het grote verschil ga je merken dat je bij compositie een pattern hebt met objecten (je bewaard een object in een ander object), terwijl je bij overerving te maken hebt met een pattern op class-niveau - door middel van een extend - (ik hoop dat je goed het verschil kent tussen object en class). |