Junior
Cosa include l'incapsulamento oltre alla nascondere i dati?
sobes.tech AI
Risposta dell'AI
Oltre a nascondere i dati (nascondere l’implementazione interna dell’oggetto dal mondo esterno), l’incapsulamento include:
- L’unificazione dei dati e dei metodi che lavorano con questi dati in un unico oggetto. Questo crea unità di programma autosufficienti.
- Il controllo dell’accesso ai dati. Con i modificatori di accesso (
public,protected,private) si determina come altri oggetti possono interagire con lo stato interno dell’oggetto. Questo permette di garantire l’integrità dei dati e prevenire modifiche errate. - La riduzione della coesione. Un alto livello di incapsulamento favorisce che le modifiche all’interno di un oggetto abbiano un impatto minimo su altre parti del sistema.
Esempio:
<?php
class BankAccount {
private $balance; // Nascondiamo i dati
public function __construct($initialBalance) {
if ($initialBalance >= 0) {
$this->balance = $initialBalance;
} else {
$this->balance = 0;
}
}
public function deposit($amount) {
if ($amount > 0) {
$this->balance += $amount; // I metodi lavorano con i dati
}
}
public function withdraw($amount) {
if ($amount > 0 && $amount <= $this->balance) {
$this->balance -= $amount; // Controllo di accesso e integrità
return true;
}
return false;
}
public function getBalance() {
return $this->balance; // Forniamo accesso controllato
}
}
?>
In questo esempio, la nascondiglio dei dati (private $balance) si combina con la fornitura di metodi pubblici (deposit, withdraw, getBalance) che controllano l’accesso e le modifiche a questi dati. Questo unisce dati e logica in un unico oggetto e garantisce l’incapsulamento.