Mobil ilovalar ishlab chiqish


Interfeyslarni amalga oshirish



Download 387,44 Kb.
bet20/34
Sana14.01.2022
Hajmi387,44 Kb.
#363624
1   ...   16   17   18   19   20   21   22   23   ...   34
Bog'liq
Dart tili mustaqil ish

Interfeyslarni amalga oshirish

Dart merosi muhim cheklovga ega: biz bir vaqtning o'zida bir nechta sinflardan sinfni meros qilib olmaymiz, masalan, quyidagicha:



1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



class Person{

  

    String name = "";



    void display(){

        print("Name: $name");

    }

}

class Worker{



    String company = "";

    void work(){

        print("Work in $company");

    }


}

class Employee extends Person, Worker{ // Ошибка, множественное наследование не допускается

}


Ushbu muammoni hal qilish uchun Dart interfeyslarni amalga oshiradi. Ba'zi dasturlash tillarida bo'lgani kabi interfeys alohida ob'ekt emas (masalan, C# yoki Java-dagi interfeys turi), balki bir xil sinf ekanligini tushunish muhimdir. Ya'ni Dartdagi sinf bir vaqtning o'zida interfeys vazifasini bajaradi va boshqa sinf bu interfeysni amalga oshirishi mumkin.
Interfeys bu interfeysni amalga oshiradigan sinflar amal qilishi kerak bo'lgan sintaktik shartnomani ifodalaydi. Ya'ni, agar interfeys klassi biron-bir maydon va usullarni aniqlasa, u holda ushbu interfeysni amalga oshiruvchi sinf ushbu maydon va usullarni ham belgilashi kerak.
Interfeyslarni amalga oshirish uchun instruments operatori ishlatiladi:

1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



16

17

18



19

20

21



22

23

24



25

void main (){

     


    Person bob = Employee();

    bob.name = "Bob";

    bob.display();  // Employee name: Bob

}


 

class Person{

  

    String name;



    Person(this.name);

      


    void display(){

        print("Name: $name");

    }

}

 



class Employee implements Person{

 

    String name = "";           // реализация поля name



    // реализация метода display

    void display(){    

        print("Employee name: $name");

    }


}

Bunday holda, Employee klassi Person sinfining interfeysidan foydalanadi (Xodim Personni amalga oshiradi). Person sinfining interfeysidan foydalanish Employee klassi Person sinfida belgilangan barcha maydonlar va usullarni amalga oshirishi kerakligini anglatadi. Shuning uchun, Employee klassi nom maydonini va ko'rsatish usulini belgilashi kerak. Aslida, interfeys - bu sinfda ma'lum funksiyalarni o'z ichiga olishi kerak bo'lgan shartnoma (bu holda, nom maydoni va ko'rsatish usuli). Agar Employee klassi Person sinfidagi barcha maydonlar va usullarni aniqlamagan bo'lsa, biz xatoga yo'l qo'yamiz.

Biroq, yuqoridagi misollardan ko'rish mumkinki, konstruktorni amalga oshirish uchun Employee klassi talab qilinmaydi va umuman konstruktorni aniqlamasligi mumkin.


Xuddi shunday, biz bir vaqtning o'zida bir nechta interfeyslarni amalga oshirishimiz mumkin:

1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



16

17

18



19

20

21



22

23

24



25

26

27



28

29

30



31

32

33



34

35

36



37

void main (){

     


    Employee bob = Employee("Bob", "Google");

    bob.display();  // Employee name: Bob

    bob.work();     // Employee works in Google

}


 

class Person{

  

    String name;



    Person(this.name);

      


    void display(){

        print("Name: $name");

    }

}

class Worker{



    String company = "";

    void work(){

        print("Work in $company");

    }


}

class Employee implements Person, Worker{

 

    String name;            // реализация поля name из Person



    String company;         // реализация поля company из Worker

    // реализация метода display Person

    void display(){    

        print("Employee name: $name");

    }

    // реализация метода work из Worker



    void work(){

        print("Employee works in $company");

    }

     


    Employee(this.name, this.company);

}


Bunday holda, Employee klassi Person va Worker sinflarining interfeysini amalga oshiradi.
Sinf merosi va interfeysni amalga oshirish

Meros olishda olingan sinfdan asosiy sinfdagi bir xil maydonlar va usullarni belgilash talab qilinmaydi (mavhum usullardan tashqari). Agar asosiy sinf konstruktorni aniqlasa, hosila sinf o'zining konstruktorini belgilashi kerak, bu esa asosiy sinf konstruktorini chaqiradi. Olingan sinfda biz super kalit so'z yordamida asosiy sinfni amalga oshirishga murojaat qilishimiz mumkin. Bir nechta meros qo'llab-quvvatlanmaydi.

Interfeysni amalga oshirishda olingan sinf interfeys sinfida belgilangan barcha maydonlar va usullarni belgilashi kerak. Agar asosiy sinfda konstruktor bo'lsa, hosila sinf o'z konstruktorini belgilashi shart EMAS. Olingan sinfda biz super kalit so'z yordamida amalga oshirilgan interfeysning usullariga kira olmaymiz. Bir nechta interfeys ilovalari qo'llab-quvvatlanadi.


Download 387,44 Kb.

Do'stlaringiz bilan baham:
1   ...   16   17   18   19   20   21   22   23   ...   34




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish