Umumlashgan interfeyslar



Download 76,61 Kb.
Sana31.12.2021
Hajmi76,61 Kb.
#242905
Bog'liq
interfeys

UMUMLASHGAN INTERFEYSLAR

Interfeysni aniqlash uchun interface kalit so'zi ishlatiladi. Odatda, C # dagi interfeys nomlari I bosh harf bilan boshlanadi, masalan, IComparable, IEnumerable, ammo bu majburiy talab emas, balki ko'proq dasturlash uslubi.

Interfeys nimani belgilashi mumkin? Umuman olganda, interfeyslar quyidagi ob'ektlarni belgilashi mumkin:

- Metodlar

- Xususiyatlari

- Indeksatorlar

- Hodisalar

- Statik maydonlar va o’zgarmaslar (C # 8.0 dan beri)

Quyida interfeys sintaksisining soddalashtirilgan shakli keltirilgan: interface interfays_nomi { qiymat_turi metod_nomi_1 (parametrlar_ro’yxati); qiymat_turi metod_nomi_2 (parametrlar_ro’yxati); // ... qiymat_turi metod_nomi_N (parametrlar_ro’yxati); }

Interfeys metodlarini e'lon qilishda faqat qiymat qaytarish turi va signaturasidan foydalaniladi. Ular mohiyatan abstrakt metodlardir. Yuqorida aytib o'tilganidek, interfeysda hech qanday dastur bo'lishi mumkin emas.

Shuning uchun interfeysning barcha metodlari ushbu interfeysni o'z ichiga olgan har bir sinfda amalga oshirilishi kerak. Interfeysning o'zida metodlar bevosita ochiq (public) deb hisoblanadi, shuning uchun ularga kirish huquqini aniq ko'rsatishingiz shart emas. Metodlardan tashqari siz interfeyslarda xususiyatlar, indeksatorlar va hodisalarni ham belgilashingiz mumkin. Interfeyslar ma'lumotlar a'zolarini o'z ichiga olmaydi. Shuningdek, ular konstruktorlar, destruktorlar yoki operatorlarni qayta yuklashni aniqlay olmaydilar. Shuningdek, interfeys a'zolarining hech biri statik deb e'lon qilinishi mumkin emas.

Interfeys aniqlangandan so'ng, uni bir yoki bir nechta sinflarda amalga oshirish mumkin. Interfeysni amalga oshirish uchun uning nomini tayanch sinf nomiga o'xshash sinf nomidan keyin ko'rsatish kifoya. Quyida sinfda interfeysni amalga oshirishning umumiy shakli keltirilgan: class sinf_nomi: interfeys1_nomi, interfeys2_nomi { / / sinf nomi }

bu Yerda interfeys_nomi - amalga oshirilayotgan interfeysning o'ziga xos nomi. Agar interfeys allaqachon sinfda amalga oshirilgan bo'lsa, unda bu to'liq bajarilishi kerak. Xususan, interfeysni tanlab va faqat qismlarga bo'lib amalga oshirish mumkin EMAS. Bir sinfda bir nechta interfeyslarni amalga oshirish mumkin. Bunday holda, sinfda amalga oshirilgan barcha interfeyslar vergul bilan ajratilgan ro'yxat bilan ko'rsatiladi. Sinf tayanch sinfdan meros olishi va shu bilan bir yoki bir nechta interfeyslarni amalga oshirishi mumkin.

Bunday holda, interfeyslarning vergul bilan ajratilgan ro'yxatidan oldin tayanch sinf nomi ko'rsatilishi kerak. Interfeysni amalga oshiradigan usullar ommaviy deb e'lon qilinishi kerak. Haqiqat shundaki, interfeysning o'zida ushbu usullar oshkora ravishda nazarda tutilgan, shuning uchun ularni amalga oshirish ham ommaviy bo'lishi kerak. Bundan tashqari, amalga oshirilgan usulning qaytish turi va imzosi interfeys ta'rifida ko'rsatilgan qaytarish turi va imzosiga to'liq mos kelishi kerak.

Misol keltiraylik using System; public interface IArOperation { int Sum(int x, double y); int Otr(); int Prz(); int Del(); } public interface ISqrSqrt { int Sqr(int x); int Sqrt(int x); }

class A : IArOperation { Int My_x, My_y; public int x { set { My_x = value; } get { return My_x; } } public int y { set { My_y = value; } get { return My_y; } } public A() { }

public A (int x, int y) { this.x = x; this.y = y; } public virtual int Sum (int a, double b) { return x + y; } public int Otr() { return x - y; }

public int Prz() { return x * y; } public int Del() { return x / y; } public virtual void rewrite() { Console.WriteLine("O’zggaruvchi x: {0}\n O’zgaruvchi y: {1}",x,y); } }

class Aa : A { public int z; public Aa(int z, int x, int y) : base(x, y) { this.z = z; } public override int Sum() { return base.x + base.y + z; } public override void rewrite()

{ base.rewrite(); Console.WriteLine("O’zgaruvchi z: " + z); } } class Ab : A, ISqrSqrt { public int Sqr(int x) { return x * x; } public int Sqrt(int x)

{ return (int)Math.Sqrt((double)(x)); } } class Program { static void Main() { A obj1 = new A(x: 10, y: 12); Console.WriteLine("obj1: "); obj1.rewrite(); Console.WriteLine("{0} + {1} = {2}",obj1.x,obj1.y,obj1.Sum()); Console.WriteLine("{0} * {1} = {2}", obj1.x, obj1.y, obj1.Prz());

Aa obj2 = new Aa(z: -3, x: 10, y: 14); Console.WriteLine("\nobj2: "); obj2.rewrite(); Console.WriteLine("{0} + {1} + {3} = {2}", obj2.x, obj2.y, obj2.Sum(), ob j2.z); Console.ReadLine(); } }


Download 76,61 Kb.

Do'stlaringiz bilan baham:




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