Ecco le brevi definizioni di incapsulamento e astrazione.
Astrazione:
Il processo di astrazione in Java viene utilizzato per nascondere alcuni dettagli e mostrare solo le caratteristiche essenziali dell'oggetto. In altre parole, si occupa della vista esterna di un oggetto (interfaccia). L'unico buon esempio che vedo per questo su diversi siti è l'interfaccia.
incapsulamento:
Fondamentalmente si tratta di nascondere lo stato dell'oggetto con l'aiuto di modificatori come privati, pubblici, protetti ecc. Esponiamo lo stato attraverso metodi pubblici solo se necessario.
Ciò che otteniamo con modificatori come private
, public
nasconde anche dettagli inutili dal mondo esterno che non è altro che un concetto di astrazione
Quindi, da sopra la spiegazione sembra che l'incapsulamento sia una parte dell'astrazione o possiamo dire che è un sottoinsieme dell'astrazione. Ma allora perché viene inventato il termine incapsulamento quando potremmo affrontarlo solo con l'astrazione? Sono sicuro che ci dovrebbe essere qualche differenza sostanziale che li distingue, ma la maggior parte del materiale in rete dice quasi la stessa cosa per entrambi.
Anche se questa domanda è stata sollevata anche su questo forum in precedenza, ma la sto pubblicando di nuovo con dubbi specifici. Alcune risposte affermano anche che l'astrazione è un concetto e l'incapsulamento è implementazione. Ma non lo compro - Se è vero, allora posso pensare che questi due diversi concetti siano forniti per confonderci.
Aggiornamento: - Dopo 5 anni ho trovato la mia risposta, che è l'essenza basata sulle risposte in questo post e sotto quelle
private
public
, in quanto forniscono solo informazioni / nascondimenti che lo facciamo perché è una buona pratica proteggere i dati dell'istanza.
An 'abstraction' (noun) is a concept that acts as a super-categorical noun for all subordinate concepts, and connects any related concepts as a group, field, or category.