Sobes.tech
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.