Interfeys toifalari tushunchasi Interfeys toifalarni abstract bazaviy sinflar bilan taqqoslash Maxsus interfeyslarni kiritish
Download 0.77 Mb.
|
MAVZULAR UMUMIY
Oddiyroq misol Istisnolarga tuzulmaviy ishlov berishning afzalligini namoyish etish uchun tegishli (aytish joiz bo’lsa – istisnoli) sharoitlarda istisno generatsiya qiladigan sinf yaratishimiz kerak. OddiyIstisno deb nomlangan C# yangi konsol ilovasi loyihasini yaratamiz va unda ikkita sinf (Avto (moshina) va Radio (radiopriyemnik)) aniqlaymiz, ularni “… ga ega” munosabati bilan bog’laymiz. Radio sinfida uni yoqish va ochirishga javob beruvchi yagona metod bor: class Radio { public void Yoqish(bool yoq) { Console.WriteLine (yoq ? "Qo’shiq jaranglaydi...” : "Sokinlik hukmron...”); } } Radio sinfini ishlatish bilan birga, Avto sinfi shunday aniqlanganki, agar foydalanuvchi oldindan belgilangan maksimal tezlikni (MaxTezlik o’zgarmas a’zo orqali berilgan) oshirib yuborsa, dvigatel ishdan chiqadi, Avto ob’yektini ishsiz holatga keltiradi (bu hol bool tipidagi yopiq o’zgaruvchi a’zo AvtoBuzildi qiymatida ifodalanadi). Undan tashqari, Avto sinfi joriy tezlikni ifrodalash uchun va avtomobilning foydalanuvchi bergan nomini saqlash uchun bir qancha xossalarga ega, shunindek, yangi Avto ob’yekti holatini belgilash uchun turli konstruktorlarga ham ega. Quyida Avto sinfining to’la aniqlanishi izohlari bilan keltirilgan. class Avto { // Maksimal tezlikni ifodalash uchun o’zgarmas public const int MaxTezlik = 100; // Avtomobil xossalari public int JoriyTezlik {get; set;} = 0; public string AvtoNomi {get; set;} = “”; // Avto ishdan chiqdimi? private bool AvtoIshdanChiqdi; // Avtomobilda radio bor private Radio AvtoRadio = new Radio(); // Konstruktorlar public Avto () {} public Avto(string nomi, int tezligi) { JoriyTezlik = tezligi; AvtoNomi = nomi; } public void Kuylar(bool holat) { // Ichki ob’yektga so’rov yuborish AvtoRadio.Yoqish (holat); } // Avtomobil qizib ketgan-ketmaganligini tekshirish public void Tezlanish(int oshir) { if (AvtoIshdanChiqdi) Console.WriteLine("{0} ishdan chiqdi...", AvtoNomi); else { JoriyTezlik += oshir; if (JoriyTezlik > MaxTezlik) { Console.WriteLine("{0} qizib ketdi!", AvtoNomi); JoriyTezlik = 0; AvtoIshdanChiqdi = true; } else Console.WriteLine(”=> CurrentSpeed = {0}", CurrentSpeed); } // else } // Tezlanish } // Avto Endi Main() metodini yozaylik, unda Avto ob’yekti oldindan berilgan (va Avto sinfi ichida 100 deb ko’rsatilgan) maksimal tezlikdan o’tib ketsin: static void Main(string [ ] args) { Console .WriteLine (“***** Istisnoga oddiy misol *****”); Console.WriteLine("=> Avto yaratish va uni ishlatib ko’rish!"); Avto meningAvtom = new Avto (“Tulpor”, 20); meningAvtom.Kuylar(true); for (int i = 0; i < 10; i++) meningAvtom. Tezlanish(10); Console.ReadLine(); } Bu dastur ekranga quyidagilarni chiqaraqdi: ***** Istisnoga oddiy misol ***** => Avto yaratish va uni ishlatib ko’rish! Qo’shiq jaranglaydi... => CurrentSpeed = 30 => CurrentSpeed = 40 => CurrentSpeed = 50 => CurrentSpeed = 60 => CurrentSpeed = 70 => CurrentSpeed = 80 => CurrentSpeed = 90 => CurrentSpeed = 100 Tulpor qizib ketdi! Tulpor ishdan chiqdi... 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