Junior
Ką dar apima inkapsuliacija, išskyrus duomenų slėpimą?
sobes.tech AI
Atsakymas iš AI
Be to, duomenų slėpimas (objekto vidinės įgyvendinimo slėpimas nuo išorės), inkapsuliacija apima:
- Duomenų ir su jais dirbančių metodų sujungimas į vieną objektą. Tai sukuria savarankiškas programines vienetas.
- Prieigos kontrolė prie duomenų. Naudojant prieigos modifikatorius (
public,protected,private) nustatoma, kaip kiti objektai gali sąveikauti su objekto vidiniu būsenos. Tai leidžia užtikrinti duomenų vientisumą ir išvengti netinkamų pakeitimų. - Mažinant sujungimą (kohesiją). Aukštas inkapsuliacijos lygis skatina, kad pokyčiai viename objekte minimaliai paveiktų kitus sistemos dalis.
Pavyzdys:
<?php
class BankAccount {
private $balance; // Slėpiame duomenis
public function __construct($initialBalance) {
if ($initialBalance >= 0) {
$this->balance = $initialBalance;
} else {
$this->balance = 0;
}
}
public function deposit($amount) {
if ($amount > 0) {
$this->balance += $amount; // Metodai dirba su duomenimis
}
}
public function withdraw($amount) {
if ($amount > 0 && $amount <= $this->balance) {
$this->balance -= $amount; // Prieigos kontrolė ir vientisumas
return true;
}
return false;
}
public function getBalance() {
return $this->balance; // Teikiame kontroliuojamą prieigą
}
}
?>
Šiame pavyzdyje duomenų slėpimas (private $balance) derinamas su viešųjų metodų (deposit, withdraw, getBalance) teikimu, kurie kontroliuoja prieigą ir pakeitimus prie šių duomenų. Tai sujungia duomenis ir logiką į vieną objektą ir užtikrina inkapsuliaciją.