• Qism usullar.
  • 4-Mavzu: Konstanta maydonlar. Qism sinflar. Reja Konstanta maydonlar O'qish maydonlari




    Download 27.76 Kb.
    bet3/3
    Sana06.06.2023
    Hajmi27.76 Kb.
    #70345
    1   2   3
    Bog'liq
    4-Mavzu Konstanta maydonlar. Qism sinflar
    4 ma’ruza web texnologiyalari asosida elektron o‘quv materiallar, 23-мавзу, AGRO0237 QR CLICK, 6-MAVZU, 8-Abstrakt sinflar, резюме, Buloqboshi tumani 10-maktab, Хўжаобод туман Мактабгача ва мактаб таълими бўлими тасарруфидаги, Informatika va raqamli texnologiyalari fanidan nazorat savollari, 10.1 Annotatsiya, nb 6, 1
    3. Qism sinflar va usullar.
    Sinflar qism bo'lishi mumkin. Ya'ni, biz bir xil sinf ta'rifiga ega bo'lgan bir nechta fayllarga ega bo'lishimiz mumkin va kompilyatsiya qilinganidan so'ng, bu ta'riflarning barchasi bittaga yig'iladi.
    Masalan, loyihada ikkita kodli faylni aniqlaylik. Bu fayllar qanday nomlanishi unchalik muhim emas. Masalan, PersonBase.cs va PersonAdditional.cs. Ushbu fayllardan birida (qaysi biri bo'lishidan qat'iy nazar) biz quyidagi sinfni aniqlaymiz:
    public partial class Person
    {
    public void Move()
    {
    Console.WriteLine("Men harakatlanaman");
    }
    }

    Boshqa faylda biz quyidagi sinfni aniqlaymiz:


    public partial class Person
    {
    public void Eat()
    {
    Console.WriteLine("I am eating");
    }
    }

    Shunday qilib, loyihadagi ikkita fayl bir xil Person sinfining ta'rifini o'z ichiga oladi, ular ikki xil usulni o'z ichiga oladi. Va bu erda aniqlangan ikkala sinf ham qism. Buning uchun ular partial kalit so'zi bilan aniqlanadi.



    Keyin biz Person sinfining barcha usullaridan foydalanishimiz mumkin:
    class Program
    {
    static void Main(string[] args)
    {
    Person tom = new Person();
    tom.Move();
    tom.Eat();
    Console.ReadKey();
    }
    }


    Qism usullar. Qism sinflar qism usullarni o'z ichiga olishi mumkin. Bunday usullar partial kalit so'zi bilan ham aniqlanadi. Bundan tashqari, usul tanasi bo'lmagan qism usulning ta'rifi bitta qism sinfda, xuddi shu usulni amalga oshirish esa boshqa qism sinfda bo'ladi.
    Masalan, keling, yuqorida belgilangan Person sinflarini o'zgartiraylik. Birinchi sinf:
    public partial class Person
    {
    partial void Read()
    {
    Console.WriteLine("Men kitob o'qiyapman");
    }
    }
    Birinchi sinf Read () usulini belgilaydi. Bundan tashqari, birinchi sinf ta'rifi berilganda, bu usul nima, u qanday harakatlarni bajarishi noma'lum. Shunga qaramay, biz uning parametrlari ro'yxatini bilamiz va uni birinchi sinfda chaqira olamiz.
    Ikkinchi sinf allaqachon Read() usulining asosiy qismini aniqlaydi.
    class Program
    {
    static void Main(string[] args)
    {
    Person tom = new Person();
    tom.DoSomething();
    }
    }

    Ta'kidlash joizki, sukut bo'yicha qism usullarga bir qator cheklovlar qo'llaniladi:



    • Ularda kirish modifikatorlari bo'lishi mumkin emas

    • Ular void turiga kiradi

    • Ular out parametrlariga ega bo'la olmaydi

    • Ularda virtual, override, sealed, new yoki extern modifikatorlari bo'lishi mumkin emas

    Agar ular ushbu cheklovlarning birortasiga javob bermasa, ularni amalga oshirish kerak. Masalan, quyidagi misolda qism usullar p_ublic modifikatorini qo'llaydi:
    // sinf va uning usullarining birinchi qo'llanilishi
    public partial class Person
    {
    public partial void Read();
    public void DoSomething()
    {
    Read();
    }
    }
    // sinf va uning usullarining ikkinchi qo'llanilishi
    public partial class Person
    {
    public partial void Read()
    {
    Console.WriteLine("Men kitob o'qiyapman");
    }
    }
    Adabiyotlar
    1. https://metanit.com/sharp/tutorial/3.21.php - qism sinflarga doir misollar
    2. https://metanit.com/sharp/tutorial/3.3.php - Konstantalar, maydonlar va strukturalarni o'qish ga doir misollar.
    Download 27.76 Kb.
    1   2   3




    Download 27.76 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    4-Mavzu: Konstanta maydonlar. Qism sinflar. Reja Konstanta maydonlar O'qish maydonlari

    Download 27.76 Kb.