Dasturlash II 1-hafta mavzu: Sinf va ob’ektlarni e’lon qilinishi. Konstruktor va destruktor tushunchasi



Download 1,03 Mb.
bet3/7
Sana31.12.2021
Hajmi1,03 Mb.
#201303
1   2   3   4   5   6   7
Bog'liq
D2 maruza-1

1.3. Misol: Sinflarni aniqlash va ob’yektlarni yaratish

Key Point. Sinflar ob’yektlar uchun aniqlovchi hisoblanadi, ob’yektlar esa, sinflardan yaratiladi.

1.1-kodli ro`yxat – sinflar va ob’yektlarni namoyish qiluvchi dastur. U uchta doira ob’yektini 1.0, 25 va 125 radiuslari bilan yaratadi hamda har bir maydonni va radiusni ko`rsatadi. Ikkinchi ob’yekt radiusini 100 ga o`zgartiring va uni yangi radius va maydonda ko`rsating.



1.1-kodli ro`yxat.

  1. #include

  2. using namespace std;



  3. class Circle

  4. {

  5. public:

  6. // doira radiusi

  7. double radius;



  8. // Jimlk qoidasi bo`yicha sinf konstruktori

  9. Circle()

  10. {

  11. radius = 1;

  12. }



  13. // Sinf konstruktori

  14. Circle(double newRadius)

  15. {

  16. radius = newRadius;

  17. }



  18. // Doira maydonining qaytarilishi

  19. double getArea()

  20. {

  21. return radius * radius * 3.14159;

  22. }

  23. }; // nuqtali vergul qo`yish zarur



  24. int main()

  25. {

  26. Circle circle1(1.0);

  27. Circle circle2(25);

  28. Circle circle3(125);



  29. cout << circle1.radius <<"radiusli doira yuzasi: " <

  30. cout << circle2.radius <<"radiusli doira yuzasi: " <

  31. cout << circle3.radius <<"radiusli doira yuzasi: " <



  32. // Doira radiusiga o`zgartirish kiritish

  33. circle2.radius = 100;

  34. cout << circle2.radius <<"radiusli doira yuzasi: " <



  35. return 0;

  36. }

Natija:
Radiusli doira maydoni 1 radiusda 3.14159

Radiusli doira maydoni 25 radiusda 1963.49

Radiusli doira maydoni 125 radiusda 49087.3

Radiusli doira maydoni 100 radiusda 31415.9
Bu yerda, 4-27-satrlarda sinf aniqlanyapti. Shuni unutmaslik kerakki, 27-satr so`ngida nuqtali-vergul (;)ni ishlatish majburiy shart.

6-satrdagi public kalit so`zi sinf ob’yektlaridan ruxsat berish mumkin bo`lgan barcha ma’lumot maydonlari, konstruktorlar va funksiyalarni ifodalaydi. Agar biz public kalit so`zini ishlatmasak, ko`rinish jimlik qoidasiga ko`ra yopiqligicha qoladi. Qismiy ko`rinishlarni keyingi darslarda ko`rib chiqamiz.

Asosiy funksiya uchta ob’yektni circle1, circle2 va circle3 nomlari hamda mos ravishda 1.0, 25 va 125 radiuslar bilan hosil qiladi (31-33-satrlar). Bu ob’yektlar turli radiuslarga, ammo bir xil funksiyaga ega. Shuning uchun biz ularning mos qismlarini getArea() funksiyasi yordamida hisoblashimiz mumkin. Ma’lumot maydonlariga ruxsat ob’yektlar orqali, mos ravishda circle1.radius, circle2.radius va circle3.radius yordamida olinishi mumkin.

Bu uchala ob’yekt mustaqil ob’yektlar hisoblanadi. 43-satrda circle2 radiusi 100 qiymatga o`zgartirilgan. Ob’yektning yangi radiusi va yuzi 44-45 satrlarda ko`rsatilgan.

Boshqa bir misol sifatida televizorlarni ko`rib chiqamiz. Har bir televizor – alohida holat (joriy kanal, tovushning joriy darajasi, o`chiq yoki yoniqligi)ga va xususiyatlar (kanallarni o`zgartirish, tovushni sozlash, yoqish/o`chirish)ga ega ob’yekt. Biz televizorlarni modellashtirish uchun sinflardan foydalanishimiz mumkin. Sinf uchun UML diagrammasi 1.4-rasmda keltirilgan.



1.4-rasm. Televizorlar uchun TV sinfi

1.2-kodli ro`yxatda TV sinfini aniqlovchi va ikkita ob’yektni yaratish uchun TV sinfi qo`llanilishiga oid dastur kodi berilgan.



1.2-kodli ro`yxat.

  1. #include

  2. using namespace std;



  3. class TV

  4. {

  5. public:

  6. int channel;

  7. int volumeLevel; // Tovush darajasi jimlik qoidasiga ko`ra 1 ga teng

  8. bool on; // Jimlik qoidasiga ko`ra TV o`chgan



  9. TV()

  10. {

  11. channel = 1; // Jimlik qoidasiga ko`ra kanal 1 ga teng

  12. volumeLevel = 1; // Jimlik qoidasiga ko`ra tovush darajasi 1 ga teng

  13. on = false; // Jimlik qoidasiga ko`ra TV o`chgan

  14. }



  15. void turnOn()

  16. {

  17. on = true;

  18. }



  19. void turnOff()

  20. {

  21. on = false;

  22. }



  23. void setChannel(int newChannel)

  24. {

  25. if (on && newChannel >= 1 && newChannel <= 120)

  26. channel = newChannel;

  27. }



  28. void setVolume(int newVolumeLevel)

  29. {

  30. if (on && newVolumeLevel >= 1 && newVolumeLevel <= 7)

  31. volumeLevel = newVolumeLevel;

  32. }



  33. void channelUp()

  34. {

  35. if (on && channel < 120)

  36. channel++;

  37. }



  38. void channelDown()

  39. {

  40. if (on && channel > 1)

  41. channel--;

  42. }



  43. void volumeUp()

  44. {

  45. if (on && volumeLevel < 7)

  46. volumeLevel++;

  47. }



  48. void volumeDown()

  49. {

  50. if (on && volumeLevel > 1)

  51. volumeLevel--;

  52. }

  53. };



  54. int main()

  55. {

  56. TV tv1;

  57. tv1.turnOn();

  58. tv1.setChannel(30);

  59. tv1.setVolume(3);



  60. TV tv2;

  61. tv2.turnOn();

  62. tv2.channelUp();

  63. tv2.channelUp();

  64. tv2.volumeUp();



  65. cout << "1-TV kanali" << tv1.channel

  66. << " va tovush darajasi: " << tv1.volumeLevel << endl;

  67. cout << "2-TV kanali " << tv2.channel

  68. << " va tovush darajasi: " << tv2.volumeLevel << endl;



  69. return 0;

  70. }

Natija:


1-TV kanali 30 va tovush darajasi: 3

2-TV kanali 3 va tovush darajasi: 2


E’tibor bering, TV o`chgan vaqtda uning kanali va tovush darajasi o`zgarmaydi. Kanalni yoki tovush darajasini o`zgartirishdan oldin kanal yoki tovush darajasining to`g`ri diapazonda turganlik xususiyati tekshiriladi.

Dastur 67-72-satrlarda ikkita ob’yektni hosil qiladi va kanallarni hamda tovush darajalarini sozlashga oid ishlarni bajarish uchun ob’yektlarning funksiyalarini chaqiradi. Dastur 78-81-satrlarda ob’yektlar holatlarini ko`rsatadi. 68-satrda esa, funksiya tv1.turnOn() sintaksis asosida chaqiriladi. Ma’lumotlar maydoniga ruxsat tv1.channel sintaksis asosida amalga oshiriladi (78-satr).

Bu misollar bizda sinflar va ob’yektlar haqida tasavvur uyg`otdi. Shu o`rinda konstruktorlar va ob’yektlar, ma’lumot maydonlariga ruxsat va ob’yektlarning funksiyalarini chaqirish haqida ko`plab savollar paydo bo`lishi mumkin. Keyingi qismlarda ushbu savollar batafsil yoritilgan.


Download 1,03 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish