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