Sobes.tech
Junior

Ce mai include încapsularea în afară de ascunderea datelor?

sobes.tech AI

Răspuns de la AI

Pe lângă ascunderea datelor (ascunderea implementării interne a obiectului de lumea exterioară), încapsularea include:

  • Combinarea datelor și a metodelor care lucrează cu aceste date într-un singur obiect. Acest lucru creează unități de program autonome.
  • Controlul accesului la date. Cu ajutorul modificatorilor de acces (public, protected, private) se determină modul în care alte obiecte pot interacționa cu starea internă a obiectului. Acest lucru permite asigurarea integrității datelor și prevenirea modificărilor incorecte.
  • Reducerea coeziunii. Un nivel ridicat de încapsulare contribuie la faptul că modificările din interiorul unui obiect au un impact minim asupra altor părți ale sistemului.

Exemplu:

<?php

class BankAccount {
    private $balance; // Ascundem datele

    public function __construct($initialBalance) {
        if ($initialBalance >= 0) {
            $this->balance = $initialBalance;
        } else {
            $this->balance = 0;
        }
    }

    public function deposit($amount) {
        if ($amount > 0) {
            $this->balance += $amount; // Metodele lucrează cu datele
        }
    }

    public function withdraw($amount) {
        if ($amount > 0 && $amount <= $this->balance) {
            $this->balance -= $amount; // Controlul accesului și integritatea
            return true;
        }
        return false;
    }

    public function getBalance() {
        return $this->balance; // Oferim acces controlat
    }
}

?>

În acest exemplu, ascunderea datelor (private $balance) se combină cu furnizarea de metode publice (deposit, withdraw, getBalance) care controlează accesul și modificările acestor date. Acest lucru unește datele și logica într-un singur obiect și asigură încapsularea.