1-Mavzu 1-Mavzu Reja: Klass a’zolariga ruxsatni boshqarish
// Interfeysni amalga oshirishda ByTwos sinfidan foydalanish
Download 116.94 Kb.
|
dasturiy injinering
// Interfeysni amalga oshirishda ByTwos sinfidan foydalanish.
using System; class SeriesDemo { static void Main() { ByTwos ob = new ByTwos(); for(int i=0; i < 5; i++) Console.WriteLine ("Следующее число равно " + ob.GetNext()); Console.WriteLine("\пСбросить"); ob.Reset(); for(int i=0; i < 5; i++) Console.WriteLine("Следующее число равно " + ob.GetNext()); Console.WriteLine("\пНачать с числа 100"); ob.SetStart(100); for(int i=0; i < 5; i++) Console.WriteLine("Следующее число равно " + ob.GetNext()) ; } } SeriesDemo sinf kodini kompilyatsiya qilish uchun ISeries interfeysini o'z ichiga olgan fayllarni, shuningdek ByTwos va SeriesDemo sinflarini kiritish kerak. Komplyator avtomatik ravishda barcha uch fayllarni kompilyatsiya qiladi va ulardan yakuniy bajariluvchi fayl hosil qiladi. Shunday qilib, agar ushbu fayllar ISeries.cs, ByTwos.cs va SeriesDemo.cs deb nomlangan bo'lsa, dastur keyingi buyruq satridagidek komplyatsiya qilinadi: >csc SeriesDemo.cs ISeries.cs ByTwos.cs Integratsiyalashgan Visual Studio ishlab chiqish muhitida ushbu maqsad uchun yuqorida qayd etilgan uchta faylni ma'lum bir C# loyihasiga kiritish kifoya. Bundan tashqari, barcha uch kompilyatsiya elementlarini (interfeysi va har ikki sinflar) bitta faylga joylashtirishga ruxsat etiladi. Quyida kompilyatsiya qilingan kodning natijasi keltirilgan. Следующее число равно 2 Следующее число равно 4 Следующее число равно б Следующее число равно 8 Следующее число равно 10 Сбросить. Следующее число равно 2 Следующее число равно 4 Следующее число равно 6 Следующее число равно 8 Следующее число равно 10 Начать с числа 100. Следующее число равно 102 Следующее число равно 104 Следующее число равно 106 Следующее число равно 108 Следующее число равно 110 Interfeyslarni amalga oshiradigan sinflarda o'zlarining qo'shimcha a'zolarini aniqlash uchun ruxsat beriladi va ko'pincha qo'llaniladi. Misol sifatida, ByTwos sinfining yana bir versiyasi quyida keltirilgan, unda GetPrevious() metodi qo'shilgan bo`lib u ketma-ketlikning oldingi qiymatini qaytaradi. // ISeries interfeysi amalga oshirish va ByTwos sinfiga GetPrevious() metodini kiritish. class ByTwos : ISeries { int start; int val; int prev; public ByTwos() { start = 0; val = 0; prev = -2; } public int GetNext() { prev = val; val += 2; return val; } public void Reset() { val = start; prev = start - 2; } public void SetStart(int x) { start = x; val = start; prev = val - 2; } // ISeries interfeysida ko'rsatilmagan metod. public int GetPrevious() { return prev; } } Ko'rib turganingizdek, GetPrevious() metodini qo'shish uchun, ISeries interfeysida aniqlangan metodlarni amalga oshirishda o'zgarishlar qilishga to`g`ri keldi. Biroq, bu metodlar uchun interfeys aslicha qoldi, bunday o'zgarishlar hech qanday ta`sir qilmadi va mavjud kodni buzmadi. Bu interfeyslarning afzalliklaridan biridir. Yuqorida aytib o'tilganidek, interfeys har qanday sinflarda amalga oshirilishi mumkin. Misol sifatida, Primes sinfi bir qator tub sonlarni aniqlaydi. Ushbu sinfdagi ISeries interfeysining amalga oshirilishi ByTwos sinfida amalga oshirishdan tubdan farq qilishiga e`tibor bering. // Tub sonlarni aniqlash jarayonini amalga oshirish uchun //iSeries interfeysidan foydalanish. class Primes : ISeries { int start; int val; public Primes() { start = 2; val = 2; } public int GetNext() { int i, j; bool isprime; val++; for(i = val; i < 1000000; i++) { isprime = true; for(j = 2; j <= i/j; j++) { if((i%j)==0) { isprime = false; break; } } if (isprime) { val = i; break; } } return val; } public void Reset() { val = start; } public void SetStart(int x) { start = x; val = start; } } Qizig'i shundaki, ByTwos va Primes ikkala sinfda ham bir xil interfeysni amalga oshiradilar, garchi ular butunlay boshqa sonlarni qatorini aniqlagan bo`lsalar ham. Yuqorida aytib o'tilganidek, interfeysda hech qanday dastur mavjud emas, shuning uchun har bir sinfda sinfning o'zi uchun zarur bo'lgan tarzda erkin qo'llanilishi mumkin. Download 116.94 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling