Junior
Mida veel hõlmab inkapsulatsioon andmete varjamise kõrval?
sobes.tech AI
Vastus AI-lt
Lisaks andmete varamisele (objekti sisemise teostuse varamise varjamine väljastpoolt), inkapsulatsioon hõlmab:
- Andmete ja nende töötavate meetodite ühendamist ühte objekti. See loob iseseisvad programmeerimisüksused.
- Juurdepääsukontrolli andmetele. Kasutades juurdepääsurežiime (
public,protected,private), määratakse, kuidas teised objektid saavad suhelda objekti sisemise olekuga. See võimaldab tagada andmete terviklikkuse ja vältida ebaõigeid muudatusi. - Vähendades sidusust (koheensust). Kõrge inkapsulatsiooni tase soodustab seda, et ühe objekti sees tehtavad muudatused mõjutavad minimaalselt teisi süsteemi osi.
Näide:
<?php
class BankAccount {
private $balance; // Andmete varjamine
public function __construct($initialBalance) {
if ($initialBalance >= 0) {
$this->balance = $initialBalance;
} else {
$this->balance = 0;
}
}
public function deposit($amount) {
if ($amount > 0) {
$this->balance += $amount; // Meetodid töötavad andmetega
}
}
public function withdraw($amount) {
if ($amount > 0 && $amount <= $this->balance) {
$this->balance -= $amount; // Juurdepääsukontroll ja terviklikkus
return true;
}
return false;
}
public function getBalance() {
return $this->balance; // Pakume kontrollitud juurdepääsu
}
}
?>
Selles näites on andmete varjamine (private $balance) ühendatud avalike meetoditega (deposit, withdraw, getBalance), mis kontrollivad juurdepääsu ja muudatusi nende andmete üle. See ühendab andmed ja loogika ühte objekti ning tagab inkapsulatsiooni.