Mobil ilovalar ishlab chiqish



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

Zavod konstruktori

Odatiy bo'lib, sinf konstruktorlari ushbu sinfning yangi ob'ektini yaratadilar va qaytaradilar. Lekin har doim ham yangi sinf ob'ektini yaratish kerak bo'lmasligi mumkin. Biz konstruktordan mavjud ob'ektdan foydalanishni va qaytarishni xohlashimiz mumkin. Buning uchun Dart zavod konstruktorlari yoki zavod kalit so'zidan oldin joylashgan konstruktorlardan foydalanadi.


Masalan, quyidagi dasturni 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



25

26

27



28

29

30



void main (){

       


    Application myApp1 = Application("Internet Browser");

    Application myApp2 = Application("Internet Browser 2");

    myApp2.about();

}


  

class Application{

  

    String name;



    static Application app = Application.fromName("");

 

    Application.fromName(this.name);



      

    factory Application(String name) {

        if(app.name == ""){

            app = Application.fromName(name);

            print("Приложение $name запущено");

        }

        else{

             // в фабричных конструкторах нельзя обращаться к this

            // print("В приложении ${this.name} открыта новая вкладка");

            print("В приложении ${app.name} открыта новая вкладка");

        }

        return app;

    }

    void about(){



        print("Приложение $name");

    }


}

Bunday holda, ilovani ifodalovchi Application sinfi aniqlanadi. Aytaylik, bizning vazifamiz bir vaqtning o'zida faqat bitta dasturni ishga tushirishdir. Shu maqsadda biz sinfda Ilova turini ifodalovchi statik o'zgaruvchi ilovasini aniqlaymiz. Va biz ilovaning shartli nomini saqlash uchun o'zgaruvchi nomini ham aniqlaymiz.
Ilova sinfi nomni o'rnatuvchi Application.fromName nomli konstruktorni belgilaydi.
Va zavod konstruktori ham aniqlanadi:

1

2

3



4

5

6



7

8

9



10

11

12



factory Application(String name) {

        if(app.name == ""){

            app = Application.fromName(name);

            print("Приложение $name запущено");

        }

        else{

             // в фабричных конструкторах нельзя обращаться к this

            // print("В приложении ${this.name} открыта новая вкладка");

            print("В приложении ${app.name} открыта новая вкладка");

        }

        return app;

    }


Oddiy konstruktorlar kabi zavod konstruktori ham parametrlarni qabul qilishi mumkin. Bunday holda, biz nom o'rnatish uchun konstruktorga o'tamiz.
Konstruktorning o'zida biz nom o'zgaruvchisi bo'sh qatorga teng yoki yo'qligini tekshiramiz, so'ngra Application.fromName konstruktori yordamida yangi Application ob'ektini yaratamiz va uni ilova o'zgaruvchisiga tayinlaymiz. Agar ob'ekt allaqachon yaratilgan bo'lsa, biz shunchaki ba'zi ma'lumotlarni ko'rsatamiz. Va oxirida biz yaratilgan ob'ektni qaytaramiz.

Ya'ni, zavod konstruktori yangi Application ob'ektini yaratadi, agar u mavjud bo'lmasa (nom o'zgaruvchisi bo'sh qatorni bildiradi) yoki mavjud ob'ektni qaytaradi. Ya'ni, biz birlikda mavjud bo'lgan ob'ektni olamiz.


Shuni ham yodda tutingki, zavod konstruktorlarida joriy ob'ektga this kalit so'zi orqali murojaat qila olmaysiz:

1

//print("В приложении ${this.name} открыта новая вкладка");

Asosiy funktsiyada biz ushbu sinfning ikkita o'zgaruvchisini aniqlaymiz:

1

2

3



4

5

6



void main (){

      


    Application myApp1 = Application("Internet Browser");

    Application myApp2 = Application("Internet Browser 2");

    myApp2.about();

}


Konsol chiqishi:

Internet-brauzer ishlamoqda

Internet-brauzerda yangi yorliq ochiladi

Internet-brauzer dasturi

Konsol chiqishidan biz yangi Application ob'ektini yaratuvchi Application.fromName konstruktori faqat bir marta ishga tushishini ko'rishimiz mumkin. Ikkinchi o'zgaruvchining nomini o'rnatishda birinchi o'zgaruvchining nomi ham o'zgarishini ham ko'ramiz. Chunki bu holda faqat bitta Ilova obyekti mavjud va myApp1 va myApp2 o‘zgaruvchilari bir xil obyektga ishora qiladi.
Ushbu texnikani qayerda qo'llash mumkin? Birinchidan, bu keshlashning turli xil variantlari, yangi ob'ekt yaratish uchun qo'shimcha resurslarni sarflash o'rniga, biz keshdan mavjud ob'ektni olishimiz mumkin. Va agar u yo'q bo'lsa, uni yarating.


Download 387,44 Kb.

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