Mobil ilovalar ishlab chiqish



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

Statik sinf a'zolari

Oddiy usullar va maydonlardan tashqari, sinfda statik maydonlar, usullar, konstantalar bo'lishi mumkin. Bunday maydonlar, usullar va konstantalarning qiymatlari alohida ob'ektlarga emas, balki butun sinfga tegishli. Statik o'zgaruvchilar, doimiylar va usullarni aniqlash uchun ularni e'lon qilishdan oldin static kalit so'zi ko'rsatiladi.


Statik maydonlar

Statik maydonlar butun sinf holatini saqlaydi. Statik maydon oddiy maydon sifatida aniqlanadi, uning oldiga faqat statik kalit so'z qo'yiladi. Misol uchun, xodimni ifodalovchi Xodimlar sinfini ko'rib chiqing:



1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



16

17

18



19

20

21



22

23

24



void main (){

     


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

    bob.checkAge();

    Employee.retirenmentAge = 65;

    bob.checkAge();

}

class Employee{



     

    String name;

    int age;

    static int retirenmentAge = 60;

     

    Employee(this.name, this.age);



     

    checkAge(){

        if(age >= retirenmentAge){

            print("Пора на пенсию");

        }

        else{

            print("До пенсии еще ${retirenmentAge - age} лет");

        }

    }

}


Xodimlar sinfi ism va yoshni saqlash uchun maydonlarni belgilaydi - har bir xodimning o'z ismi va yoshi bo'lishi mumkin. Bundan tashqari, pensiya yoshi pensiya yoshini saqlash uchun statik maydon belgilangan. Bu ma'lum bir xodimga emas, balki barcha xodimlarga, ya'ni butun Xodimlar sinfiga taalluqlidir, chunki har bir alohida xodim uchun o'z pensiya guruhini yaratish mumkin emas. Keyin, sinfning o'zida biz bu sohadan boshqalar kabi foydalanishimiz mumkin.
Agar biz ushbu maydonga sinfdan tashqarida murojaat qilmoqchi bo'lsak, masalan, uning qiymatini o'zgartirish uchun, u holda sinf nomi mos yozuvlar uchun ishlatiladi:

1

Employee.retirenmentAge = 65;

Statik konstantalar

Agar pensiya yoshini o'zgartirish rejalashtirilmagan bo'lsa, biz uni statik konstanta sifatida belgilashimiz mumkin:



1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



16

17

18



19

20

21



22

23


void main (){

     


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

    bob.checkAge();

    print("Retirenment age: ${Employee.retirenmentAge}");

}

class Employee{



     

    String name;

    int age;

    static const int retirenmentAge = 65;

     

    Employee(this.name, this.age);



     

    checkAge(){

        if(age >= retirenmentAge){

            print("Пора на пенсию");

        }

        else{

            print("До пенсии еще ${retirenmentAge - age} лет");

        }

    }

}


Statik konstantani aniqlash uchun siz static const yoki statik yakuniy ifodadan foydalanishingiz mumkin:

1

2


static const int retirenmentAge = 65;

static final int retirenmentAge = 65;



Statik usullar

Statik usullar ham butun sinf bo'lib, static kalit so'zi bilan prefikslangan. Odatda, statik usullar ob'ektning holatiga yoki harakatiga ta'sir qilmaydigan hisob-kitoblarni amalga oshiradi:



1

2

3



4

5

6



7

8

9



10

11

12



13

void main (){

     


    int a = Operation.sum(3, 5);

    int b = Operation.subtract(15, 7);

    int c = Operation.multiply(3, 5);

    print("a=$a  b=$b  c=$c");  // a=8  b=8  c=15

}

class Operation{



      

    static int sum(int x, int y) => x + y;

    static int subtract(int x, int y) => x - y;

    static int multiply(int x, int y) => x * y;

}


Bunda jamlama, ayirish, ko‘paytirish usullari uchun Operation sinfining qaysi nusxasi qo‘llanilishi muhim emas. Ushbu usullar sinf holatiga ta'sir qilmasdan faqat parametrlar bo'yicha ishlaydi. Shuning uchun ularni statik deb belgilash mumkin.
Shuni ta'kidlash kerakki, Google yuqorida tavsiflangan Operatsion sinfi kabi faqat statik usullar va o'zgaruvchilar/konstantalarni o'z ichiga olgan sinflarni yaratishni tavsiya etmaydi. Chunki bu holda biz oddiy funktsiyalarni aniqlab, ulardan foydalanishimiz mumkin:

1

2

3



4

5

6



7

8

9



10

void main (){

     


    int a = sum(3, 5);

    int b = subtract(15, 7);

    int c = multiply(3, 5);

    print("a=$a  b=$b  c=$c");  // a=8  b=8  c=15

}

int sum(int x, int y) => x + y;



int subtract(int x, int y) => x - y;

int multiply(int x, int y) => x * y;



Statik usullardan statik maydonlarni, ya'ni butun sinfga tegishli holatni boshqarish uchun foydalanish mumkin. Shu bilan birga, biz statik usullarda statik bo'lmagan usullar va sinf maydonlaridan foydalana olmaymiz:

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

void main (){

     


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

    Employee.setRetirenmentAge(63);

    print(Employee.retirenmentAge);

}

class Employee{



     

    String name;

    int age;

    static int retirenmentAge = 65;

     

    Employee(this.name, this.age);



     

    checkAge(){

        if(age >= retirenmentAge){

            print("Пора на пенсию");

        }

        else{

            print("До пенсии еще ${retirenmentAge - age} лет");

        }

    }

    static void setRetirenmentAge(int value){



        if(value > 50 && value < 70){

            retirenmentAge = value;

        }

        else{

            print("Некорректное значение");

        }

    }

}


Bunday holda, statik setRetirenmentAge usuli retirenmentAge statik o'zgaruvchisini manipulyatsiya qilish imkonini beradi.
Statik maydonlar va usullarning statik bo'lmaganlardan qanday afzalliklari bor? Statik maydonlar va usullar statik bo'lmaganlarga qaraganda kamroq xotirani iste'mol qiladi. Statik bo'lmagan o'zgaruvchi ishga tushirilgandan so'ng (qiymatning birinchi tayinlanishida) foydalanilgan yoki ishlatilmasligidan qat'i nazar, darhol xotirani iste'mol qila boshlaydi. Statik maydonlar va usullar dasturda foydalanilmaguncha ishga tushirilmaydi. Shunga ko'ra, ular faqat to'g'ridan-to'g'ri ishlatilganda xotirani iste'mol qila boshlaydilar.


Download 387,44 Kb.

Do'stlaringiz bilan baham:
1   ...   18   19   20   21   22   23   24   25   ...   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