Asosiy qism i-bob


xususiy himoyalangan


Download 394.25 Kb.
bet7/14
Sana05.01.2022
Hajmi394.25 Kb.
#206631
1   2   3   4   5   6   7   8   9   10   ...   14
Bog'liq
dasturlash asoslari kurs ishi Sh.shomurodov

xususiy

himoyalangan

jamoat

Sinf tanasidan kirish

 Ochiq

  ochiq

  ochiq

Olingan sinflardan kirish

 Yopiq

  ochiq

  ochiq

Tashqi funktsiyalar va sinflardan kirish

 Yopiq

 yopiq

  ochiq

Agar siz asosiy sinf sifatida foydalanishni rejalashtirgan sinfni tashkil qilsangiz, uning protected o'rniga  maydonni e'lon qiling  private. Aks holda, olingan sinf ob'ektlari asosiy sinf elementlariga kira olmaydi.

Quyida, 8 - 22 qatorlarda tayanch sinfning usullari aniqlangan. A parametresiz FirstClass()konstruktor, bir parametresiz  quruvchi,  FirstClass( int input )  va bir usul void show_value()qiymatini mudroq valueekranga.

Hosilning ta'rifi 25 - 38 satrlarda . 

Meros sintaksisi quyidagicha -sinf Derived_Class_Name: kirish asoschisi Base_Class_Name {}; Yo'g'on ichakni :  ikki qavatli yo'g'on ichak bilan aralashtirish mumkin emas ::(miqyosi). Ushbu operator yordamida biz qaysi sinf hosil bo'lgan sinfdan meros bo'lib o'tishini ko'rsatamiz.

Hosil qilingan sinfning muhim xususiyati shundaki, u maydonlarning barcha usullari va elementlaridan protectedva  public tayanch sinfidan foydalanishi mumkin bo'lsa-da, konstruktorga parametrlari bilan kira olmaydi. Agar hosil bo'lgan sinfda konstruktorlar aniqlanmasa, ob'ekt yaratilganda asosiy sinf argumentlari bo'lmagan konstruktor yonadi. Agar hosil bo'lgan sinf ob'ektini yaratishda zudlik bilan ma'lumotlarni kiritish kerak bo'lsa, unda buning uchun o'z konstruktorlarimizni aniqlashimiz kerak. Bizning misolimiz konstruktor kodini qayta yozmaslik uchun qanday qilib hali ham tayanch sinf konstruktorlaridan foydalanishimiz mumkinligini ko'rsatadi - 28 - 32 qatorlar . Buning uchun, hosil bo'lgan sinfning konstruktorini aniqlashda, uning nomidan keyin operatorni qo'shib qo'ying: va olingan sinf ob'ekti yaratilganda chaqiriladigan asosiy sinf konstruktorining nomi - SecondClass() : FirstClass (){}. Konstruktor tanasini bo'sh qoldiring. barcha ishlarni asosiy sinf konstruktori bajaradi. Parametrli konstruktor bo'lsa, biz ushbu parametrni konstruktorga asosiy sinfning parametri SecondClass(int inputS) : FirstClass (inputS){} - 31-chiziq bilan o'tkazamiz .

Asosiy funktsiyalarda biz bazaviy va hosil bo'lgan sinflarning ob'ektlarini yaratamiz - FirstClass F_object(3); va   SecondClass S_object(4); ularning qiymatlarini ekranda namoyish etamiz  value. 50 - satrda ko'rib turganingizdek , olingan sinf ob'ekti show_value()asosiy sinf usuliga kirishda hech qanday muammo tug'dirmaydi  . Go'yo bu o'z uslubi edi. Quyida biz value olingan sinfning qiymatlarini kvadratga aylantiradigan usulni chaqiramiz  . Va biz ushbu o'zgargan qiymatni ekranda aks ettiramiz. Ammo biz ushbu usulni F_object.ValueSqr(); asosiy sinf ob'ekti uchun - - deb atamoqchi bo'lsak   , kompilyator bizga buni amalga oshirishga yo'l qo'ymaydi va xatoga yo'l qo'yadi. Bu yana bir muhim xususiyat - hosil qilingan sinf asosiy sinfga kirish huquqiga ega va bazaviy sinf hatto hosil bo'lgan sinfning mavjudligini "bilmaydi" va uning kodidan foydalana olmaydi.



 Dastur natijasi:

Ro'yxat sifatida men bilishim kerak bo'lgan sinf merosi haqida asosiy ma'lumotlarni beraman:



  • Meros - bu maydon sinflaridan tashqari asosiy sinfning barcha a'zolari va usullariga murojaat qilishi mumkin bo'lgan hosil bo'lgan sinfning ta'rifi private;

  • Hosil qilingan sinf, shuningdek, avlod yoki pastki sinf, asosiy sinf esa ota yoki superklass deb ataladi;

  • Hosil qilingan sinfni aniqlash uchun sintaksis:    sinf Derived_Class_Name: kirish asoschisi Base_Class_Name {/ * code * /}; 

  • Hosil qilingan sinf asosiy sinfning barcha a'zolari va usullariga kirish huquqiga ega, va asosiy sinf faqat o'z a'zolari va usullaridan foydalanishi mumkin.

  • Olingan sinfda siz o'zingizning konstruktorlaringizni, destruktorlaringizni va ortiqcha yuklangan operatorlarni aniq belgilashingiz kerak, chunki ular asosiy sinfdan meros bo'lib o'tmaydi. Ammo ularni konstruktorni, destruktorni belgilash yoki olingan sinfning tayinlash operatorini haddan tashqari yuklash orqali aniq (masalan, konstruktor uchun) chaqirish mumkin: Derived_Class_Constructor (/ * parametrlari * /): Base_Class_Constructor (/ * parametrlari * /) {} ...

  • Merosxo'rlikning yana bir muhim jihati - bu haddan tashqari yuklangan funktsiyalar - avlodlar sinfining usullari. Biz buni ushbu misolda ko'rib chiqmadik. Ammo shuni bilishingiz kerakki, agar ota-ona sinfida va uning avlod sinflarida bir xil nomdagi usullar mavjud bo'lsa, unda kompilyator avlodlar sinfining usullarini avlodlar sinfining ob'ektlari uchun ishlatadi. Avlodlar sinfining haddan tashqari yuklangan usullari ota-ona usullarini chaqirishi mumkin. Bunday holda, operator yordamida ko'lamni to'g'ri belgilashingiz kerakligini yodda tutish kerak, :: aks holda kompilyator uni funktsiya chaqirig'i sifatida qabul qiladi. Shubhasiz, agar biz sinfdagi SecondClassfunktsiyani  haddan tashqari yuklagan bo'lsak  show_value(), u shunday bo'lar edi:


Download 394.25 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   ...   14




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