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


Bir nechta interfeysni amalga oshirish



Download 96,44 Kb.
bet4/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

Bir nechta interfeysni amalga oshirish

Interfeyslar yana bir muhim funktsiyaga ega: C # bir nechta merosni qo'llab-quvvatlamaydi, ya'ni biz bir sinfdan faqat bitta klassdan meros olishimiz mumkin, farqli o'laroq, C ++ tilida, ko'pgina merosdan foydalanish mumkin. Interfeyslar ushbu cheklovni qisman chetlab o'tishlari mumkin, chunki C # sinfida bir vaqtning o'zida bir nechta interfeyslarni amalga oshirish mumkin. Amalga oshirilgan barcha interfeyslar vergul bilan ajratilgan:



myClass: myInterface1, myInterface2, myInterface3, ...

{    


}

Quyidagi misolni ko'rib chiqamiz:

using System;

 

namespace HelloApp



{

    interface IAccount

    {

        int CurrentSum { get; }  // Текущая сумма на счету



        void Put(int sum);      // Положить деньги на счет

        void Withdraw(int sum); // Взять со счета

    }

    interface IClient



    {

        string Name { get; set; }

    }

    class Client : IAccount, IClient



    {

        int _sum; // Переменная для хранения суммы

        public string Name { get; set; }

        public Client(string name, int sum)

        {

            Name = name;

            _sum = sum;

        }






 

        public int CurrentSum { get { return _sum; } }

 

        public void Put(int sum) {  _sum += sum; }



 

        public void Withdraw(int sum)

        {

            if (_sum >= sum)

            {

                _sum -= sum;

            }

        }

    }

    class Program



    {

        static void Main(string[] args)

        {

            Client client = new Client("Tom", 200);

            client.Put(30);

            Console.WriteLine(client.CurrentSum); //230

            client.Withdraw(100);

            Console.WriteLine(client.CurrentSum); //130

            Console.Read();

        }

    }

}


Bunday holda, ikkita interfeys aniqlanadi. IAccount interfeysi hisobdagi joriy pul miqdori uchun CurrentSum xususiyatini va hisobvaraqqa pul qo'shish va pulni olishning ikkita "Put" va "Olib tashlash" usullarini belgilaydi. IClient interfeysi mijoz nomini saqlash xususiyatini belgilaydi.

E'tibor bering, interfeyslarda CurrentSum va Name xususiyatlari avtomatik xususiyatlarga o'xshash, ammo ular avtomatik xususiyatlarga ega emas. Amalga oshirish jarayonida biz ularni to'liq xususiyatlarga ega bo'lishimiz yoki ularni avtomatik xususiyatlarga aylantirishimiz mumkin.

Client sinfi ikkala interfeysni ham amalga oshiradi va keyinchalik dasturda qo'llaniladi.

Turli konversiyalardagi interfeyslar.

Turni konversiyalash bo'yicha aytilganlarning hammasi interfeyslarga xosdir.

Client sinfi IAccount interfeysini amalga oshirgani uchun, IAccount turidagi o'zgaruvchi Client turidagi ob'ektga mos yozuvlar saqlashi mumkin:



// Barcha Client ob'ektlari IAccount ob'ektlari

IAccount account = new Client("Том", 200);

account.Put(200);

Console.WriteLine(account.CurrentSum); // 400

// IAccount ob'ektlarining hammasi ham Client ob'ekti emas, aniq kasting talab etiladi

Client client = (Client)account;

// IAccount interfeysida Name xususiyati mavjud emas, aniq namoyish talab qilinadi

string clientName = ((Client)account).Name;



Sinfdan interfeysga, shuningdek, olingan turdan bazaviy turga o'tkazish avtomatik ravishda amalga oshiriladi. Har qanday Client ob'ekti IAccount interfeysini amalga oshiradi.

Teskari konversiya - interfeysdan uni amalga oshiradigan sinfga o'tish, asosiy sinfdan olingan sinfga o'tish kabi bo'ladi. Har bir IAccount ob'ekti Client ob'ekti bo'la olmasligi (oxir-oqibat, boshqa sinflar IAccount interfeysini amalga oshirishi mumkin), bunday konversiya uchun ishlash zarur. Va agar biz IAccount interfeysida aniqlanmagan, ammo Client klassining bir qismi bo'lgan Mijoz sinfining usullariga murojaat qilmoqchi bo'lsak, unda konversiyani aniq amalga oshirishimiz kerak: string clientName = ((Client) account) .Name;




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