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
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!