Asosiy qism i-bob
xususiy himoyalangan
Download 394.25 Kb.
|
dasturlash asoslari kurs ishi Sh.shomurodov
- Bu sahifa navigatsiya:
- Olingan sinflardan kirish
- Tashqi funktsiyalar va sinflardan kirish
- 8 - 22 qatorlarda
- 28 - 32 qatorlar
- Derived_Class_Constructor (/ * parametrlari * /): Base_Class_Constructor (/ * parametrlari * /) {}
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: |
ma'muriyatiga murojaat qiling