Sobes.tech
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.