24-mavzu. Polimorfizm
C# da Polimorfizm bir nechta shakllarni olish qobiliyatini ta'minlashni anglatadi va
Download 126.11 Kb.
|
30-maruza
C# da Polimorfizm bir nechta shakllarni olish qobiliyatini ta'minlashni anglatadi va u inkapsulyatsiya va merosdan keyin ob'ektga yo'naltirilgan dasturlashning asosiy ustun tushunchalaridan biridir.
Odatda, polimorfizm ikki so'zning birikmasidir, poli, ikkinchisi esa morflar. Bu erda poly "bir nechta" degan ma'noni anglatadi va morflar "shakllar" degan ma'noni anglatadi, shuning uchun polimorfizm ko'p shakllarni anglatadi. C# da polimorfizm sinflarga bir xil nomdagi turli usullarni amalga oshirish imkoniyatini beradi. Shuningdek, u bizning talablarimiz asosida ish vaqti davomida asosiy sinfga havola orqali olingan sinf usullarini chaqirish imkoniyatini beradi. C# da bizda ikki xil turdagi polimorfizmlar mavjud, ular Vaqt polimorfizmini kompilyatsiya qilish Ish vaqti polimorfizmi C# kompilyatsiya vaqti polimorfizmi C# da kompilyatsiya vaqti polimorfizmi bir xil nomli, lekin turli parametrlarga ega bo'lgan bir nechta usullarni belgilashni anglatadi. Kompilyatsiya vaqti polimorfizmidan foydalanib, biz turli xil parametrlarni o'tkazish orqali bir xil usul nomi bilan turli vazifalarni bajarishimiz mumkin. C# da kompilyatsiya vaqti polimorfizmiga haddan tashqari yuklash usuli yordamida erishish mumkin va u erta bog'lanish yoki statik bog'lanish deb ham ataladi. Quyida C# da kompilyatsiya vaqti polimorfizmiga erishish uchun haddan tashqari yuklash usulini amalga oshirishning kod qismi keltirilgan. public class Calculate { public void AddNumbers(int a, int b) { Console.WriteLine("a + b = {0}", a + b); } public void AddNumbers(int a, int b, int c) { Console.WriteLine("a + b + c = {0}", a + b + c); } } Yuqoridagi "Hisoblash" klassiga rioya qilsangiz, biz bir xil nomli ikkita usulni aniqladik (Qo'shishNumbers), lekin usulni haddan tashqari yuklashga erishish uchun turli xil kiritish parametrlari bilan bu c# da kompilyatsiya vaqti polimorfizmi deb ataladi. C# kompilyatsiya vaqti polimorfizmiga misol Quyida C# dasturlash tilida kompilyatsiya vaqti polimorfizmini amalga oshirish misoli keltirilgan. using System; namespace Tutlane { public class Calculate { public void AddNumbers(int a, int b) { Console.WriteLine("a + b = {0}", a + b); } public void AddNumbers(int a, int b, int c) { Console.WriteLine("a + b + c = {0}", a + b + c); } } class Program { static void Main(string[] args) { Calculate c = new Calculate(); c.AddNumbers(1, 2); c.AddNumbers(1, 2, 3); Console.WriteLine("\nPress Enter Key to Exit.."); Console.ReadLine(); } } } When we execute the above c# program, we will get the result as shown below. C# ish vaqti polimorfizmi C# da Run Time polimorfizmi shunga o'xshash funktsiyani yaratish orqali olingan sinfdagi asosiy sinf usulini bekor qilishni anglatadi. Bunga override & virtual kalit so'zlar va meros tamoyilidan foydalanish orqali erishish mumkin. Ish vaqti polimorfizmidan foydalanib, biz boshqa vazifani bajarish uchun bir xil nom va parametrlarga ega usul yaratish orqali olingan sinfdagi asosiy sinf usulini bekor qilishimiz mumkin. C# da ish vaqti polimorfizmiga usulni bekor qilish orqali erishish mumkin va u kech ulanish yoki dinamik bog'lanish deb ham ataladi. Quyida c# da ish vaqti polimorfizmiga erishish uchun bekor qilish usulini amalga oshirishning kod qismi keltirilgan. // Base Class public class Users { public virtual void GetInfo() { Console.WriteLine("Base Class"); } } // Derived Class public class Details: Users { public override void GetInfo() { Console.WriteLine("Derived Class"); } } Agar yuqoridagi kod parchasini kuzatsangiz, biz ikkita sinf yaratdik ("Foydalanuvchilar", "Batafsil") va olingan sinf (Batafsil) asosiy sinfdan (Foydalanuvchilar) xususiyatlarni meros qilib oladi. Biz usulni bekor qilishga erishish uchun bir xil funktsiyani yaratish orqali olingan sinfdagi GetInfo asosiy sinf usulini bekor qilamiz; Bu c# da ish vaqti polimorfizmi deb ataladi. Bu erda biz GetInfo usulini virtual kalit so'z bilan tayanch sinfda aniqladik, bu hosil qilingan sinfga override kalit so'zi yordamida ushbu usulni bekor qilish imkonini beradi. Faqatgina asosiy sinfdagi virtual kalit so'zi bo'lgan usullarni bekor qilish kalit so'zidan foydalanib, hosila sinfda bekor qilishga ruxsat beriladi. Bu haqda ko'proq ma'lumot olish uchun C# da ushbu usulni bekor qilishni tekshiring. C# Run Time Polimorfizmiga misol Quyida c# dasturlash tilida ishlash vaqti polimorfizmini amalga oshirish misoli keltirilgan. using System; namespace Tutlane { // Base Class public class BClass { public virtual void GetInfo() { Console.WriteLine("Learn C# Tutorial"); } } // Derived Class public class DClass : BClass { public override void GetInfo() { Console.WriteLine("Welcome to Tutlane"); } } class Program { static void Main(string[] args) { DClass d = new DClass(); d.GetInfo(); BClass b = new BClass(); b.GetInfo(); Console.WriteLine("\nPress Enter Key to Exit.."); Console.ReadLine(); } } } When you execute the above c# program, you will get the result as shown below. Ergashev Quvonchbek Tulqin o‘g‘li Eshboyev Xurshid rashid o‘g‘li Vafoyev DovudxonYaxyoxon o‘g‘li Download 126.11 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling