Programming Essentials
Object Oriented Programming
We hadden al functionele (Haskell, JavaScript, Python, Scala, Erlang, Lisp, ML, Clojure,
OCaml, Common Lisp, Racket) en procedurele talen (Fortran, Algol, Cobol, BASIC, Pascal,
en C). Vervolgens kwamen daar ook de object oriented talen (Java, C++, C#, Python, PHP,
JavaScript, Ruby, Perl, Objective-C, Dart, Swift, en Scala) bij.
De term object oriented programming is bedacht door Alan Kay rond 1966. Het idee achter
object oriented programming vanuit zijn standpunt was op zichzelf staande computers in
software die via berichten met elkaar communiceerden. Dit om te voorkomen dat
programma's moesten worden opgebroken in data structuren en procedures.
Simula was de eerste object georiënteerde taal. Gevolgd door Smalltalk. Alles in Smalltalk
was ook echt een object. In de opvolger van Smalltalk was ook overerving mogelijk, het
zogenaamde subclassing.
Wat is een object?
Er zijn vele definities van objecten in de software. Wij gebruiken deze: "Een object kan
worden gedefinieerd als een dataveld met unieke attributen en gedrag".
Software objecten zijn gemodelleerd naar real-life objecten, in de zin dat ze ook een status
hebben en een gedrag vertonen. De status van een object wordt bewaard in de interne
variabelen de attributen (attributes, properties), terwijl het gedrag (behaviour) door de
methoden (methods) wordt geïmplementeerd. De methoden zijn de functies die bij een
object horen.
Wat is object georiënteerd programmeren?
Object georiënteerd programmeren is een software ontwerp aanpak. Een
programmeermodel dat is georganiseerd rond data of objecten in plaats van functies en
logica. De focus ligt op de objecten die de programmeurs willen manipuleren in plaats van
de details die noodzakelijk zijn om de data aan te passen.
Het gebruik van OOP zorgt ervoor dat programma's flexibeler worden en eenvoudiger
uitbreidbaar. Daarnaast wordt ook het hergebruik gepromoot, wat resulteert in lagere
ontwikkelkosten. Een van de belangrijkste voordelen van object georiënteerd programmeren
is dat het eenvoudiger is om modulaire code te schrijven.
Omdat de individuele onderdelen onafhankelijke objecten zijn, is het mogelijk om de code te
reorganiseren en te hergebruiken, zonder dat het andere delen van het programma
beïnvloed. Het is daardoor mogelijk dat er complexe applicaties worden gemaakt met minder
regels code dan je normaal gesproken nodig zou hebben.
Een laatste punt is, dat hergebruik wordt aangemoedigd. Omdat elk component een object
is, is het mogelijk om code te hergebruiken zonder dat je deze volledig opnieuw hoeft te
maken.
, De belangrijkste elementen bij OOP
Dit waren op het begin de belangrijkste elementen van object georiënteerd programmeren:
● Message passing, berichten versturen tussen de verschillende objecten
● Encapsulation, elk object is verantwoordelijk voor haar eigen state en data
● Dynamic binding, objecten kunnen op een later moment aan elkaar worden
gekoppeld
Tegenwoordig zien we de volgende elementen als belangrijk voor object georiënteerd
programmeren:
● Encapsulation, elk object is verantwoordelijk voor haar eigen state en data
● Abstraction, het afschermen van de details voor de gebruiker
● Inheritance, overerven van eigenschappen van een ouderklasse
● Polymorphism, meer vormigheid de mogelijkheid om op meer dan 1 manier te
worden weergegeven
Elementen van OOP
Termen
Wanneer we documentatie lezen dan komen we verschillende termen tegen. Elk heeft een
betekenis en een plaats waar deze gebruikt kan worden. De termen goed gebruiken helpt bij
het communiceren met andere developers.
We hebben het bij OOP steeds over objecten. Maar een object is een implementatie van
een class. Anders gezegd, een class beschrijft hoe een object eruit ziet. Het is een definitie.
Van een class kunnen objecten worden gemaakt. Elk gemaakt object is een instantie van de
class waar hij uit is opgebouwd.
Als je gingerbread boy koekjes wilt bakken, bereid je eerst het deeg met alle benodigde
ingrediënten. Vervolgens gebruik je een cookie cutter om diverse gingerbread boy vormen
uit te snijden. Deze vorm fungeert als een class die de gingerbread boy beschrijft,
vergelijkbaar met hoe een class een persoon beschrijft. Wanneer het deeg met de cookie
cutter is gesneden, ontstaat een object, namelijk een instantie van de class gingerbread boy,
en na het bakken in de oven, kun je genieten van heerlijke koekjes.