Incapsulamento
L'incapsulamento è fondamentalmente un metodo di organizzazione dei dati. Consiste nell'organizzare dati e metodi sotto forma di classi, in modo che l'intero programma sia essenzialmente basato sulle classi e che i dati e i metodi siano incapsulati all'interno di queste classi. Questo incapsulamento offre un modo per controllare l'accesso allo stato interno di un oggetto, promuovendo la modularità, la manutenibilità e la sicurezza in un sistema software.
Nell'incapsulamento si utilizzano gli Access Modifiers come public
, private
e protected
per nascondere la maggior parte dei campi e dei metodi di una classe ed esporre solo quelli necessari per l'utilizzo dall'esterno.
Poiché la maggior parte dei dati non è direttamente accessibile dall'esterno della classe, si utilizzano getter e setter per accedere o modificare i dati.
Un buon esempio è una classe Customer
che definisce il cliente di una banca:

index.cs
1234567891011121314151617181920212223242526272829303132public class Customer { private double accountBalance; private string customerName; private int pinCode; public Customer(double accountBalance, string customerName, int pinCode) { this.accountBalance = accountBalance; this.customerName = customerName; this.pinCode = pinCode; } public double getBalance(int pinCode) { if (pinCode == this.pinCode) return this.accountBalance; return } public void Deposit(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance += amount; } public void Withdraw(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance -= amount; } }
Nell'esempio sopra, nessun campo è direttamente accessibile o modificabile dall'esterno. Invece, si utilizzano metodi come Deposit
e Withdraw
per modificare il valore quando necessario. Allo stesso modo, per accedere al valore del saldo si utilizza il metodo getBalance
.
L'uso della parola chiave public
è generalmente sconsigliato, salvo quando strettamente necessario.
Per ricordare, nel caso in cui si desideri mantenere un campo inaccessibile dall'esterno della classe ma accessibile dalle classi derivate, è possibile utilizzare il modificatore di accesso protected
.
1. Quale ruolo svolgono i modificatori di accesso nell'incapsulamento in C#?
2. Quale dei seguenti specificatori di accesso dovrebbe essere utilizzato meno frequentemente per preservare l'incapsulamento?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you provide an example of encapsulation in code?
Why is using public fields discouraged in encapsulation?
How do getters and setters improve security?
Awesome!
Completion rate improved to 2.04
Incapsulamento
Scorri per mostrare il menu
L'incapsulamento è fondamentalmente un metodo di organizzazione dei dati. Consiste nell'organizzare dati e metodi sotto forma di classi, in modo che l'intero programma sia essenzialmente basato sulle classi e che i dati e i metodi siano incapsulati all'interno di queste classi. Questo incapsulamento offre un modo per controllare l'accesso allo stato interno di un oggetto, promuovendo la modularità, la manutenibilità e la sicurezza in un sistema software.
Nell'incapsulamento si utilizzano gli Access Modifiers come public
, private
e protected
per nascondere la maggior parte dei campi e dei metodi di una classe ed esporre solo quelli necessari per l'utilizzo dall'esterno.
Poiché la maggior parte dei dati non è direttamente accessibile dall'esterno della classe, si utilizzano getter e setter per accedere o modificare i dati.
Un buon esempio è una classe Customer
che definisce il cliente di una banca:

index.cs
1234567891011121314151617181920212223242526272829303132public class Customer { private double accountBalance; private string customerName; private int pinCode; public Customer(double accountBalance, string customerName, int pinCode) { this.accountBalance = accountBalance; this.customerName = customerName; this.pinCode = pinCode; } public double getBalance(int pinCode) { if (pinCode == this.pinCode) return this.accountBalance; return } public void Deposit(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance += amount; } public void Withdraw(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance -= amount; } }
Nell'esempio sopra, nessun campo è direttamente accessibile o modificabile dall'esterno. Invece, si utilizzano metodi come Deposit
e Withdraw
per modificare il valore quando necessario. Allo stesso modo, per accedere al valore del saldo si utilizza il metodo getBalance
.
L'uso della parola chiave public
è generalmente sconsigliato, salvo quando strettamente necessario.
Per ricordare, nel caso in cui si desideri mantenere un campo inaccessibile dall'esterno della classe ma accessibile dalle classi derivate, è possibile utilizzare il modificatore di accesso protected
.
1. Quale ruolo svolgono i modificatori di accesso nell'incapsulamento in C#?
2. Quale dei seguenti specificatori di accesso dovrebbe essere utilizzato meno frequentemente per preservare l'incapsulamento?
Grazie per i tuoi commenti!