Incapsulamento in Java OOP con esempio

Sommario:

Anonim

Cos'è l'incapsulamento in Java?

L'incapsulamento in Java è un meccanismo per raggruppare variabili (dati) e metodi (codice) insieme come una singola unità. È il processo di nascondere i dettagli delle informazioni e proteggere i dati e il comportamento dell'oggetto. È uno dei quattro importanti concetti OOP. La classe encapsulate è facile da testare, quindi è anche migliore per i test unitari.

In questo tutorial imparerai-

  • Cos'è l'incapsulamento in Java?
  • Impara l'incapsulamento con un esempio
  • Nascondere i dati in Java
  • Metodi Getter e Setter in Java
  • Astrazione vs incapsulamento
  • Vantaggi dell'incapsulamento in Java

Fare clic qui se il video non è accessibile

Impara l'incapsulamento con un esempio

Per comprendere in dettaglio cos'è l'incapsulamento, considera la seguente classe di conto bancario con metodi di deposito e mostra saldo

class Account {private int account_number;private int account_balance;public void show Data() {//code to show data}public void deposit(int a) {if (a < 0) {//show error} elseaccount_balance = account_balance + a;}}

Supponiamo che un hacker sia riuscito ad accedere al codice del tuo conto bancario. Ora, prova a depositare l'importo -100 sul tuo conto in due modi. Vediamo il suo primo metodo o approccio.

Approccio 1: tenta di depositare un importo non valido (ad esempio -100) sul tuo conto bancario manipolando il codice.

La domanda è: è possibile? Lasciati indagare.

Di solito, una variabile in una classe viene impostata come "privata" come mostrato di seguito. È possibile accedervi solo con i metodi definiti nella classe. Nessun altra classe o oggetto può accedervi.

Se un membro dati è privato, significa che è possibile accedervi solo all'interno della stessa classe. Nessuna classe esterna può accedere a membri di dati privati ​​o variabili di un'altra classe.

Quindi nel nostro caso l'hacker non può depositare l'importo -100 sul tuo account.

Approccio 2 : il primo approccio dell'hacker non è riuscito a depositare l'importo. Successivamente, prova a depositare un importo -100 utilizzando il metodo "deposito".

Ma l'implementazione del metodo ha un controllo per i valori negativi. Quindi anche il secondo approccio fallisce.

Pertanto, non esponi mai i tuoi dati a una parte esterna. Il che rende la tua applicazione sicura.

L'intero codice può essere pensato come una capsula e puoi comunicare solo attraverso i messaggi. Da qui il nome incapsulamento.

Nascondere i dati in Java

Nascondere i dati in Java nasconde le variabili di una classe da altre classi. È possibile accedervi solo tramite il metodo della loro classe corrente. Nasconde i dettagli di implementazione agli utenti. Ma più che nascondere i dati, è pensato per una migliore gestione o raggruppamento dei dati correlati.

Per ottenere un grado inferiore di incapsulamento in Java, è possibile utilizzare modificatori come "protetto" o "pubblico". Con l'incapsulamento, gli sviluppatori possono modificare facilmente una parte del codice senza influire sull'altra.

Getter e Setter in Java

Getter e Setter in Java sono due metodi convenzionali utilizzati per recuperare e aggiornare i valori di una variabile. Sono principalmente utilizzati per creare, modificare, eliminare e visualizzare i valori delle variabili. Il metodo setter viene utilizzato per aggiornare i valori e il metodo getter viene utilizzato per leggere o recuperare i valori. Sono anche conosciuti come accessori e mutatori.

Il codice seguente è un esempio di metodi getter e setter:

class Account{private int account_number;private int account_balance;// getter methodpublic int getBalance() {return this.account_balance;}// setter methodpublic void setNumber(int num) {this.account_number = num;}}

Nell'esempio precedente, il metodo getBalance () è il metodo getter che legge il valore della variabile account_balance e il metodo setNumber () è il metodo setter che imposta o aggiorna il valore per la variabile account_number.

Astrazione vs incapsulamento

Spesso l'incapsulamento viene frainteso con Abstraction. Studiamo-

  • L'incapsulamento riguarda più il "Come" ottenere una funzionalità
  • L'astrazione riguarda più "cosa" può fare una classe.

Un semplice esempio per capire questa differenza è un telefono cellulare. Dove la complessa logica nel circuito stampato è incapsulata in un touch screen e l'interfaccia è fornita per astrarla.

Vantaggi dell'incapsulamento in Java

  • L'incapsulamento sta vincolando i dati con le relative funzionalità. Qui funzionalità significa "metodi" e dati significa "variabili"
  • Quindi manteniamo variabili e metodi in un unico posto. Quel posto è "classe". La classe è la base per l'incapsulamento.
  • Con Java Encapsulation, puoi nascondere (limitare l'accesso) ai membri dei dati critici nel tuo codice, migliorando la sicurezza
  • Come discusso in precedenza, se un membro dati viene dichiarato "privato", è possibile accedervi solo all'interno della stessa classe. Nessuna classe esterna può accedere al membro dati (variabile) di un'altra classe.
  • Tuttavia, se hai bisogno di accedere a queste variabili, devi usare i metodi pubblici "getter" e "setter" .