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), които контролират достъпа и промените върху тези данни. Това обединява данните и логиката в един обект и гарантира капсуловката.