Sobes.tech
Junior

Какво още включва инкапсулацията освен скриване на данни?

sobes.tech AI

Отговор от AI

Освен скриването на данни (скриване на вътрешната реализация на обекта от външния свят), капсуловката включва:

  • Обединяване на данните и методите, които работят с тези данни, в един обект. Това създава самодостатъчни програмни единици.
  • Контрол на достъпа до данните. С помощта на модификатори за достъп (public, protected, private) се определя как други обекти могат да взаимодействат с вътрешното състояние на обекта. Това позволява да се гарантира цялостността на данните и да се предотвратят неправилни промени.
  • Намаляване на свързаността. Високо ниво на капсуловка допринася за това, че промените вътре в един обект минимално влияят върху други части на системата.

Пример:

<?php

class BankAccount {
    private $balance; // Скриване на данните

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

    public function deposit($amount) {
        if ($amount > 0) {
            $this->balance += $amount; // Методи работят с данните
        }
    }

    public function withdraw($amount) {
        if ($amount > 0 && $amount <= $this->balance) {
            $this->balance -= $amount; // Контрол на достъпа и цялостност
            return true;
        }
        return false;
    }

    public function getBalance() {
        return $this->balance; // Предоставяме контролирана достъп
    }
}

?>

В този пример скриването на данните (private $balance) се комбинира с предоставянето на публични методи (deposit, withdraw, getBalance), които контролират достъпа и промените върху тези данни. Това обединява данните и логиката в един обект и гарантира капсуловката.