Javascript OOP
Tags: javascript, oop, aripovweb
Published: 2024-07-06 22:55:49

**JavaScript and Object-Oriented Programming**

Obyektga yo'naltirilgan dasturlash OOP - bu dasturiy ta'minotni loyihalash va rivojlantirishda keng qo'llaniladigan yondashuv bo'lib, u ma'lumotlar va kodlarni obyektlar ko'rinishida tashkil etish orqali amalga oshiriladi. JavaScript ham OOP usullarini qo'llab-quvvatlaydi.Ob'ektga yo'naltirilgan dasturlash yoki OOP zamonaviy ilovalarni ishlab chiqish paradigmasi bo'lib, Java, C# yoki JavaScript kabi asosiy tillar tomonidan qo'llab-quvvatlanadi.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v5uljvgzmg1r80vqwfvt.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ulwii1k0n3c2g2bv7i0y.png)

Oddiy misol JavaScript OOP ning asosiy tamoyillarini qanday amalga oshirishini ko'rishga yordam beradi. Savatingizga mahsulotlarni qo'yish va keyin to'lashingiz kerak bo'lgan umumiy narxni hisoblab chiqadigan xarid qilish holatini ko'rib chiqing. Agar siz JavaScript-dagi bilimingizni olsangiz va OOPsiz foydalanish holatini kodlasangiz, u quyidagicha ko'rinadi:

```
const non = {nomi: 'Non', narxi: 1};
const suv = {nomi: 'suv', nsrxi: 0.25};
```


OOP istiqboli yaxshiroq kod yozishni osonlashtiradi, chunki biz ob'ektlarni haqiqiy dunyoda duch kelganimizdek o'ylaymiz. Bizning foydalanish holatimiz mahsulotlar savatini o'z ichiga olganligi sababli, bizda allaqachon ikkita turdagi ob'ektlar mavjud - savat ob'ekti va mahsulot ob'ektlari.

```
const savat = [];
savat.push(non);
savat.push(non);
savat.push(non);
savat.push(suv);
savat.push(suv);
```

bu kod orqali savat nomli o'zgaruvchi ochiladi va maxsulotlar ya'ni non va suv push metodi orqali savat nomli o'zgaruvchiga saqlanadi va savatimizda objectlar mavjud bo'ladi

**class**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/747la06v15udwp32fb0s.png)


JavaScript-da class _sinf_ obyektlarni yaratish va ularni boshqarish uchun qo'llaniladigan yangi sintaksisdir. Classlar ES6 ECMAScript 2015 versiyasidan boshlab qo'llab-quvvatlanadi va bu obyektga yo'naltirilgan dasturlashni amalga oshirishda katta qulaylik yaratadi.

JavaScript-da Class

Class yaratish

```
class Person {
  constructor(name, age, job) {
    this.name = name;
    this.age = age;
    this.job = job;
  }

  // Method
  sayHello() {
    console.log(`Hello, my name is ${this.name}`);
  }
}

// Classdan obyekt yaratish
let person1 = new Person("Alice", 25, "Designer");
person1.sayHello(); // "Hello, my name is Alice"

```

**Konstruktor**

constructor - bu sinfda maxsus metod bo'lib, u yangi obyekt yaratilganda avtomatik ravishda chaqiriladi. Konstruktor orqali obyektning dastlabki qiymatlari o'rnatiladi.

```
class Animal {
  constructor(name, species) {
    this.name = name;
    this.species = species;
  }

  // Method
  speak() {
    console.log(`${this.name} makes a noise.`);
  }
}

let animal1 = new Animal("Lion", "Mammal");
animal1.speak(); // "Lion makes a noise."

```

**Metodlar**

Class ichida metodlar aniqlash juda oson. Faqat metod nomini yozish va uni funksiya kabi belgilash kerak.

```
class Car {
  constructor(brand, model) {
    this.brand = brand;
    this.model = model;
  }

  startEngine() {
    console.log(`${this.brand} ${this.model} engine started.`);
  }
}

let car1 = new Car("Toyota", "Corolla");
car1.startEngine(); // "Toyota Corolla engine started."

```

**Statik Metodlar**

Statik metodlar sinfning o'ziga tegishli bo'lib, ularni sinf nomi orqali chaqirish mumkin, obyektlar orqali emas.

```
class MathUtilities {
  static add(a, b) {
    return a + b;
  }
}

console.log(MathUtilities.add(5, 3)); // 8


```

**Meros olish**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/spo3b7mquc6xpw0n9c7u.png)

extends kalit so'zi orqali bir sinfni boshqa sinfdan meros olish mumkin. super kalit so'zi yordamida esa ota sinfning konstruktorini yoki metodlarini chaqirish mumkin.

```
class Employee extends Person {
  constructor(name, age, job, salary) {
    super(name, age, job); // Ota sinf konstruktorini chaqirish
    this.salary = salary;
  }

  // Method
  displaySalary() {
    console.log(`Salary: ${this.salary}`);
  }
}

let employee1 = new Employee("David", 28, "Developer", 50000);
employee1.sayHello(); // "Hello, my name is David"
employee1.displaySalary(); // "Salary: 50000"

```

JavaScript-da classlar obyektga yo'naltirilgan dasturlashni qulayroq va osonroq amalga oshirish imkonini beradi. Classlar yordamida kodni tartibga solish, qayta foydalanish va kengaytirish osonlashadi. Agar qo'shimcha savollaringiz bo'lsa yoki boshqa mavzular haqida bilmoqchi bo'lsangiz, marhamat, so'rang!