Interfeys toifalari tushunchasi Interfeys toifalarni abstract bazaviy sinflar bilan taqqoslash Maxsus interfeyslarni kiritish
Download 0.77 Mb.
|
MAVZULAR UMUMIY
- Bu sahifa navigatsiya:
- Maxsus umumlashgan strukturalar va sinflarni yaratish Umumlashgan kodda default kalit so’zi Toifa parametrlarini cheklash
- // Ikki butun qiymatlarni o’rnini almashtirish static void Almashtir(ref int a, ref int b) { int temp = a; a = b; b = temp; }
- // Ikki Xodim ob’yektining o’rnini almashtirish static void Almashtir (ref Person a, ref Person b) { Person temp = a; a = b; b = temp; }
- Almashtir ()
object.ReferenceEquals(p3, p4));
} Ma’ruza 03 (29) Mavzu: Umumlashgan turlar. Umumlashgan sinflar e’lon qilish va ob’yektlari bilan ishlash Reja: Maxsus umumlashgan metodlar yaratish Toifa parametrlarini aniqlash Maxsus umumlashgan strukturalar va sinflarni yaratish Umumlashgan kodda default kalit so’zi Toifa parametrlarini cheklash where kalit so’zini ishlatishga oid misollar Maxsus umumlashgan metodlar yaratish Dastur yaratuvchilarning aksariyati odatda bazaviy sinflar kutubxonalarida mavjud bo’lgan umumlashgan turlarni qo’lashiga qaramay, C# dasturlash tilida o’zlarining umumlashgan metodlari va maxsus umumlashgan turlarni (toifalarni) yaratish imkoni ham bor. O’z loyihalarimizga qanday qilib bunday umumlashmalarni kiritishni ko’rib chiqaylik. Birinchi galda biz umumlashgan almashtirish metodini quramiz. UmumlashganMetodlar degan yangi konsol ilovasi loyihasini yaratishdan boshlaymiz. Maxsus umumlashgan metodlarni qurish metodlarni ananaviy peregruzka qilishning rivojlantirilgan versiyasidir. Biz bilamizki, metodni peregruzka qilish bitta metodning biri-biridan parametrlarning miqdori yoki toifasi bilan farq qiluvchi bir qancha versiyalarini yaratishni anglatar edi. Peregruzka ob’yektga mo’ljallangan tilning foydali vositasi bo’lsa-da, muammo shundaki, buning natijasida amalda bitta ishni bajaruvchi metodlarning ulkan miqdorini osongina hosil qilish mumkin, ya’ni ish ko’payib ketishi mumkin. Masalan, oddiy usulda ma’lumotlarning ikki qismi joylarini almashtiruvchi metodlar yaratish lozim bo’lsin. Dastlab butun qiymatlar bilan ishlovchi metodni yozish mumkin: // Ikki butun qiymatlarni o’rnini almashtirish static void Almashtir(ref int a, ref int b) { int temp = a; a = b; b = temp; } Hozircha hammasi yaxshi. Lekin endi ikkita Xodim ob’yektlarining ham joylarini almshtirishga ehtiyoj tug’ildi deb faraz qilaylik; bu ish Almashtir metodining yangi versiyasini yaratishni talab etadi: // Ikki Xodim ob’yektining o’rnini almashtirish static void Almashtir (ref Person a, ref Person b) { Person temp = a; a = b; b = temp; } Siz endi bu yo’nalishdagi ishlar nima bilan tugashini tushunayotgan bo’lsangiz kerak. Agar haqiqiy sonlarni ifodalovchi ikkita suzuvchi nuqtali (double) qiymatlarning o’rnini almashtirish kerak bo’lib qolsayam, ikkita rasmning o’rnini almashtirishga to’g’ri kelib qolsayam, ikkita tugmaning o’rnini almashtirishga to’g’ri kelib qolsayam, xullas, yana allambalo ikita narsaning o’rnini almashtirishga to’g’ri kelib qolsayam, yuqoridagi kabi qo’shimcha metodlar yozish kerak bo’ladi, bu esa oqibatda haqiqiy bosh og’rig’iga aylanadi. Aynan mana shunday vaziyatlarda umumlashgan metodlar yaratish juda qo’l keladi. Faqat kiruvchi argumentlari bilan farq qiluvchi peregruzka qilingan metodlarning mavjudligi – umumlahsmalar vaziyatni yengillashtirishi mumkinligining oydin alomatidir. T turga mansub ikki qiymatning o’rnini almashtirishga qodir quyidagi umumlashgan Almashtir // Bu metod static void Almashtir Console.WriteLine("Siz Almashtir () metodiga {0} berdingiz”, typeof(T) ) ; T temp = a; a = b; b = temp; } Bu umumlashgan metodning aniqlanishi metodning nomidan keyin, lekin parametrlar ro’xatidan oldin tur parametrini ko’rsatish orqali amalga oshirilganiga e’tibor bering. Bu bilan Almashtir static void Main(string[] args) { Console.WriteLine ("***** Maxsus umumlashgan metodlar *****\n"); // Ikki butun qiymatni almashtirish int а = 10, b = 90; Console.WriteLine("Almashishdan oldin: {0}, {1}", a, b) ; Almashtir Console.WriteLine("Almashishdan keyin: {0}, {1}", a, b) ; Console.WriteLine(); // Ikki satr qiymatni almashtirish string s1 = "Salom", s2 = "Do’stlar"; Console.WriteLine ( " Almashishdan oldin: {0} {1}!", s1, s2) ; Almashtir Console.WriteLine("Almashishdan keyin: {0} {1}!", si, s2); Console.ReadLine(); } Mana, bu dasturning nimani chiqarishi: ***** Maxsus umumlashgan metodlar ***** Almashishdan oldin: 10, 90 Siz Almashtir () metodiga System.Int32 berdingiz Almashishdan keyin: 90, 10 Almashishdan oldin: Salom Do’stlar! Siz Almashtir () metodiga System.String berdingiz Almashishdan keyin: Do’stlar Salom! Bunday yondashuvning afzalligi shundaki, faqat bittagina Almashtir Download 0.77 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling