Object georienteerd programmeren

From Wiskunde Portfolio Wiki

Jump to: navigation, search

Objectgeoriënteerd, vaak afgekort tot OO als afkorting voor het Engelse Object-oriented, is een paradigma dat gebruikt wordt bij het objectgeoriënteerd programmeren en de objectgeoriënteerde opslag van data. Bij deze benadering wordt een systeem opgebouwd uit objecten, waarbij ieder object gemaakt is vanuit de definitie van een klasse. Het objectgeoriënteerde paradigma kende een opmars in het begin van de jaren 1990. Vele talen ondersteunen tegenwoordig objectgeoriënteerd programmeren.


Contents

Geschiedenis

Het objectgeoriënteerde programmeerparadigma werd voor het eerst gebruikt in de programmeertaal Simula van Ole-Johan Dahl en Kristen Nygaard in de jaren 60 van de 20e eeuw. Het werd verder ontwikkeld in de jaren 70 bij Xerox.

Het concept

De structuurdefinitie van een object wordt een klasse genoemd. De klasse is de blauwdruk voor elk object van die klasse. Een specifiek object is dus altijd een instantie van een bepaalde klasse. Bijvoorbeeld: de tafel waaraan u nu zit is een object, en deze is van de klasse tafel.

In een klassedefinitie wordt:

  1. door middel van attributen vastgelegd wat de vorm is van de objecten die tot die klasse behoren. Deze attributen bevat de gegevens behorende bij het object. Een klasse die een cirkel representeert kan bijvoorbeeld een attribuut diameter en een attribuut locatie hebben.
  2. door middel van methode alle potentiële gedragingen van die objecten geprogrammeerd - berekeningen, bewerkingen, acties, replieken etc. (functie in klassieke programmeertalen). Een cirkelklasse kan bijvoorbeeld methoden hebben om de oppervlakte van de cirkel te berekenen en om de cirkel te verplaatsen.

Belangrijke eigenschappen van objectgeoriënteerd programmeren

  • Informatie verbergen: het kunnen verbergen van de interne werking van objecten, waardoor op een hoger niveau geprogrammeerd kan worden.
  • Modulariteit: programma's zijn eenvoudig uit te breiden en klasses zijn makkelijk te hergebruiken
  • Overerving: het specifieker kunnen maken van een klasse, waarbij (een deel van) een generieke klasse kan worden overgeërfd.
  • Polymorfisme: een functie kan geschreven worden voor generieke objecten, en uitgevoerd worden op specifiekere objecten, zonder dat de functie van het bestaan van de specifiekere objecten hoeft af te weten.

Overerving en polymorfisme

Een van de krachtige instrumenten van OO is de mogelijkheid tot hiërarchische classificatie. Een superklasse op het hoogste niveau kan in meerdere niveaus opgesplitst worden in lagere klassen. Daarbij 'erft' elke klasse op het lagere niveau de attributen en methoden van de klassen op het niveau boven de klasse. Dat mechanisme noemen we overerving (inheritance).

Overerving laat ook toe varianten van klassen te maken. We spreken dan van basis- en specifiekere klassen. In sommige situaties kan de basisklasse aangeven welke operaties mogelijk zijn op een object, terwijl een specifieke klasse een specifieke implementatie van de operatie geeft. Zo kan een basisklasse "figuur" gemaakt worden, met specifieke implementaties "cirkel" en "vierkant". Wanneer gebruikgemaakt zou worden van een door figuur gedefinieerde methode (bijvoorbeeld voor het verkrijgen van de oppervlakte), is het niet langer nodig om te weten welke vorm het object precies heeft; of het intern met een straal of met een lengte of breedte wordt opgeslagen. Dit concept wordt polymorfisme genoemd.

Inkapselen van data

Doordat een klasse de toegang tot attributen en methoden voor gebruik buiten de klasse kan limiteren, hoeft een programmeur niet na te denken over de interne werking van de klasse. Een cirkelklasse kan bijvoorbeeld zijn attribuut diameter niet publiekelijk maken en de methode om de oppervlakte op te vragen wel. De cirkelklasse zou dan eenvoudig aangepast kunnen worden om toch in plaats van de diameter intern de straal op te slaan, zonder dat de gebruiker van de cirkelklasse dit hoeft te weten: de publiekelijke toegang tot de klasse is immers niet veranderd. Dit begrip wordt inkapselen genoemd.

Programmeertalen

Personal tools