Interfeyslar reja: I. Kirish II. Asosiy qism



Download 49,46 Kb.
bet4/6
Sana18.02.2022
Hajmi49,46 Kb.
#452229
1   2   3   4   5   6
Bog'liq
interfeys

Kovariant interfeyslar
Agar umumiy parametrga out kalit so'zi qo'llanilsa, umumiy interfeyslar kovariant bo'lishi mumkin . Masalan:
Person p1 = new Person { Name = "Bill", Age = 34 };
Person p2 = new Person { Name = "Tom", Age = 23 };
Person p3 = new Person { Name = "Alice", Age = 21 };
Person[] people = new Person[] { p1, p2, p3 };
Array.Sort(people, new PeopleComparer());
foreach(Person p in people)
{
Console.WriteLine($"{p.Name} - {p.Age}");
}
Umumiy dasturlash ning uslubi kompyuter dasturlash unda algoritmlar jihatidan yozilgan turlari keyin belgilanishi kerak u holda qo'zg'atilgan kabi taqdim etilgan aniq turlar uchun kerak bo'lganda parametrlar. Tomonidan kashshof bo'lgan ushbu yondashuv ML 1973 yilda dasturlash tili,[1][2] umumiy yozishga ruxsat funktsiyalari yoki turlari faqat ular ishlatilganda ishlaydigan turkumlari to'plamida farq qiladi va shu bilan kamayadi takrorlash. Bunday dasturiy ta'minot sub'ektlari sifatida tanilgan umumiy narsalar yilda Python, Ada, C #, Delphi, Eyfel, F #, Java, Nim, Zang, Tez, TypeScript va Visual Basic .NET. Ular sifatida tanilgan parametrik polimorfizm yilda ML, Scala, Yuliyava Xaskell (Haskell hamjamiyati "umumiy" atamasini tegishli, ammo boshqacha tushuncha uchun ham ishlatadi); andozalar yilda C ++ va D.; va parametrlangan turlari nufuzli 1994 kitobida Dizayn naqshlari.[3]
Dastlab "umumiy dasturlash" atamasi tomonidan kiritilgan Devid Musser va Aleksandr Stepanov[4] Yuqoridagilardan ko'ra aniqroq ma'noda, dasturlash paradigmasini tavsiflash uchun, bu turlarga qo'yiladigan asosiy talablar algoritmlar va ma'lumotlar tuzilmalarining aniq misollari asosida rasmiylashtirilib, quyidagicha rasmiylashtiriladi. tushunchalar, bilan umumiy funktsiyalar yuqorida aytib o'tilganidek, odatda tilning umumiyligi mexanizmlaridan foydalangan holda ushbu tushunchalar nuqtai nazaridan amalga oshiriladi.
Masalan, berilgan N ketma-ketlik ma'lumotlar tuzilmalari, masalan. yakka bog'langan ro'yxat, vektor va boshqalar va boshqalar M ular ustida ishlash algoritmlari, masalan topmoq, saralash va hokazo. to'g'ridan-to'g'ri yondashuv har bir algoritmni har bir ma'lumotlar tuzilishi uchun maxsus ravishda amalga oshiradi N × M amalga oshirish uchun kombinatsiyalar. Biroq, umumiy dasturlash yondashuvida har bir ma'lumotlar tuzilishi iterator kontseptsiyasining modelini qaytaradi (joriy qiymatni olish uchun ajratilishi mumkin bo'lgan yoki ketma-ketlikdagi boshqa qiymatga ishora qilish uchun o'zgartirilishi mumkin bo'lgan oddiy qiymat turi) va buning o'rniga har bir algoritm yoziladi Bunday iteratorlarning dalillari bilan umumiy, masalan ketma-ketlikning boshi va oxiriga ishora qiluvchi juft takrorlovchi yoki oralig'I ishlov berish. Shunday qilib, faqat N + M ma'lumotlar tuzilishi-algoritm kombinatsiyalarini amalga oshirish kerak. STL-da bir nechta iterator tushunchalari ko'rsatilgan, ularning har biri yanada cheklovchi tushunchalarni takomillashtirish, masalan. oldinga iteratorlar faqat ketma-ketlikdagi keyingi qiymatga harakatlanishni ta'minlaydi (masalan, alohida bog'langan ro'yxat yoki kirish ma'lumotlari oqimi uchun mos), tasodifiy kirish iterator esa ketma-ketlikning har qanday elementiga doimiy doimiy kirish huquqini beradi (masalan, mos vektor uchun). Muhim jihat shundaki, ma'lumotlar tuzilmasi samarali amalga oshiriladigan eng umumiy kontseptsiya modelini qaytaradi.hisoblash murakkabligi talablar kontseptsiya ta'rifining aniq qismidir. Bu ma'lum bir algoritm qo'llanilishi mumkin bo'lgan ma'lumotlar tuzilmalarini cheklaydi va bunday murakkablik talablari ma'lumotlar tuzilishini tanlashning asosiy omilidir. Umumiy dasturlash shunga o'xshash boshqa domenlarda ham qo'llanilgan, masalan. grafik algoritmlari Umumlashtirilgan IBank interfeysi hisob yaratish uchun CreateAccount usulini belgilaydi. Shu bilan birga, interfeysni aniqlash vaqtida biz hisob-fakturaning qaysi turini ifodalashini bilmaymiz. Interfeys ta'rifidagi out kalit so'zi berilgan interfeys kovariant bo'lishini bildiradi.
Shartli bankni ifodalovchi Bank klassi ushbu interfeysni amalga oshiradi va CreateAccount usulidan Hisob sinfini yoki uning avlodlaridan birini ifodalovchi ob'ektni qaytaradi.
Keling, ushbu turlarni dasturda qo'llaymiz:
class Account
{
public virtual void DoTransfer(int sum)
{
Console.WriteLine($"Клиент положил на счет {sum} долларов");
}
}
class DepositAccount : Account
{
public override void DoTransfer(int sum)
{
Console.WriteLine($"Клиент положил на депозитный счет {sum} долларов");
}
}
Ya'ni, biz IBankaniqroq turdagi ob'ektga umumiy turni belgilashimiz mumkin IBankyoki Bank.
Shu bilan birga, agar biz kalit so'zni ishlatmagan bo'lsak out:
interface IBank
keyin biz satrda xatolikka duch kelamiz
IBank ordinaryBank = depositBank;
Chunki bu holda ob'ektni Bankturga o'tkazish mumkin bo'lmaydiIBank
Kovariant interfeysni yaratishda, umumiy parametr faqat interfeys usullari uchun qaytish turi sifatida ishlatilishi mumkinligini yodda tuting. Lekin uni usul argumentlari turi yoki interfeys usullarini cheklash sifatida ishlatish mumkin emas.

Download 49,46 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




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