Incapsulamento vs Astrazione
Encapsulation e Abstraction sono due concetti diversi ma correlati che si trovano nei linguaggi OOP (Object Oriented Programming). L'incapsulamento è il concetto di combinazione di dati e comportamento come un'unica entità. D' altra parte, l'astrazione è il processo di presentazione di come un'entità si comporta\appare in contrasto con come viene implementata.
Cos'è l'incapsulamento?
L'incapsulamento è il processo di avvolgimento dei dati e delle operazioni che operano su di essi in un'unica entità. Ciò significa essenzialmente che per accedere ai dati devono essere utilizzati determinati metodi predefiniti. In altre parole, i dati incapsulati non sono direttamente accessibili. Ciò garantisce che l'integrità dei dati sia preservata poiché l'utente non è in grado di accedere direttamente e modificare i dati come desidera. Gli utenti otterranno o imposteranno i valori dei dati solo attraverso i metodi che sono pubblicamente disponibili per gli utenti. Questi metodi di solito forniscono la convalida dei dati in modo che solo i dati nel formato appropriato possano essere inseriti nei campi. Pertanto, i vantaggi dell'incapsulamento sono tripli. Attraverso l'incapsulamento, il programmatore può rendere i campi di una classe di sola lettura o di sola scrittura. In secondo luogo, una classe può avere il controllo totale su ciò che è memorizzato nei suoi campi. Infine, gli utenti di una classe non devono preoccuparsi di come vengono archiviati i suoi dati. In Java, il programmatore può dichiarare private tutte le variabili di istanza e fornire metodi get e set (pubblici) per accedere e modificare i campi privati.
Cos'è l'astrazione?
L'astrazione è il processo di separazione dei dettagli della presentazione dai dettagli dell'implementazione. Questo viene fatto in modo che lo sviluppatore sia sollevato dai dettagli di implementazione più complessi. Invece, il programmatore può concentrarsi sulla presentazione o sui dettagli comportamentali dell'entità. In parole povere, l'astrazione si concentra su come una determinata entità può essere utilizzata piuttosto che su come viene implementata. L'astrazione nasconde essenzialmente i dettagli di implementazione, in modo che, anche se la metodologia di implementazione cambia nel tempo, il programmatore non dovrebbe preoccuparsi di come influenzerebbe il suo programma. Un sistema può essere astratto in più livelli o livelli. Ad esempio, i livelli di astrazione di basso livello riveleranno i dettagli hardware, mentre l'astrazione di alto livello rivelerà solo la logica aziendale dell'entità. Il termine astrazione può essere usato per riferirsi sia a un'entità che a un processo e questo crea una certa confusione. Come processo, astrazione significa estrarre dettagli essenziali ignorando i dettagli non essenziali di un elemento o un gruppo di elementi, mentre come entità, astrazione significa un modello o una vista di un'entità con solo i dettagli essenziali. In Java, il programmatore può utilizzare la parola chiave abstract per dichiarare una classe come entità astratta, che rappresenta le caratteristiche essenziali di definizione di un'entità del mondo reale.
Qual è la differenza tra incapsulamento e astrazione?
Anche se Encapsulation e Abstraction sono concetti altamente correlati che si trovano nei linguaggi di programmazione orientati agli oggetti, presentano differenze fondamentali. L'astrazione è una tecnica che ci aiuta a identificare ciò che dovrebbe essere visibile e ciò che dovrebbe essere nascosto. L'incapsulamento è la tecnica per impacchettare le informazioni in modo tale da rendere visibile ciò che dovrebbe essere visibile e nascondere ciò che dovrebbe essere nascosto. In altre parole, l'incapsulamento può essere identificato come un passo oltre l'astrazione. Mentre l'astrazione riduce un oggetto del mondo reale alle sue caratteristiche distintive essenziali, l'incapsulamento estende questa idea modellando e collegando questa funzionalità di quell'entità.