OOP Vacatures

Vacatures van oktober 2020 voor OOP net geupdate!

Wat is OOP?
Object Oriented Programming of korter OOP is een techniek afkomstig van higher level programmeertalen zoals Java, C#, VB.NET, … en vindt zijn oorsprong bij Smalltalk die het eerst de term Object Oriented Programming introduceerde.

In recentere jaren heeft deze techniek echter ook zijn weg gevonden naar webscripting talen zoals Python, Ruby, Perl en meerbepaald PHP waar wij onze websites mee ontwikkelen.

OOP streeft er naar om een project zo structureel mogelijk op te bouwen in objecten. Dit heeft voor de programmeur het grote voordeel dat code vanaf nu in logische componenten wordt opgedeeld en veel makkelijker te hergebruiken is.

Om het concept van objecten te illustreren wordt meestal een voorwerp uit het dagelijks leven als voorbeeld gebruikt. Neem bijvoorbeeld een auto. De auto is het object en dit object heeft bepaalde properties of eigenschappen. Een eigenschap van de auto kan een band, een deur, een spiegel, de uitlaat of eender welk onderdeel van de auto zijn. Maar een auto heeft ook functies. Een functie kan starten of remmen zijn.
Dus hebben we nu eigenlijk een object met properties en functies. Zo zit een object in programmeertalen er ook uit. Een mail object heeft bijvoorbeeld als property de ontvanger, de verzender en het bericht en als functie versturen. Dit zijn natuurlijk erg vereenvoudigde voorbeelden en in de praktijk zal het er een stuk ingewikkelder aan toe gaan maar de basisprincipes zijn steeds hetzelfde.

OOP in PHP
PHP ondersteunt sinds versie 4 in beperkte mate Object georiënteerd programmeren met de introductie van classes en de daarbij gepaard gaan eigenschappen zoals constructors, references, het extends keyword en andere.

OOP werd echter pas echt populair toen PHP5 het nieuwe object model introduceerde. De manier waarmee met objecten werd omgegaan veranderde drastisch en het werken volgens OOP principes werd pas echt bruikbaar sinds deze aanpassingen. Met versie 5 van PHP werden eigenschappen als property visibility, __construct en __desctruct, inheritance, interfaces, class constants, overloading, autoloading en nog veel meer toegevoegd aan de toolset van webdevelopers.

De voordelen van OOP
OOP heeft vele voordelen die voor minder ervaren programmeurs waarschijnlijk niet altijd even duidelijk zijn.

Het grootste voordeel is de herbruikbaarheid van code. Met OOP is het veel makkelijker om externe componenten te integreren in je huidige projecten.
Ook is de opbouw van OOP projecten veel structureler en makkelijker te overzien en te begrijpen dan projecten die nog volgens procedural principes zijn opgebouwd.
Objecten zijn ook zeer makkelijk met nieuwe functionaliteit uit te breiden dankzij het inheritance model van objecten en dit zonder één regel code van het originele object aan te passen.
Objecten zijn makkelijk te gebruiken. Als je objecten een makkelijke en correcte interface gebruiken maken objecten sommige erg ingewikkelde taken een stuk makkelijker. Neem weer het voorbeeld van de auto, je moet niet weten hoe een dieselmotor werkt om met een auto te kunnen rijden. Zo is het ook met objecten in OOP. Je hoeft de interne ( en waarschijnlijk erg ingewikkelde ) werking van een object niet te kennen om ermee te kunnen werken.
Een praktisch voorbeeld is ons CMS de webadmin, deze is volledig met ons OOP framework opgebouwd waardoor het toevoegen van nieuwe modules en het introduceren van nieuwe functionaliteit in de website zelf erg makkelijk wordt. Door de vele standaard objecten en componenten in ons framework is het kinderspel om een RSS feed, een fotoalbum met thumbnails, een captcha, formulieren, PDF’s, en nog veel meer aan uw website toe te voegen.

Zijn er ook nadelen?
Zoals het met zoveel dingen is het niet altijd rozengeur en maneschijn en heeft ook OOP zijn duistere kant. Het is bijvoorbeeld zeer moeilijk om oudere projecten, die niet volgens OOP principes zijn opgebouwd, om te zetten naar een nieuw OOP framework. Met dit soort taken gaat meestal het quasi compleet herschrijven van het project gepaard.

Ook is het gebruik van OOP in sommige gevallen niet nodig of overkill. Hoewel ik hier zeker mijn vragen bij heb aangezien je nooit weet wat er in de toekomst gaat gebeuren. Je kan beter een goede fundering bouwen zodat je in de toekomst makkelijk uitbreidingen kan uitvoeren in plaats van nu met een simpele (en op dit moment stabiele) basis te werken en in de toekomst voor grote struikelblokken komt te staan omdat uitbreidingen niet voor de hand liggen en onderhoudbaarheid een groot probleem wordt.

Ook is OOP is in de meeste gevallen iets meer resource intensief dan procedural programming hoewel deze impact zeker te verwaarlozen valt in 90% van de gevallen en deze nadelen niet opwegen tegen de voordelen qua software engineering.

Het grootste nadeel is misschien dat het niet makkelijk aan te leren is. Gezien de meeste webdeveloper geen echte ontwikkelaarsachtergrond hebben in higher level languages en op school meestal procedural programming aangeleerd krijgen in scripting talen zoals PHP, Ruby en Python vereist het een grote omschakeling om van procedural programming naar OOP over te schakelen. Er is een totaal andere denkwijze voor nodig die heel wat inspanningen vereist van een programmeur. Maar eens je er mee weg bent zijn de voordelen overduidelijk.