Inkapseling versus abstractie
Inkapseling en abstractie zijn twee verschillende maar verwante concepten die te vinden zijn in OOP-talen (Object Oriented Programming). Inkapseling is het concept van het combineren van gegevens en gedrag als een enkele entiteit. Aan de andere kant is abstractie het proces van presenteren hoe een entiteit zich gedraagt / eruit ziet in tegenstelling tot hoe het wordt geïmplementeerd.
Wat is inkapseling?
Inkapseling is het proces van het inpakken van gegevens en bewerkingen die erop werken in een enkele entiteit. Dit betekent in wezen dat om toegang te krijgen tot gegevens, bepaalde vooraf gedefinieerde methoden moeten worden gebruikt. Met andere woorden, ingekapselde gegevens zijn niet direct toegankelijk. Dit zorgt ervoor dat de integriteit van de gegevens behouden blijft, omdat de gebruiker de gegevens niet rechtstreeks kan openen en wijzigen zoals hij/zij wil. De gebruikers krijgen of stellen de gegevenswaarden alleen in via de methoden die openbaar beschikbaar zijn voor de gebruikers. Deze methoden bieden meestal gegevensvalidatie, zodat alleen de gegevens in het juiste formaat in de velden mogen worden ingevoegd. Daarom zijn de voordelen van inkapseling drievoudig. Via Encapsulation kan de programmeur velden van een klasse alleen-lezen of alleen schrijven maken. Ten tweede kan een klasse totale controle hebben over wat er in zijn velden wordt opgeslagen. Ten slotte hoeven de gebruikers van een klasse zich geen zorgen te maken over de manier waarop de gegevens worden opgeslagen. In Java kan de programmeur alle instantievariabelen als privé declareren en get en set-methoden (die openbaar zijn) bieden om toegang te krijgen tot de privévelden en deze te wijzigen.
Wat is abstractie?
Abstractie is het proces van het scheiden van de presentatiedetails van de implementatiedetails. Dit wordt gedaan zodat de ontwikkelaar wordt verlost van de meer complexe implementatiedetails. In plaats daarvan kan de programmeur zich concentreren op de presentatie of de gedragsdetails van de entiteit. In eenvoudige bewoordingen richt abstractie zich op hoe een bepaalde entiteit kan worden gebruikt in plaats van hoe deze wordt geïmplementeerd. Abstractie verbergt in wezen de implementatiedetails, zodat zelfs als de implementatiemethodologie in de loop van de tijd verandert, de programmeur zich geen zorgen hoeft te maken hoe dit zijn programma zou beïnvloeden. Een systeem kan in meerdere lagen of niveaus worden geabstraheerd. Abstractielagen op laag niveau onthullen bijvoorbeeld hardwaredetails, terwijl abstractie op hoog niveau alleen de bedrijfslogica van de entiteit onthult. De term abstractie kan worden gebruikt om zowel naar een entiteit als naar een proces te verwijzen en dit leidt tot enige verwarring. Als proces betekent abstractie het extraheren van essentiële details terwijl de niet-essentiële details van een item of een groep items worden genegeerd, terwijl abstractie als entiteit een model of een weergave van een entiteit betekent met alleen de essentiële details. In Java kan de programmeur het trefwoord abstract gebruiken om een klasse te declareren als een abstracte entiteit, die de essentiële definiërende kenmerken van een entiteit in de echte wereld vertegenwoordigt.
Wat is het verschil tussen inkapseling en abstractie?
Hoewel inkapseling en abstractie sterk verwante concepten zijn die worden gevonden in objectgeoriënteerde programmeertalen, hebben ze belangrijke verschillen. Abstractie is een techniek die ons helpt te identificeren wat zichtbaar en wat verborgen moet zijn. Inkapseling is de techniek om de informatie zo te verpakken dat het zichtbaar maakt wat zichtbaar zou moeten zijn en verbergt wat verborgen zou moeten zijn. Met andere woorden, inkapseling kan worden geïdentificeerd als een stap verder dan abstractie. Terwijl abstractie een object uit de echte wereld reduceert tot zijn essentiële bepalende kenmerken, breidt inkapseling dit idee uit door deze functionaliteit van die entiteit te modelleren en te koppelen.