Attualmente sto cercando di comprendere più profondamente i 4 principi di OOP: astrazione, incapsulamento, ereditarietà e polimorfismo.
Dopo aver studiato i quattro principi, non capisco appieno perché l'incapsulamento sia considerato uno dei quattro principi primari di OOP.
L'incapsulamento è estremamente comune e utile in OOP, ma mi sembra più una tecnica o una strategia da usare come parte di Abstraction.
Una buona definizione per l'astrazione:
'L'astrazione è il concetto di spostare l'attenzione dai dettagli e l'implementazione concreta delle cose, ai tipi (ie classi), le operazioni disponibili (cioè i metodi) , ecc., rendendo la programmazione più semplice, generale e più astratta.
L'incapsulamento, d'altra parte, è questo:
' Nascondere i dettagli di implementazione interna di una classe dal mondo del software esterno e suddividere un'interfaccia per altre entità software per comunicare e manipolare quella classe.'
Se è così, mi sembra che l'incapsulamento sia principalmente una tecnica per rendere le cose più astratte nel sistema software. Quindi, agisce più di una strategia che implementa il concetto di Astrazione, piuttosto che un principio primario di per sé. Potrebbe essere considerato un "principio" e non solo una tecnica, ma sarebbe comunque parte del più generale principio di astrazione e non un principio importante di per sé.
Qualcuno è d'accordo? Se ho torto, spiegami perché.