Encapsulació vs abstracció
L'encapsulació i l'abstracció són dos conceptes diferents però relacionats que es troben als llenguatges OOP (Programació Orientada a Objectes). L'encapsulació és el concepte de combinar dades i comportament com una sola entitat. D' altra banda, l'abstracció és el procés de presentar com es comporta\es veu una entitat en lloc de com s'implementa.
Què és l'encapsulació?
L'encapsulació és el procés d'embolcall de dades i operacions que s'hi operen en una única entitat. Això significa bàsicament que per accedir a les dades s'han d'utilitzar determinats mètodes predefinits. En altres paraules, les dades encapsulades no són directament accessibles. Això assegura que es preserva la integritat de les dades perquè l'usuari no pot accedir directament a les dades i modificar-les com vulgui. Els usuaris obtindran o establiran els valors de les dades només mitjançant els mètodes que estiguin disponibles públicament per als usuaris. Aquests mètodes solen proporcionar validació de dades de manera que només es permet inserir les dades en el format adequat als camps. Per tant, els beneficis de l'encapsulació són tres. Mitjançant l'encapsulació, el programador pot fer que els camps d'una classe siguin només lectura o només escriptura. En segon lloc, una classe pot tenir un control total sobre el que s'emmagatzema als seus camps. Finalment, els usuaris d'una classe no s'han de preocupar de com s'emmagatzemen les seves dades. A Java, el programador pot declarar que totes les variables d'instància són privades i proporcionar mètodes get i set (que són públics) per accedir i modificar els camps privats.
Què és l'abstracció?
L'abstracció és el procés de separació dels detalls de la presentació dels detalls de la implementació. Això es fa perquè el desenvolupador quedi alliberat dels detalls d'implementació més complexos. En canvi, el programador pot centrar-se en la presentació o els detalls del comportament de l'entitat. En termes simples, l'abstracció se centra en com es pot utilitzar una determinada entitat en lloc de com s'implementa. L'abstracció amaga essencialment els detalls de la implementació, de manera que fins i tot si la metodologia d'implementació canvia amb el temps, el programador no s'hauria de preocupar de com afectaria el seu programa. Un sistema es pot abstraure en diverses capes o nivells. Per exemple, les capes d'abstracció de baix nivell revelaran detalls de maquinari, mentre que l'abstracció d' alt nivell només revelarà la lògica empresarial de l'entitat. El terme abstracció es pot utilitzar per referir-se tant a una entitat com a un procés i això genera certa confusió. Com a procés, l'abstracció significa extreure detalls essencials ignorant els detalls no essencials d'un element o grup d'elements, mentre que com a entitat, l'abstracció significa un model o una visió d'una entitat amb només els detalls essencials. A Java, el programador pot utilitzar la paraula clau abstract per declarar una classe com una entitat abstracta, que representa les característiques essencials de definició d'una entitat del món real.
Quina diferència hi ha entre l'encapsulació i l'abstracció?
Tot i que l'encapsulació i l'abstracció són conceptes molt relacionats que es troben als llenguatges de programació orientada a objectes, tenen diferències clau. L'abstracció és una tècnica, que ens ajuda a identificar què ha de ser visible i què s'ha d'amagar. L'encapsulació són les tècniques per empaquetar la informació de manera que faci visible allò que hauria de ser visible i amaga allò que s'hauria d'amagar. En altres paraules, l'encapsulació es pot identificar com un pas més enllà de l'abstracció. Mentre que l'abstracció redueix un objecte del món real a les seves característiques essencials definitòries, l'encapsulació amplia aquesta idea modelant i enllaçant aquesta funcionalitat d'aquesta entitat.