Objectgeoriënteerd
Uit Wikipedia, de vrije encyclopedie
Objectgeoriënteerd, vaak afgekort tot OO, is een paradigma dat gebruikt wordt bij het objectgeoriënteerd programmeren en 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.
Belangrijke eigenschappen van objectgeoriënteerd programmeren zijn:
- 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.
Inhoud |
[bewerken] 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.
[bewerken] 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:
- 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
diameteren een attribuutlocatiehebben. - door middel van methoden alle potentiële gedragingen van die objecten geprogrammeerd - berekeningen, bewerkingen, acties, replieken etc. (functies in klassieke programmeertalen). Een cirkelklasse kan bijvoorbeeld methoden hebben om de oppervlakte van de cirkel te berekenen en om de cirkel te verplaatsen.
[bewerken] 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 gebruik gemaakt 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.
[bewerken] 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.
[bewerken] Programmeertalen
- Pascal-achtige sytax
[bewerken] Objectgeoriënteerde gebruikersinterface
Een geheel ander soort objectgeoriënteerdheid treft men aan in de objectgeoriënteerde gebruikersinterface. Dit is een vorm van een grafische gebruikersomgeving waarbij de nadruk niet ligt op de programma's die gebruikt worden om taken uit te voeren, maar op de documenten of bestanden waarmee men werkt. De Workplace Shell van OS/2 is een voorbeeld van een dergelijke interface.
[bewerken] Zie ook