Advertentie
Als je wat hebt gedaan programmeren voor beginners, of zelfs begonnen te kijken naar verschillende talen, kom je waarschijnlijk de term 'objectgeoriënteerd programmeren' (of 'OOP') tegen.
Er zijn allerlei technische verklaringen over wat het is, maar vandaag gaan we kijken naar het definiëren van objectgeoriënteerd programmeren op een eenvoudige manier.
Voordat we beginnen: procedurele talen
Om te begrijpen wat een objectgeoriënteerde programmeertaal is, moet u weten wat deze heeft vervangen. Vroege programmeertalen waren procedureel - zo genoemd omdat de programmeur een zeer specifieke reeks procedures zou definiëren die de computer zou uitvoeren.

Vroeger werden procedures geschreven op ponskaarten. Die stappen omvatten gegevens, voerden een reeks acties uit op die gegevens en voerden vervolgens nieuwe gegevens uit.
Procedurele talen werkten een tijdje goed (en sommige worden nog steeds gebruikt). Maar als u iets wilt programmeren dat verder gaat dan een basisvolgorde van stappen, kunnen procedurele talen moeilijk te beheren worden. Dat is waar objectgeoriënteerd programmeren binnenkomt.
Het doel van objectgeoriënteerd programmeren
Dus wat is objectgeoriënteerd programmeren dan?
De eerste objectgeoriënteerde taal (algemeen aangenomen Simula te zijn) introduceerde het idee van voorwerpen. Objecten zijn verzamelingen informatie die worden behandeld als een unieke entiteit.
We zullen in een oogwenk dieper ingaan op wat dat eigenlijk betekent met een voorbeeld, maar eerst moeten we erover praten klassen. Klassen zijn een soort pre-objecten. Ze bevatten een lijst met kenmerken die, wanneer ze zijn gedefinieerd, een object worden.

Laten we het voorbeeld nemen van het programmeren van een schaakspel. We hebben misschien een klasse genaamd Piece. Binnen Piece hebben we een lijst met attributen:
- Kleur
- Hoogte
- Vorm
- Beweging toegestaan
Een object definieert eenvoudig een bepaald exemplaar van een ding dat tot die klasse behoort.
Dus we zouden een object kunnen hebben genaamd WhiteQueen. Dat object zou definities hebben voor alle vier de attributen (wit, lang, cilindrisch met kantelen, een willekeurig aantal spaties in elke richting). Het kan ook zijn methoden of functies.
Wat maakt dit zo veel beter dan de procedurele benadering?
Kortom, objectgeoriënteerde programmeertalen (zoals Java) maakt het gemakkelijker om gegevens en code te organiseren op een manier die veelzijdiger is voor grotere projecten.
Om het wat gedetailleerder te bespreken, zullen we het hebben over de vier basisprincipes van objectgeoriënteerd programmeren.
Objectgeoriënteerd programmeren: abstractie
Alleen omdat je iets wilt gebruiken, wil nog niet zeggen dat je moet weten hoe het werkt. Een espressomachine is bijvoorbeeld complex. Maar je hoeft niet te weten hoe het werkt. Je hoeft alleen maar te weten dat wanneer je op 'Aan' klikt, je espresso gaat halen.

Hetzelfde geldt voor objecten in objectgeoriënteerde programmering. In ons schaakvoorbeeld hebben we mogelijk een methode move (). Die methode kan veel gegevens en andere methoden vereisen. Mogelijk zijn de beginpositie en de uiteindelijke positievariabelen nodig. Het kan een andere methode gebruiken om te bepalen of het een stuk heeft vastgelegd.
Maar dat hoeft u niet te weten. Het enige dat u moet weten, is dat wanneer u het stuk vertelt dat het moet bewegen, het beweegt. Dat is abstractie.
Objectgeoriënteerd programmeren: inkapseling
Inkapseling is een van de manieren waarop objectgeoriënteerd programmeren voor abstractie zorgt. Elk object is een verzameling gegevens die wordt behandeld als een enkele entiteit. En binnen die objecten bevinden zich gegevens - zowel variabelen als methoden.
De variabelen binnen een object worden over het algemeen privé gehouden, wat betekent dat andere objecten en methoden er geen toegang toe hebben. Objecten kunnen alleen worden beïnvloed door hun methoden te gebruiken.
Een Bishop-object kan verschillende informatie bevatten. Het kan bijvoorbeeld een variabele hebben die 'positie' wordt genoemd. Die variabele is nodig om de methode move () te gebruiken. En natuurlijk heeft het een kleur.
Door de positievariabele privé en de methode move () openbaar te maken, beschermt een programmeur de bewegingsvariabele tegen beïnvloeding door iets anders. En als de kleur een privévariabele is, is er geen manier om een ander object te veranderen, tenzij er een methode is die de verandering mogelijk maakt. (Wat je waarschijnlijk niet zou hebben, omdat de kleur van het stuk constant moet blijven.)
Deze variabelen en methoden worden bewaard binnen het Bishop-object. Omdat ze zijn ingekapseld, kan een programmeur de structuur of inhoud van het object wijzigen zonder zich zorgen te maken over de openbare interface.
Objectgeoriënteerd programmeren: overerving
Naast klassen hebben objectgeoriënteerde programmeertalen ook subklassen. Deze bevatten alle kenmerken van de bovenliggende klasse, maar ze kunnen ook andere kenmerken bevatten.
In ons schaakspel hebben de pionstukken een methode nodig die ze in andere stukken kan veranderen als ze het einde van het bord halen. We noemen het de transformPiece () methode.
Niet elk stuk heeft de transformPiece () -methode nodig. Dus we willen het niet in de Piece-klasse plaatsen. In plaats daarvan kunnen we een subklasse maken met de naam Pawn. Omdat het een subklasse is, erft het alle kenmerken van Piece. Dus een exemplaar van de subklasse Pion bevat een kleur, hoogte, vorm en toegestane beweging.
Maar het bevat ook de transformPiece () -methode. Nu hoeven we ons nooit meer zorgen te maken over het per ongeluk gebruiken van die functie op een toren. Hier is een technische uitleg:
Het maken van subklassen bespaart ook veel tijd. In plaats van voor alles nieuwe klassen te maken, kunnen programmeurs een basisklasse maken en deze indien nodig uitbreiden naar nieuwe subklassen. (Het is echter vermeldenswaard dat te veel vertrouwen op overerving is slecht 10 basis programmeerprincipes die elke programmeur moet volgenSchrijf altijd code die kan worden onderhouden door iedereen die mogelijk aan uw software gaat werken. Hiertoe zijn hier verschillende programmeerprincipes om u te helpen uw act op te schonen. Lees verder .)
Objectgeoriënteerd programmeren: polymorfisme
Polymorfisme is een gevolg van overerving. Het volledig begrijpen van polymorfisme vereist enige programmeerkennis, dus we gaan hier gewoon bij de basis. Kortom, polymorfisme stelt programmeurs in staat methoden met dezelfde naam te gebruiken, maar met verschillende objecten.
Onze stukklasse kan bijvoorbeeld een methode move () hebben die een stuk één plek in een willekeurige richting verplaatst. Dat werkt voor het koningsstuk, maar niet voor iets anders. Om dit probleem op te lossen, kunnen we een nieuwe methode move () definiëren in de subklasse Rook die beweging definieert als een onbeperkt aantal spaties vooruit, achteruit, links of rechts.
Wanneer een programmeur nu de methode move () aanroept en een stuk als argument gebruikt, weet het programma precies hoe het stuk moet bewegen. Dit bespaart veel tijd bij het uitzoeken welke van de vele verschillende methoden u moet gebruiken.
Objectgeoriënteerd programmeren in een notendop
Maak je geen zorgen als je hoofd een beetje draait na die laatste vier definities. Dit zijn de belangrijkste dingen die u moet onthouden:
- Objectgeoriënteerd programmeren verzamelt informatie in afzonderlijke entiteiten die objecten worden genoemd.
- Elk object is een enkele instantie van een klasse.
- Abstraction verbergt de innerlijke werking van een object wanneer het niet nodig is om ze te zien.
- Inkapseling slaat gerelateerde variabelen en methoden op in objecten en beschermt deze.
- Bij overerving kunnen subklassen kenmerken van bovenliggende klassen gebruiken.
- Polymorfisme stelt objecten en methoden in staat om meerdere verschillende situaties aan te pakken met een enkele interface.
Als je die punten kunt onthouden, heb je goed zicht op wat objectgeoriënteerd programmeren is. De vier basisprincipes van objectgeoriënteerd programmeren, zoals ik al zei, kunnen een beetje moeilijk zijn om grip op te krijgen. Maar zodra u begint met programmeren, worden ze duidelijker.
Onthoud dat we in dit artikel alleen de algemeenheden hebben besproken. Verschillende objectgeoriënteerde talen hebben hun eigenaardigheden en manieren om dingen te laten gebeuren. Als je eenmaal kies de juiste taal voor jou Op zoek naar de beste programmeertalen? Begin hier!Of je nu helemaal nieuw bent in programmeertalen of op zoek bent naar een nieuw soort programmeren, een van de belangrijkste vragen die je moet stellen is: "Welke programmeertaal is geschikt voor mij?" Lees verder leer je hoe het de OOP-principes in de praktijk brengt.
Dann is een contentstrategie- en marketingconsultant die bedrijven helpt bij het genereren van vraag en leads. Hij blogt ook over strategie en contentmarketing op dannalbright.com.