Incapsulamento in Java - Come padroneggiare gli OOP con l'incapsulamento?



Questo articolo sull'incapsulamento in Java ti aiuterà a comprendere i concetti fondamentali di nascondere i dettagli di implementazione insieme a vari semplici esempi.

La programmazione orientata agli oggetti o meglio conosciuta come OOP è uno dei principali pilastri di Java che ha sfruttato la sua potenza e facilità d'uso. Per diventare uno sviluppatore Java professionista, devi ottenere un controllo impeccabile sui vari piace , Astrazione , Incapsulamento e polimorfismo. Per mezzo di questo articolo, ti fornirò una panoramica completa di uno dei concetti più importanti di OOP, ovvero l'incapsulamento in Java e come viene ottenuto.

Di seguito sono riportati gli argomenti di cui parlerò in questo articolo:





Puoi anche passare attraverso questa registrazione di dove puoi capire gli argomenti in modo dettagliato con esempi.



Introduzione all'incapsulamento

L'incapsulamento si riferisce al raggruppamento dei dati in una singola unità. È il meccanismo che lega il codice e i dati che manipola. Un altro modo di pensare all'incapsulamento è che si tratta di uno scudo protettivo che impedisce l'accesso ai dati dal codice al di fuori di questo scudo. In questo, le variabili oi dati di un file è nascosto da qualsiasi altra classe ed è possibile accedervi solo tramite qualsiasi funzione membro della propria classe in cui sono dichiarati.

Ora, prendiamo l'esempio di una capsula medica, dove il farmaco è sempre al sicuro all'interno della capsula. Allo stesso modo, attraverso l'incapsulamento, i metodi e le variabili di una classe sono ben nascosti e sicuri.



Incapsulamento - Incapsulamento in Java-EdurekaL'incapsulamento in Java può essere ottenuto tramite:

  • Dichiarare le variabili di una classe come private.
  • Fornire metodi setter e getter pubblici per modificare e visualizzare i valori delle variabili.

Ora, diamo un'occhiata al codice per ottenere una migliore comprensione dell'incapsulamento:

public class Student {private String name public String getName () {return name} public void setName (String name) {this.name = name}} class Test {public static void main (String [] args) {Student s = new Student () s.setName ('Harry Potter') System.out.println (s.getName ())}}

Come puoi vedere nel codice sopra, ho creato una classe Studente che ha un privato nome . Successivamente, ho creato un getter e un setter per ottenere e impostare il nome di uno studente. Con l'aiuto di questi metodi, qualsiasi classe che desideri accedere alla variabile name deve farlo usando questi metodi getter e setter.

Ora vediamo un altro esempio e comprendiamo in profondità l'incapsulamento. In questo esempio, la classe Car ha due campi –name e topSpeed. Qui, entrambi sono dichiarati privati, il che significa che non è possibile accedervi direttamente al di fuori della classe. Abbiamo alcuni metodi getter e setter come getName, setName, setTopSpeed ​​ecc. E sono dichiarati pubblici. Questi metodi sono esposti agli 'estranei' e possono essere utilizzati per modificare e recuperare i dati dall'oggetto Car. Abbiamo un metodo per impostare la velocità massima del veicolo e due metodi getter per recuperare il valore della velocità massima in MPH o KMHt. Quindi, fondamentalmente, questo è ciò che fa l'incapsulamento: nasconde l'implementazione e ci dà i valori che vogliamo. Ora, diamo un'occhiata al codice qui sotto.

java parse string fino ad oggi
pacchetto Edureka public class Car {private String name private double topSpeed ​​public Car () {} public String getName () {return name} public void setName (String name) {this.name = name} public void setTopSpeed ​​(double speedMPH) {topSpeed = speedMPH} public double getTopSpeedMPH () {return topSpeed} public double getTopSpeedKMH () {return topSpeed ​​* 1.609344}}

Qui, il programma principale crea un oggetto Car con un determinato nome e utilizza il metodo setter per memorizzare la velocità massima per questa istanza. In questo modo, possiamo facilmente ottenere la velocità in MPH o KMH senza preoccuparci di come la velocità viene convertita nella classe Auto.

package Edureka public class Esempio {public static void main (String args []) Car car = new Car () car.setName ('Mustang GT 4.8 litri V8') car.setTopSpeed ​​(201) System.out.println (car. getName () + 'la velocità massima in KMH è' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'la velocità massima in KMH è' + car.getTopSpeedKMH ())

So, questo è il modo in cui è possibile ottenere l'incapsulamento in Java. Ora, andiamo oltre e vediamo perché abbiamo bisogno dell'incapsulamento.

Perché abbiamo bisogno dell'incapsulamento in Java?

L'incapsulamento è essenziale in Java perché:

  • Controlla la modalità di accessibilità dei dati
  • Modifica il codice in base ai requisiti
  • Ci aiuta a creare una coppia libera
  • Raggiunge la semplicità della nostra applicazione
  • Consente inoltre di modificare la parte del codice senza interrompere altre funzioni o codici presenti nel programma

Consideriamo ora un piccolo esempio che illustra la necessità di incapsulamento.

class Student {int id String name} public class Demo {public static void main (String [] args) {Student s = new Student () s.id = 0 s.name = '' s.name = null}}

Nell'esempio precedente, contiene due variabili di istanza come modificatore di accesso. Quindi qualsiasi classe all'interno dello stesso pacchetto può assegnare e modificare i valori di quelle variabili creando un oggetto di quella classe. Pertanto, non abbiamo il controllo sui valori memorizzati nella classe Student come variabili. Per risolvere questo problema, incapsuliamo la classe Student.

Quindi, questi erano i pochi indicatori che descrivono la necessità dell'incapsulamento. Vediamo ora alcuni vantaggi dell'incapsulamento.

Vantaggi dell'incapsulamento

    • Dati nascosti: Qui, un utente non avrà idea dell'implementazione interna della classe. Anche l'utente non sarà a conoscenza di come la classe memorizza i valori nelle variabili. Sarà solo consapevole del fatto che stiamo passando i valori a un metodo setter e le variabili vengono inizializzate con quel valore.
    • Maggiore flessibilità: Qui possiamo rendere le variabili della classe di sola lettura o di sola scrittura a seconda delle nostre esigenze. Nel caso in cui desideri rendere le variabili di sola lettura, dobbiamo omettere i metodi setter come setName (),setAge() ecc. o se desideriamo rendere le variabili di sola scrittura, dobbiamo omettere i metodi get come getName (), getAge () ecc. dal programma sopra.
    • Riusabilità: Migliora anche la riutilizzabilità e facilità di modifica con nuovi requisiti.

Ora che abbiamo compreso i fondamenti dell'incapsulamento, entriamo nell'ultimo argomento di questo articolo e comprendiamo l'incapsulamento in dettaglio con l'aiuto di un esempio in tempo reale.

Un esempio di incapsulamento in tempo reale

Consideriamo un esempio televisivo e comprendiamo come i dettagli di implementazione interna siano nascosti alla classe esterna.Fondamentalmente, in questo esempio, stiamo nascondendo i dati del codice interno, cioè i circuiti dal mondo esterno dalla copertina. Ora in , questo può essere ottenuto con l'aiuto di modificatori di accesso. I modificatori di accesso impostano l'accesso o il livello di una classe, le variabili dei costruttori, ecc. Come puoi vedere nel codice seguente, ho usato il modificatore di accesso privato per limitare il livello di accesso della classe. Le variabili dichiarate come private sono accessibili solo all'interno della classe Television.

public class Television {private double width private double height private double Screensize private int maxVolume print int volume private boolean power public Television (double width, double height, double screenSize) {this.width this.height this.screenSize = ScreenSize} public double channelTuning (int channel) {switch (channel) {case1: return 34.56 case2: return 54.89 case3: return 73.89 case1: return 94.98} return 0} public int diminuzioneVolume () {if (0volume) volume ++ return volume}} class test {public static void main (String args []) {Television t = new Television (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () television. // Genera un errore poiché la variabile è privata e non è possibile accedervi al di fuori della classe}}

Nell'esempio sopra, ho dichiarato tutte le variabili come private e metodi, costruttori e classi come pubbliche. Qui è possibile accedere a costruttori e metodi al di fuori della classe. Quando creoun oggettodella classe Television, può accedere ai metodi e ai costruttori presenti nella classe, mentre le variabili dichiarate con modificatore di accesso privato sono nascoste. Ecco perché quando provi ad accedere larghezza variabile nell'esempio sopra, generaun errore. È così che i dettagli dell'implementazione interna vengono nascosti alle altre classi. Ecco come si ottiene l'incapsulamento in Java.

Questo ci porta alla fine di questo articolo su 'Incapsulamento in Java'. Spero, lo hai trovato informativo e ti ha aiutato ad aggiungere valore alla tua conoscenza. Se desideri saperne di più su Java, puoi fare riferimento al

Ora che hai capito 'cos'è l'incapsulamento in Java', controlla il file da Edureka, una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo. Il corso di formazione e certificazione Java J2EE e SOA di Edureka è progettato per studenti e professionisti che desiderano diventare sviluppatori Java. Il corso è progettato per darti un vantaggio nella programmazione Java e formarti per concetti Java sia di base che avanzati insieme a vari framework Java come Hibernate e Spring.

Hai domande per noi? Si prega di menzionarlo nella sezione commenti di questo blog 'Incapsulamento in Java' e ti risponderemo il prima possibile.