← Maqolalarga qaytish
JavaScript’da Obyektga Yo‘naltirilgan Dasturlash (OOP)
2 min read

JavaScript’da Obyektga Yo‘naltirilgan Dasturlash (OOP)


Obyektga Yo‘naltirilgan Dasturlash (OOP) kompyuter dasturlarini obyektlar atrofida shakllantiruvchi mashhur paradigmadir. C++ yoki Java kabi tillarda OOP juda qat’iy va an’anaviy bo‘lsa, JavaScript’da u biroz o‘ziga xos va egiluvchan ishlaydi.

JavaScript asli Prototype-based (prototipga asoslangan) til hisoblanadi. Keling, JavaScript’da OOP’ning asosiy ustunlarini ko‘rib chiqamiz.

1. Klasslar va Obyektlar

ES6 (ECMAScript 2015) bilan JavaScript’ga class kalit so‘zi kirib keldi. Bu an’anaviy tillardan kelgan dasturchilar uchun JavaScript’da OOP ni tushunishni ancha osonlashtirdi. Biroq esda tutish kerakki, orqa fonda bu baribir prototiplar orqali ishlaydi (“syntactic sugar”).

class Avtomobil {
  constructor(rusum, yil) {
    this.rusum = rusum;
    this.yil = yil;
  }

  haydash() {
    console.log(`${this.rusum} harakatlanmoqda...`);
  }
}

const meningMashinam = new Avtomobil("Tesla Model 3", 2023);
meningMashinam.haydash(); // "Tesla Model 3 harakatlanmoqda..."

2. Inkapsulyatsiya (Encapsulation)

Inkapsulyatsiya obyektning ichki holatini va ma’lumotlarini tashqi ta’sirlardan yashirishni anglatadi. Yaqinda JavaScript’ga haqiqiy xususiy (private) maydonlar qo‘shildi (# belgisi yordamida).

class BankHisobi {
  #balans = 0; // Private xususiyat

  pulQoyish(summa) {
    this.#balans += summa;
  }

  balansniKorish() {
    return this.#balans;
  }
}

const hisob = new BankHisobi();
hisob.pulQoyish(100);
// console.log(hisob.#balans); // XATO! Private maydonga tashqaridan ruxsat yo‘q.

3. Vorislik (Inheritance)

Bir sinf boshqa sinfdan xususiyat va metodlarni meros qilib olishi mumkin. Bu takroriylikni oldini oladi.

class Hayvon {
  constructor(ism) {
    this.ism = ism;
  }
  ovozChiqarish() {
    console.log("Ovoz...");
  }
}

class It extends Hayvon {
  ovozChiqarish() {
    console.log("Vov-vov!");
  }
}

const oqtopoz = new It("Oqtopoz");
oqtopoz.ovozChiqarish(); // "Vov-vov!"

4. Polimorfizm (Polymorphism)

Polimorfizm bir xil metod turli obyektlarda turlicha xatti-harakat qilishini anglatadi. Yuqoridagi misolda Hayvon va It sinflarida ovozChiqarish metodi bor, lekin ularning ishlashi turlicha. Voris sinf asosiy sinfning metodini “ustidan yozadi” (override qiladi).

5. Prototip Zanjiri (Prototype Chain)

JavaScript’dagi barcha obyektlar ichki [[Prototype]] xususiyatiga ega va ular boshqa obyektdan (prototipidan) meros oladi. Agar siz obyektdan biror xususiyatni qidirsangiz va u topilmasa, JavaScript uni shu obyektning prototipidan izlashni davom ettiradi. Bu izlash zanjir oxiriga (odatda null ga) yetguncha davom etadi.

Bu tushuncha JavaScript’ni boshqa OOP tillardan ajratib turuvchi asosiy mexanizmdir.

Xulosa

JavaScript’da OOP imkoniyatlari hozirda ancha mukammal. Garchi u “prototip” modeliga asoslangan bo‘lsa-da, klasslar sintaksisi yordamida toza, tushunarli va saqlashga qulay, katta miqyosdagi ilovalarni yaratish mumkin.


Fikr-mulohazalar