June 26, 2020

TypeScript. #16

Klasslarlarda konstruktorlar

Klass tushunchasi bilan o'tgan darsimizda tanishgan edik. Klassning na'munasi yoki obyekti hosil qilinayotgan paytda unga qiymat berib ketish mumkin. Buni misolda ko'ramiz. O'tgan darsimizdagi kodga o'zgartirish kiritamiz.

1-qadam. Quyidagi kodni yozing.

Avvalgi darsimizda talaba1 obyektini yaratish uchun har bir xossani qaytadan yozib chiqqan edik. Bu misolda esa konstruktordan foydalandik. Konstruktorlar constructor kalit so'zi bilan hosil qilinadi. Obyektdan nechta qiymat qabul qilmoqchi bo'lsak, konstruktorning argumenti ham shuncha bo'lishi kerak. Konstruktor tanasida o'sha argumentlar klassning xossalari bilan ta'minlanadi. Bunda this kalit so'zi shu klassning o'zini ifodalaydi.

Endi talaba1 obyektini yaratamiz va unga qiymat berazmiz. Keyin klass ichidagi metodni chaqiramiz.

2-qadam. Quyidagi kodni yozing

3-qadam. Endi natijani ekranga chiqaramiz:

Interfeyslarni qo'llash

Intrefeys tushunchasi bilan avvalroq tanishgan edik. Interfeyslar obyektlarning xossalari va metodlarini ta'riflab beradi. Lekin ular bilan amallar bajarmaydi.

Agar bir nechta klass bir xil xossa va metodlarga ega bo'lsa, ularni qayta-qayta yozmaslik uchun interfeyslardan foydalanamiz. Ya'ni klasslarda interfeysni qo'llaymiz (implementation qilamiz).

Masalan, quyidagi rasmda Qushlarda uning rangi, qanot oʻlchami va tumshuq oʻlchami har bir qushda boʻlganligi uchun Qush interfeysiga kiritiladi. Lekin Kabutar klassining ham Bulbul klassining ham oʻziga xos xossa va metodlari boʻlishi mumkin.

Buni kod misolida koʻramiz:

1-qadam. Avval IQush nomli interfeys yaratib olamiz:

2-qadam. Kabutar klassini yaratib olamiz

3-qadam. Bulbul klassini yaratib olamiz

4-qadam. Kabutar va Bulbul klasslardan kabutar1 va bulbul1 nomli obyektlar hosil qilamiz va ularning xossalarini JSON formatda chiqaramiz. Keyin har bir klassga tegishli metodni ham chaqiramiz.

5-qadam. Natijani ekranga chiqaramiz:

Menimcha klasslarda interfeyslarni qo'llash tushunarli bo'ldi. Mana shunday deyarli o'xshash klasslar uchraganda, interfeyslardan foydalanishingiz mumkin.

Darsning boshqa qismlari @samtuitsoft kanalida berib boriladi.