Sobes.tech
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) ки дастрасӣ ва тағиротҳоро назорат мекунанд, ҳамҷоя карда шудааст. Ин маълумот ва логикаро дар як объект муттаҳид мекунад ва капсулкуниро таъмин мекунад.