Sobes.tech
Junior

Co jeszcze obejmuje enkapsulacja oprócz ukrywania danych?

sobes.tech AI

Odpowiedź od AI

Oprócz ukrywania danych (ukrywania wewnętrznej implementacji obiektu przed światem zewnętrznym), enkapsulacja obejmuje:

  • Łączenie danych i metod, które z tymi danymi pracują, w jeden obiekt. Tworzy to samodzielne jednostki programowe.
  • Kontrolę dostępu do danych. Za pomocą modyfikatorów dostępu (public, protected, private) określa się, jak inne obiekty mogą wchodzić w interakcję z wewnętrznym stanem obiektu. Pozwala to zapewnić integralność danych i zapobiec nieprawidłowym zmianom.
  • Zmniejszenie spójności (cohesion). Wysoki poziom enkapsulacji sprzyja temu, że zmiany wewnątrz jednego obiektu mają minimalny wpływ na inne części systemu.

Przykład:

<?php

class BankAccount {
    private $balance; // Ukrywamy dane

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

    public function deposit($amount) {
        if ($amount > 0) {
            $this->balance += $amount; // Metody pracują z danymi
        }
    }

    public function withdraw($amount) {
        if ($amount > 0 && $amount <= $this->balance) {
            $this->balance -= $amount; // Kontrola dostępu i integralność
            return true;
        }
        return false;
    }

    public function getBalance() {
        return $this->balance; // Zapewniamy kontrolowany dostęp
    }
}

?>

W tym przykładzie ukrywanie danych (private $balance) łączy się z udostępnianiem publicznych metod (deposit, withdraw, getBalance), które kontrolują dostęp i zmiany tych danych. To łączy dane i logikę w jeden obiekt i zapewnia enkapsulację.