Mobil ilovalar ishlab chiqish


Operatorlarni bekor qilish



Download 387,44 Kb.
bet25/34
Sana14.01.2022
Hajmi387,44 Kb.
#363624
1   ...   21   22   23   24   25   26   27   28   ...   34
Bog'liq
Dart tili mustaqil ish

Operatorlarni bekor qilish

Dart bizga bir qator o'rnatilgan operatorlarning xatti-harakatlarini o'zgartirishga imkon beradi, bu bizga ob'ektlar bilan ishlashning qo'shimcha imkoniyatlaridan foydalanish imkonini beradi. Masalan, bizda quyidagi Counter klassi bor deylik:



1

2

3



4

5


class Counter{

     


    int value;

    Counter(this.value);

}


Bu sinf ba'zi hisoblagichni ifodalaydi, uning qiymati qiymat maydonida saqlanadi.
Aytaylik, bizda Counter sinfining ikkita ob'ekti bor - standart taqqoslash va qo'shish operatsiyalari yordamida qiymat maydoniga qarab solishtirmoqchi yoki qo'shmoqchi bo'lgan ikkita hisoblagich:

1

2

3



4

5


Counter counter1 = Counter(5);

Counter counter2 = Counter(15);

Counter counter3 = counter1 + counter2;

 

bool isFirstGreater = counter1 > counter2;



Lekin sukut bo'yicha Counter ob'ektlari uchun solishtirish ham, qo'shish ham mavjud emas. Ushbu operatsiyalar int kabi ibtidoiy turdagi ob'ektlar bilan ishlatilishi mumkin. Ammo Dart ishlab chiquvchi tomonidan belgilangan sinflar ob'ektlarini qanday qo'shishni bilmaydi. Buning uchun esa tegishli operatorlarni qayta belgilashimiz kerak.
Operatorlarni bekor qilish sinfdagi maxsus usulni aniqlashdan iborat bo'lib, biz operatorni aniqlamoqchi bo'lgan ob'ektlar uchun:

1

возвращаемый_тип operator оператор(параметр) {  }

Qaytish turi biz ob'ektlarni olishni istagan turni ifodalaydi. Masalan, ikkita Counter ob'ektini qo'shish natijasida biz yangi Counter ob'ektini olishni kutamiz. Va ikkalasini solishtirish natijasida biz bool tipidagi ob'ektni olishni xohlaymiz, bu shartli ifodaning to'g'ri yoki noto'g'ri ekanligini ko'rsatadi. Ammo vazifaga qarab, qaytarish turlari har qanday bo'lishi mumkin. Keyin usul nomi o'rniga operator kalit so'zi va operatorning o'zi mavjud. Va keyin parametr qavs ichida ko'rsatilgan.
Masalan, Counter klassi uchun qo'shish operatorini ortiqcha yuklaymiz:

1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



16

17

18



void main (){

      


    Counter counter1 = Counter(5);

    Counter counter2 = Counter(15);

    Counter counter3 = counter1 + counter2;

    print(counter3.value);  // 20

}

 

class Counter{



     

    int value;

    Counter(this.value);

     


    Counter operator +(Counter otherCounter){

         

        return Counter(this.value + otherCounter.value);

    }


}

qo'shish amalida biz Counter sinfining ikkita ob'ektini qo'shmoqchimiz, keyin operator ushbu sinf ob'ektini parametr sifatida oladi. Va biz qo'shish natijasida yangi Counter ob'ektini olishni xohlayotganimiz sababli, bu sinf qaytish turi sifatida ham ishlatiladi. Ushbu operatorning barcha harakatlari yangi ob'ektni yaratishga qisqartiriladi, uning qiymat maydoni ikkala ob'ektning qiymat maydonining qiymatlarini birlashtiradi.

Shuni ta'kidlash kerakki, biz barcha Dart operatorlarini bekor qila olmaymiz, lekin ulardan faqat ba'zilari, xususan: <+ | []> / ^ [] = <= ~ / & ~> = * << == -% >>


Masalan, biz Counter sinfi uchun> va

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 (){

      


    Counter counter1 = Counter(5);

    Counter counter2 = Counter(15);

     

    bool isFirstGreater = counter1 > counter2;



    print(isFirstGreater);  // false

     


    bool isFirstLess = counter1 < counter2;

    print(isFirstLess); // true

}

 

class Counter{



     

    int value;

    Counter(this.value);

     


    Counter operator +(Counter otherCounter){

         

        return Counter(this.value + otherCounter.value);

    }


     

    bool operator >(Counter otherCounter) => this.value > otherCounter.value;

    bool operator <(Counter otherCounter) => this.value < otherCounter.value;

}


operatsiyalari bool tipidagi qiymatni qaytarganligi sababli, bu erda ham operator aniqlanganda, qaytarish turi bool bo'ladi va operatorning haqiqiy ishi ikkalasining qiymat maydonlari qiymatlarini solishtirishga qisqartiriladi. ob'ektlar.
Yuqoridagi misollarda bir xil turdagi ob'ekt hisoblagich parametr sifatida berilgan bo'lsa-da, bu ixtiyoriy, bizning vazifamizga qarab, parametr har qanday turni ifodalashi mumkin. Masalan, kodni quyidagicha o'zgartiramiz:

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


void main (){

      


    Counter counter1 = Counter(15);

     


    Counter counter2 = counter1 + 25;

    print(counter2.value);  // 40

     

    int diff = counter1 - 7;



    print(diff);    // 8

}

 



class Counter{

     


    int value;

    Counter(this.value);

     

    Counter operator +(int number){



         

        return Counter(this.value + number);

    }

     


    int operator -(int number){

         

        return this.value - number;

    }


}

Qo'shish operatori endi Counter ob'ekti va oddiy raqamni qo'shish imkonini beradi va yangi Counter ob'ektini qaytaradi. Va ayirish operatori Hisoblagichdan raqamni ayirish imkonini beradi va boshqasini qaytaradi - qiymat maydoni va ayirilgan raqam o'rtasidagi farq.


Download 387,44 Kb.

Do'stlaringiz bilan baham:
1   ...   21   22   23   24   25   26   27   28   ...   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