Urganch davlat universiteti fizika va matematika fakulteti amaliy matematika va informatika yo


XULOSA 4. FOYDALANILGAN ADABIYOTLAR



Download 96,44 Kb.
bet2/15
Sana27.04.2020
Hajmi96,44 Kb.
#47523
1   2   3   4   5   6   7   8   9   ...   15
Bog'liq
C# dasturlash tilida interfeyslar bilan ishlash

3. XULOSA

4. FOYDALANILGAN ADABIYOTLAR.

1. Interfeys ta’rifi. Interfeysni aniqlash.

Interfeys ta'rifi:

Interfeys – bu ko’rsatgichli tipga o’xshab, metod va xossalarni to’playdi, lekin ularni amalga oshiraolmaydi. Interfeyslardan sinflar va strukturalarda interfeyslarning ma’lumotlarini qabul qilib olish maqsadida foydalanish mumkin



Interfeysni aniqlash:

Interfeysning kalit so'zi interfeysni aniqlash uchun ishlatiladi. Qoida tariqasida, C # interfeysi nomlari bosh harf bilan boshlanadi, masalan, IComparable, IEnumerable (Venger notasi deb ataladigan), ammo bu majburiy talab emas, balki dasturlash uslubi.

Quyidagi obyektlar interfeyslarni aniqlashi mumkin:

• Metodlar

• Xususiyatlar

• Indeksatorlar

Hodisalar

• Statik maydonlar va konstantalar (C # 8.0 versiyasidan boshlab)

Ammo, interfeyslar o'zgaruvchilarni aniqlay olmaydi. Masalan, ushbu barcha tarkibiy qismlarni belgilaydigan eng sodda interfeys:

interface IMovable

{

    // o'zgaruvchi



    const int minSpeed = 0;     // minimal tezlik

    // statik o'zgaruvchi

    static int maxSpeed = 60;   // maksimal tezlik

    // metod

    void Move();                // harakat

    // xossasi

    string Name { get; set; }   // nomi

     


    delegate void MoveHandler(string message);  // delegat uchun hodisa tanlash

    // hodisa

    event MoveHandler MoveEvent;    // hodisa xarakati

}


Bunday holda, ko'chib o'tiladigan obyektni ifodalovchi ko'chib o'tiladigan interfeys aniqlanadi. Ushbu interfeysda harakatlanuvchi obyektning imkoniyatlarini tavsiflovchi turli xil tarkibiy qismlar mavjud. Ya'ni, interfeys harakatlanuvchi obyektga ega bo'lishi kerak bo'lgan ba'zi funksiyalarni tavsiflaydi.

Interfeysning usullari va xususiyatlari amalga oshirilmasligi mumkin, bunda ular mavhum usullar va mavhum sinflarning xususiyatlariga yaqinlashadi. Bunday holda, interfeys qandaydir harakatni ifodalaydigan "Move" usulini belgilaydi. Bu amalga oshirilmaydi, parametrlarni olmaydi va hech narsani qaytarmaydi.

Xuddi shu narsa Name xususiyatiga tegishli. Bir qarashda, bu avtomatik xususiyatga o'xshaydi. Ammo, aslida, bu avtomatik ravishda amalga oshirilmaydigan interfeysda mulkning ta'rifi.

Interfeysni e'lon qilishda yana bir nuqta: agar uning a'zolari - usullari va xususiyatlari kirish modifikatorlariga ega bo'lmasa, lekin aslida standart kirish umumiy hisoblanadi, chunki interfeysning maqsadi uni klass tomonidan amalga oshirish uchun funktsional imkoniyatlarni aniqlashdir. Bu, shuningdek, sinflar va tuzilmalarda sukut bo'yicha xususiy modifikatorga ega bo'lgan doimiy va statik o'zgaruvchilarga ham tegishli. Interfeyslarda ular sukut bo'yicha umumiy modifikatorga ega. Masalan, minSpeed ​​doimiy va ko'chib o'tiladigan interfeysning maxSpeed ​​o'zgaruvchisiga murojaat qilishimiz mumkin:



static void Main(string[] args)

{

    Console.WriteLine(IMovable.maxSpeed);



    Console.WriteLine(IMovable.minSpeed);

}


Shu bilan birga, C # 8.0 dan boshlab, interfeys komponentlari uchun kirish modifikatorlarini aniq belgilashimiz mumkin.

interface IMovable

{

    public const int minSpeed = 0;     //minimal tezlik



    private static int maxSpeed = 60;   // maksimal tezlik

    public void Move();

    protected internal string Name { get; set; }    // nomi

    public delegate void MoveHandler(string message);  // delegat uchun hodisani tanlash

    public event MoveHandler MoveEvent;    // hodisa harakati

}


C # 8.0 dan boshlab interfeyslar standart metodlar va xususiyatlarning bajarilishini qo'llab-quvvatlaydi. Bu shuni anglatadiki, biz oddiy sinflar va tuzilmalar singari amalga oshiriladigan interfeyslarda to'liq usul va xususiyatlarni aniqlashimiz mumkin. Masalan, Move usulining standart bajarilishini aniqlaymiz:


interface IMovable

{

    // standart usulni amalga oshirish



    void Move()

    {


        Console.WriteLine("Walking");

    }


}

Standart xususiyatlarni interfeyslarda amalga oshirish biroz murakkabroq, chunki interfeyslarda statik bo'lmagan o'zgaruvchini aniqlay olmaymiz, shuning uchun interfeys xususiyatlarida ob'ekt holatini boshqarolmaymiz. Ammo, shuningdek, xususiyatlar uchun standart bajarilishini ham aniqlashimiz mumkin:



interface IMovable

{

    void Move()



    {

        Console.WriteLine("Walking");

    }

    // standart xususiyatlarni amalga oshirish



//faqat o’qish xususiyati

    int MaxSpeed { get { return 0; } }

}


Shuni ta'kidlash kerakki, agar interfeys xususiy usul va xususiyatlarga ega bo'lsa (ya'ni shaxsiy modifikator bilan), unda ular odatiy bajarishga ega bo'lishi kerak. Xuddi shu narsa har qanday statik usullar va xususiyatlarga tegishli (majburiy emas).

interface IMovable

{

    public const int minSpeed = 0;     // minimal tezlik



    private static int maxSpeed = 60;   // maksimal tezlik

        // biz tezlikni bosib o'tadigan masofani bosib o'tadigan vaqtni topamiz

    static double GetTime(double distance, double speed) => distance / speed;

    static int MaxSpeed

    {

        get { return maxSpeed; }



        set

        {

            if (value > 0) maxSpeed = value;

        }

    }

}

class Program



{

    static void Main(string[] args)

    {

        Console.WriteLine(IMovable.MaxSpeed);



        IMovable.MaxSpeed = 65;

        Console.WriteLine(IMovable.MaxSpeed);

        double time = IMovable.GetTime(100, 10);

        Console.WriteLine(time);

    }

}


Interfeysga kirish modifikatorlari

Sinflar singari, standart interfeyslar ichki kirish darajasiga ega, ya'ni bunday interfeys faqat joriy loyiha doirasida mavjud. Ammo umumiy modifikatordan foydalanib, biz interfeysni ommaviy qilishimiz mumkin:

Sinflar singari, standart interfeyslar ichki kirish darajasiga ega, ya'ni bunday interfeys faqat joriy loyiha doirasida mavjud. Ammo umumiy modifikatordan foydalanib, biz interfeysni ommaviy qilishimiz mumkin:

Sinflar singari, standart interfeyslar ichki kirish darajasiga ega, ya'ni bunday interfeys faqat joriy loyiha doirasida mavjud. Ammo umumiy modifikatordan foydalanib, biz interfeysni ommaviy qilishimiz mumkin:



public interface IMovable

{

    void Move();



}

Shuni ta'kidlash kerakki, Visual Studio-da alohida faylga yangi interfeys qo'shish uchun maxsus komponent mavjud. Loyihaga interfeys qo'shish uchun siz loyihani sichqonchaning o'ng tugmachasi bilan bosishingiz va paydo bo'lgan kontekst menyusida Qo'shish -> Yangi element ... -ni tanlashingiz va yangi komponent qo'shish dialog oynasida Interfeys elementini tanlashingiz mumkin:

2 Ilova interfeysi

Interfeysi ma'lum turdagi tavsifni, ma'lumotlar turiga ega bo'lishi kerak bo'lgan tarkibiy qismlar to'plamini anglatadi. Va aslida biz interfeys ob'ektlarini to'g'ridan-to'g'ri konstruktor yordamida yaratolmaymiz, masalan:



IMovable m = new IMovable(); // ! Xato, buni amalga oshirib bo'lmaydi.

Oxir-oqibat, interfeys sinflar va tuzilmalarda amalga oshirilishi mo'ljallangan. Masalan, quyidagi ko'chib o'tiladigan interfeysni oling:

interface IMovable

{

    void Move();



}

Keyin ushbu interfeysni ba'zi sinf yoki struktura qo'llay oladi:

// sinf interfeysiga misol

class Person : IMovable

{

    public void Move()



    {

        Console.WriteLine("Odam yurmoqda");

    }

}

// strukturada interfeysni qo'llash



struct Car : IMovable

{

    public void Move()



    {

        Console.WriteLine("Mashina ketmoqda");

    }

}


Interfeysni qo'llashda, shuningdek meros qilib olishda, sinf yoki struktura nomidan keyin yo'g'on nuqta ko'rsatiladi va keyin ishlatiladigan interfeyslarning nomlari ishlatiladi. Bunday holda, klass ishlatiladigan interfeyslarning barcha usullari va xususiyatlarini amalga oshirishi kerak, agar bu usullar va xususiyatlar odatiy bajarilishga ega bo'lmasa.

Agar interfeysning usullari va xususiyatlarida kirish modifikatori bo'lmasa, ular sukut bo'yicha umumiy hisoblanadi; ushbu usullar va xususiyatlarni sinf va tuzilishda qo'llashda ularga faqat umumiy modifikator qo'llanishi mumkin.

Dasturda interfeysni qo'llanilishi(To’liq ko’rinishi):

using System;

 

namespace HelloApp



{

    interface IMovable

    {

        void Move();



    }

    class Person : IMovable

    {

        public void Move()



        {

            Console.WriteLine("Odam yurmoqda");

        }

    }



struct Car : IMovable

    {


        public void Move()

        {

            Console.WriteLine("Mashina ketmoqda");

        }

    }
class Program

    {


        static void Action(IMovable movable)

        {

            movable.Move();

        }

        static void Main(string[] args)

        {

            Person person = new Person();

            Car car = new Car();

            Action(person);

            Action(car);

            Console.Read();

        }

    }

}



Ushbu dastur bir harakat sifatida interfeys ob'ektini parametr sifatida oladigan Action () usulini belgilaydi. Kodni yozish paytida biz uning qanday ob'ekt bo'lishini - sinf yoki struktura turini bilmasligimiz mumkin. Biz amin bo'lishimiz mumkin bo'lgan yagona narsa bu ob'ekt Move usulini amalga oshirishi va biz bu usulni chaqirishimiz mumkin.

Boshqacha qilib aytganda, interfeys bu ma'lum bir funktsiyani bajarishi shart bo'lgan shartnoma.

Ushbu dastur natijasining konsolda chiqishi:


Odam yurmoqda

Mashina ketmoqda







Download 96,44 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   15




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