Interfeys toifalari tushunchasi Interfeys toifalarni abstract bazaviy sinflar bilan taqqoslash Maxsus interfeyslarni kiritish


Download 0.77 Mb.
bet22/50
Sana26.01.2023
Hajmi0.77 Mb.
#1129439
1   ...   18   19   20   21   22   23   24   25   ...   50
Bog'liq
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:
1   ...   18   19   20   21   22   23   24   25   ...   50




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling