Incapsulamento nel Java

In cosa consiste l'incapsulamento Java?

Incapsulamento nel Java è un meccanismo per racchiudere variabili (dati) e metodi (codice) insieme come una singola unità. È il processo di nascondere i dettagli informativi 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.

Clicchi Qui. se il video non è accessibile

Impara l'incapsulamento in Java con l'esempio

Per comprendere in dettaglio cos'è l'incapsulamento, si consideri la seguente classe di conto bancario con i metodi di deposito e di visualizzazione del 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 
        } else
            account_balance = account_balance + a;
    }
}

Supponiamo che un hacker sia riuscito ad accedere al codice del tuo conto bancario. Ora, cerca di 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 (diciamo -100) sul tuo conto bancario manipolando il codice.

Incapsulamento nel Java

Ora, la domanda è: E 'possibile? Indaghiamo. Di solito, una variabile in una classe è impostata come "privata" come mostrato di seguito. È possibile accedervi solo con i metodi definiti nella classe. Nessun'altra classe o oggetto può accedervi.

Incapsulamento nel Java

Se un membro dati è privato, significa che è possibile accedervi solo all'interno della stessa classe. Nessuna classe esterna può accedere al membro dati privato o alla variabile di un'altra classe. Quindi nel nostro caso l'hacker non può depositare l'importo -100 sul tuo account.

Incapsulamento nel Java

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

Incapsulamento nel Java

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

Incapsulamento nel Java

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

Incapsulamento nel Java

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

Dati nascosti Java

Dati nascosti Java nasconde le variabili di una classe ad altre classi. Vi si può accedere 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 di dati correlati. Per ottenere un grado minore di incapsulamento in Java, puoi usare modificatori come "protected" o "public". Con l'incapsulamento, gli sviluppatori possono modificare facilmente una parte del codice senza influenzare le altre.

Entrano Getter e Setter Java

Entrano Getter e Setter Java sono due metodi convenzionali utilizzati per recuperare e aggiornare i valori di una variabile. Vengono utilizzati principalmente 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 dei metodi getter e setter:

class Account{ 
private int account_number;
private int account_balance; 
    // getter method
	public int getBalance() {
        return this.account_balance;
    }
    // setter method
	public 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 Astrazione. Studiamo-

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

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

Vantaggi dell'incapsulamento in Java

  • L'incapsulamento vincola i dati con le relative funzionalità. Qui le funzionalità significano “metodi” e i dati significano “variabili”
  • Quindi manteniamo variabili e metodi in un unico posto. Quel posto è “di classe”. La classe è la base per l'incapsulamento.
  • Con Java Incapsulamento: puoi nascondere (limitare l'accesso) ai dati critici nel tuo codice, migliorando la sicurezza
  • Come abbiamo discusso in precedenza, se un membro dati è dichiarato "privato", allora è possibile accedervi solo all'interno della stessa classe. Nessuna classe esterna può accedere al membro dati (variabile) di un'altra classe.
  • Tuttavia, se è necessario accedere a queste variabili, è necessario utilizzare “getter” e “setter” pubblici metodi.

Riassumi questo post con: