Junior
Маънои инкапсулятсия дар барномасозӣ чист?
sobes.tech AI
Ҷавоб аз AI
Программистикада инкапсуляциянинг маъноси маълумотлар ва улар билан ишлаш усулларини бирлаштириб, уларни ягона объектда (объект) жамлаш ва ички амалга оширишни ташқи дунёдан яширишдир. Бу маълумотларга киришни назорат қилиш, уларни нотўғри ўзгартиришдан ҳимоя қилиш ва кодни сақлашни соддалаштириш имконини беради, уни модуллаштирилган ва мослашувчан қилади.
Инкапсуляциянинг асосий афзалликлари:
- Маълумотларни яшириш: Объектнинг ички ҳолати фақат белгиланган методлар (геттерлар ва сеттерлар) орқали кириш мумкин.
- Киришни назорат қилиш: Маълумотларни ўзгартиришда валидатсия логикасини қўллаш мумкин.
- Байланишни камайтириш: Бир объектнинг ички амалга оширишдаги ўзгаришлар, агар ўзаро алоқа интерфейси ўзгартирилмаса, бошқа объектларни ўзгартиришни талаб қилмайди.
- Тўғрилашни яхшилаш: Код янада тушунарли ва ўзгартириш осон бўлади.
JavaScriptда мисол:
class User {
constructor(name, age) {
this._name = name; // Шахсий хусусият (анъанавий, JSда мажбурий эмас, шахсий майдонларгача)
this._age = age;
}
getName() { // номи учун геттер
return this._name;
}
getAge() { // ёш учун геттер
return this._age;
}
setAge(newAge) { // ёш учун сеттер ва валидатсия
if (newAge > 0) {
this._age = newAge;
} else {
console.error("Ёш нолдан катта бўлиши керак.");
}
}
}
const user = new User("Ivan", 30);
console.log(user.getName()); // Геттер орқали кириш: Ivan
user.setAge(31); // Валидатсия билан сеттер орқали ўзгартириш
console.log(user.getAge()); // Геттер орқали кириш: 31
user.setAge(-5); // Нотўғри ўзгартиришга уринишда хато