Gegevensabstractie
Gegevensabstractie is een essentieel onderdeel van objectgeoriënteerd programmeren. Het biedt alleen de essentiële informatie aan de buitenwereld, terwijl achtergronddetails of implementatie verborgen blijven. Dit helpt het object en zijn taak te vereenvoudigen.
Voorbeeld: Een bestuurder weet dat het indrukken van het gaspedaal de snelheid verhoogt, maar hoeft de interne motormechanismen van de auto niet te kennen. Door alleen de kritieke gegevens op te nemen die nodig zijn om het object een taak uit te laten voeren, wordt het gemakkelijker om toekomstige wijzigingen en toevoegingen aan te brengen.
Inkapseling
Inkapseling legt uit hoe gegevens in één enkele eenheid worden verpakt. Het is het mechanisme dat code en de gegevens die het manipuleert, aan elkaar bindt.
De variabelen of gegevens van een klasse zijn verborgen voor andere klassen en kunnen alleen worden benaderd via de lidfuncties van hun eigen klasse. Dit wordt ook wel data-hiding genoemd.
Het biedt verbeterde beveiliging en helpt onbedoelde gegevenscorruptie te voorkomen.
Voorbeeld: Een financieel medewerker heeft verkoopgegevens nodig voor een rapport. Hij moet contact opnemen met iemand binnen de verkoopafdeling om die informatie te raadplegen vanuit hun CRM-systeem in plaats van er zelf rechtstreeks toegang toe te hebben.
Overname
Deze pijler verwijst naar het vermogen van een klasse om eigenschappen en kenmerken te erven van een andere klasse. Overname maakt hergebruik van code mogelijk, omdat eigenschappen en functies kunnen worden geërfd in plaats van herhaaldelijk te worden geschreven, waardoor redundantie wordt verminderd en tijd wordt bespaard.
Voorbeeld: Een werknemer kan variabelen en eigenschappen overnemen van een algemene persoon.
Polymorfisme
Polymorfisme betekent 'veelvormigheid'. Het legt uit dat hetzelfde object, afhankelijk van de context, meerdere functies kan hebben.
Polymorfisme maakt het mogelijk dat een enkele methode-aanroep een ander resultaat oplevert, afhankelijk van het object waarop het werkt. Het stelt een functie in staat om met een specifieke interface te werken, waardoor entiteiten van verschillende klassen op een uniforme manier kunnen worden gemanipuleerd.
Voorbeeld: Eén persoon kan tegelijkertijd vader, echtgenoot en werknemer zijn, en in verschillende contexten verschillend gedrag vertonen. Als je cirkelvormige en vierkante objecten hebt, kunnen ze in een vormklasse vallen, met een tekenmethode die voor beide kan worden aangeroepen.
Andere belangrijke principes van OOP zijn: klasse, object, dynamische binding en berichtoverdracht.
Object
Een object is de basiseenheid van objectgeoriënteerd programmeren. Het vertegenwoordigt reële of abstracte entiteiten en is een instantie van een klasse. Geheugen kan alleen worden toegewezen wanneer een object wordt gecreëerd.
Objecten wisselen berichten uit door ze te verzenden en te ontvangen. Ze hoeven alleen het type bericht dat wordt geaccepteerd en het antwoord dat wordt teruggestuurd te kennen, niet elkaars interne details.
Voorbeeld: Een hond is een levensecht object met eigenschappen zoals kleur en ras, en gedragingen zoals blaffen, slapen en eten.
Klasse
Net als bij overname worden objecten gecategoriseerd in klassen. Een klasse dient als een blauwdruk voor individuele objecten en definieert een set eigenschappen of methoden die gemeenschappelijk zijn voor alle objecten van dat type. De klasse bestaat uit dataleden (variabelen en attributen) en lidfuncties (methoden).
Voorbeeld: een autoklasse kan eigenschappen hebben zoals vier wielen, snelheidslimiet en actieradius.
Dynamische binding
Dynamische binding is het mechanisme waarmee de code die moet worden uitgevoerd voor een functieaanroep tijdens de uitvoeringstijd wordt bepaald. Dit betekent dat de exacte code die aan een procedureaanroep is gekoppeld, pas bekend is op het moment van de aanroep.
Dynamische binding werkt vaak met overname en polymorfisme, waardoor een object de hiërarchie van zijn bovenliggende klasse kan doorzoeken om de juiste versie van die methode te vinden en uit te voeren. Deze flexibiliteit stelt een object in staat om tijdens de uitvoering verschillende gedragingen aan te nemen.
Voorbeeld: Voertuig is je basisklasse, en daaruit heb je twee afgeleide klassen, auto en motorfiets. Beide hebben gedeelde kenmerken, zoals het starten van een motor om te functioneren, maar de manier waarop ze die actie uitvoeren is uniek.
Berichtoverdracht
Berichtoverdracht wordt gebruikt bij OOP, waarbij objecten met elkaar communiceren door informatie naar elkaar te sturen en te ontvangen. Dit houdt in dat je de naam van het object, de naam van de functie en de te verzenden informatie specificeert.
Voorbeeld: Een chauffeur zou een object zijn dat in wisselwerking staat met een ander object, een voertuig.
Voordelen van OOP