JavaScript da OOP nima ?

JavaScript da OOP nima ?


Bugungi o'rganadiganlarimiz:


1. OOP (Object Oriented Programming) nima  ?
2. JavaScript da OOP
3. Class yordamida object yaratish 
4. Encapsulation (Qobiqlash)
5. Abstraction (Tarkiblash)
6. Inheritance (Meroslash)
7. Polymorphism (Turlichalash)
8. Obyekt xususiyatlari
9. Sof Funksiyalar
10. To'plam

1. OOP (Object Oriented Programming) nima ?

Object Oriented Programming (Obyektga Yo'naltirilgan Dasturlash) bu dasturiy ta'minotni funksiyalar va mantiqdan ko'ra ma'lumotlar yoki obyektlar atrofida tashkil etadigan kompyuter dasturlash modeli. OOP shartlar, o'zgaruvchilar va funksiyalar haqida o'ylashni to'xtatadi.OOP uyushqoq, o'zini o'zi ta'minlaydigan obyektlar nuqtai nazaridan o'ylashni boshlashga majbur qiladi.

Nima uchun bizga OOP kerak ? OOP da yozilgan dasturdagi xatolarni topish ularni to'g'rilash, funksiyalar va o'zgaruvchilarni to'g'rilashdan ko'ra osonroq. Shuningdek, biz qobiq va meros kabi usullardan foydalanishimiz mumkin.

2. JavaScript da OOP

Boshqa dasturlash tillari kabi JavaScript da ham OOP mavjud, biz obyektlar yasaymiz va ularni ishlatamiz. Har qanday ma'lumot obyekt holatida kelishi mumkin, misol uchun sizning noutbukingiz haqidagi ma'lumotni ham obyekt ko'rinishida yaratish mumkin.

JavaScript bu Obyekt xususiyatlariga asoslangan til, bunday tillarda obyekt xususiyatlarga qobiqlanadi.

Biz eng ko'p ishlatadigan OOP da uchraydigan tushunchalar ro'yhat:

Object, property, and method

Class

Encapsulation

Abstraction

Reusability/inheritance

Polymorphism

Association

Aggregation

Composition

3. Class yordamida object yaratish

Biz JavaScript da Class orqali obyekt yaratish misolini ko'rishimiz mumkin:

class Person {
    constructor(name, age, designation){
        this.name = name
        this.age = age
        this.designation = designation
        this.getName = function() {
            console.log(“Name is:”, this.name)
        }
    }
}
const personObject = new Person(‘Abdullo’, 20, ‘Web Developer’)
personObject.getName()
// Name is: Abdullo
console.log(“Age is”, personObject.age)
// Age is 20
console.log(“Designation is:”, personObject.designation)
// Designation is: Web Developer

image.png

Biz birinchi bo'lib Person degan Class da obyekt yaratdik va unga constructor orqali funksiyalar, qiymatlar berdik va biz bir qancha xususiyatlar yaratdik. Keyin esa Person obyektini chaqirish uchun personObject degan o'zgaruvchi yasadik va new kalit so'zi orqali Obyektni chaqirdik. Qiymatlarni olib kelish uchun personObject.qiymat qilib qiymatlarni chaqirdik.

4. Encapsulation (Qobiqlash)

Qobiqlashni o'rganishdan oldin biz uni nima ekanligini bilib olishimiz lozim. Qisqa qilib aytganda Qobiqlash ma'lumot yoki xabarni qobiqlaydi (ko'rsatmaydi). Xususiy o'zgaruvchilar joriy funksiyada ishlaydi ammo tashqarida ishlamaydi. Qisqa qilib aytganda Funksiya ichida yaratilgan har qanday o'zgaruvchi tashqaridan chaqirib bo'lmaydi.

Misol uchun:

const Person = function(_name, _title) {
    const name = _name
    const title = _title
    return {
        details : function() {
            console.log(`${name} is a ${title}.`)
        }
    }
}
const person = new Person(‘Abdullo’, ‘Web developer’)
person.details()
// Abdullo is a Web developer.

image.png

Bu misolda name va title faqatgina funksiya ichida ko'rinadi, boshqa yerlarda ishlatish mumkin emas. details metodi chaqiruvchi uchun ko'rinadi. Bu misol bilan biz Person obyekti qobiqlangan deya olamiz.

5. Abstraction (Tarkiblash)

Tarkiblash bajariluvchi funksiyalarni berkitadi. Xabarlarni berkitadi va faqat ma'lumotlarni chaqiruvchiga ko'rsatadi.

Keling shuni misolda ko'rsak

const Person = function(_name, _title) {
    const name = _name
    const title = _title
    //public
    this.getName = function() {
        return name
    }
    //private
    const details = function() {
        return `${name} is a ${title}.`
    }
    //public
    this.getDetails = function() {
        return details()
    }
}
const person = new Person(‘Usmon’, ‘Web developer’);
console.log( person.getName() )
//Usmon
person.details();
// TypeError: person.details is not a function
console.log( person.getDetails() )
// Usmon is a Web developer.

image.png

Bu yerda biz faqatgina public o'zgaruvchilarni chaqira olamiz agarda biz private o'zgaruvchilarni chaqirsak bizga xatolik chiqariladi. Ishonamanki siz Abstraction yo'lini tushundingiz.

Hayotdan misol qiladigan bo'lsak siz otangizdan pul olsangiz, Otangiz sizga faqat pulni beradi siz pulni qayerdan qanday kelayotganini bilmaysiz, abstraction ham huddi shunday.

6. Inheritance (Meroslash)

Meroslash bu qayta o'sha funksiyani ishlata olish degani. U bizga yasalgan class yordamida yana bir yangi class yaratish imkonini beradi. Bu degani Parent class ichida biz child class yasay olamiz degani.

Keling shuni misolda ko'raylik:

image.png

7. Polymorphism (Turlichalash)

Polymorphism degani bu ko'pgina shakllar degan ma'noni beradi. Biz Polymorphism orqali ko'pgina obyektlar va datalar bilan shug'ullana olamiz. Biz bemalol ularni chaqirishimiz ham mumkin.

Keling shuni misolda ko'raylik:

image.png

8.Obyekt xususiyatlari

Prototip vositalari - bu konstruktor funktsiyasiga yangi usullar / xususiyatlarni qo'shish uchun soddalashtirilgan yondashuv. Konstruktor funktsiyasidan yaratilgan har bir obyektda "prototip" xususiyati sifatida tanilgan qo'shimcha yashirin xususiyat mavjud.

image.png

9.Sof Funksiyalar

Sof funktsiya - bu uning doirasidan tashqaridagi o'zgaruvchilar / holat / ma'lumotlarni mutatsiyaga olib keladigan funktsiya. Kontseptsiyani tushunish uchun misolni ko'rib chiqaylik:

image.png

10. Stack (To'plam)

Stek - bu ma'lumotlar tuzilishi. Bu dasturlash uchun formuladir. Buning ortidan "Oxirgi kirish birinchi chiqish" (LIFO) keladi. Hozirgi kunda JavaScript kodni yanada samarali bajarish uchun foydalanadi.