vorislik

DOC 17 sahifa 75,0 KB Bepul yuklash

Sahifa ko'rinishi (5 sahifa)

Pastga aylantiring 👇
1 / 17
vorislik – bu imkoniyatdan mavjud sinfdan yangi sinflar yaratishda foydalaniladi. yangi sinflar mavjud sinflarning funksionalligini asos sifatida voris qilib olishi mumkin. eski sinflar bu yerda ona yoki bazali sinflar deyiladi. yangilari esa – avlod yoki qiz farzand (nima uchun o’g’il emas – bu tushunarsiz) sinflar yoki sinfning hosilalari deb ataladi. yangi sinflar eskisining funksionalligini kengyatiradi, shuning uchun u kabi ishlaydi, lekin va yana ba’zi bir eskisida yo’q narsalarni beradi. vorislik o’rnatilishida avlod sinf mavjud bo’lib, ishlashi uchun ona sinfning barcha a’zolari public yoki protected atributi orqali berilishi kerak. bazali sinfga misol sifatida quyidagini (8.8-listing) keltirishimiz mumkin: 8.8-listing class avto // avtomobil { const int maxtezlik = 90; // avtomobil tezligining maksimumi int avtotezlik; // maydon public int tezlik // xossa (umumruxsatli bo'lishi kerak) { get { return avtotezlik; } set { avtotezlik = value; if (avtotezlik > maxtezlik) // avtomobil tez-ligini nazorat qilish avtotezlik = maxtezlik; } } // tezlik …
2 / 17
nom; // maydon — avtomobil markasi public string nom // xossa (umumruxsatli bo'lishi ke-rak) { get { return avtonom; } set { avtonom = value; if (avtonom.length > maxnom) avtonom = "xato: marka nomi 20 tadan katta bo'lmasligi kerak"; } } } bu listing ham oldingi 8.8-listingda berilgan konstruksiyaga o’xshash, shuning uchun faqat birinchi satrni izohlaymiz. demak, avlod sinfni e’lon qilish uchun avlod sinf nomidan so’ng ikki nuqta belgisi qo’yilib, so’ng uning bazali (ona) sinfi yoziladi. endi bu ma’lumotlar asosida, bu ikki sinfni bitta dasturda yozib, dasturning asosiy qismi main() da ularni ishlatib ko’ramiz. dasturda tezlik xossasini ona sinfdan olib, uni avlod sinfda o’zgartiramiz va avlod sinfda avtomobil markasi bilan ishlaymiz. dasturning to’liq ko’rinishi 8.10–listingda berilgan. 8.10-listing using system; namespace dasturavlodajdod { internal class avto // avtomobil { private const int maxtezlik = 90; // avtomobil tez-ligining maksimum qiymati private int avtotezlik; // maydon public int tezlik // xossa (umumruxsatli …
3 / 17
avto1.tezlik); } } } birinchidan, shuni yodddan chiqarmasligimiz kerakki, xossa public atributiga ega bo’lishi, ya’ni umumruxsatli bo’lishi kerak. agar public atributida ko’rsatilmasa, kompilyator sinfning bu a’zosini avtomatik ravishda private atributiga o’zlashtiradi. lekin xossa avtomatik bo’lsa, u holda jimlik bo’yicha u public atributiga tegishli bo’ladi. bizning holatda xossa avtomatik ravishda e’lon qilinmagan, mukamallashtirilgan sintaksis bilan an’anaviy usulda berilgan. ikkinchidan, sinfning hosilasida obyekt yaratilsa, uning barcha a’zolari qiymat qabul qilishi kerak, shu jumladan, tabiiyki, konstruktor orqali yoki to’g’ridan-to’gri onasidan o’tganlari ham (q. avto1.tezlik=88). vorislikni ta‘qiqlash buning uchun c# tilida maxsus kalit so’zlar mavjud. agar biror sinfga belgi qo’yilsa, shu sinfdan vorislik olish mumkin emas. bu so’z – sealed so’zi orqali amalga oshiriladi. agar yuqoridagi avto nomli ona sinfni quyidagicha e’lon qilamiz: sealed class avto endi ushbu sinfdan vorislik olaylik: class my_avto : avto bu holatda kompilyator xatolik haqida xabar beradi. c# tilida oldindan mavjud bo’lgan juda ko’plab sinflardan vorislik olib bo’lmaydi. masalan, …
4 / 17
nganda (bunda maxsuslashtirilgan konstruktor deb nomlanadi, ya’ni parametrlari bilan), barchasi juda oddiy bo’ladi: hosila sinfning obyekti konstruksiyalanadi, obyektning bazali qismi esa, jimlik bo’yicha avtomatik konstruksiyalanadi (bazali sinfda konstruktor yo’q, taxminimizcha, demak, u jimlik bo’yicha olinadi). agar konstruktor bazali sinfda aniqlansa, obyektni qurishda biroz jarayon murakkablashadi, ikkila sinfda bir konstruktorlarni joriy qilishga to’g’ri keladi. bazali sinfda ko’plab konstruktorlar bo’lishi mumkin. aniq holatda ulardan qaysi birini joriy qilish kerak? bazali sinfdagi kerakli konstruktorni ishga joriy etish uchun base kalit so’zidan foydalanishga to’g’ri keladi. hosila sinfda bazali sinfdagi konstruktorni e’lon qilish formasi umumiy ko’rinishda quyidagicha bo’ladi: hosila_sinf konstruktori (parametrlar ro’yxati): base (parametrlar ro’yxati) { //konstruktorning tanasi } bu yerda base (parametrlar ro’yxati) – bundagi parametrlar bazali sinfdagi kerakli konstruktorni ishga yurgizish uchun qo’llaniladi. qaysi konstruktorni ishga yurgizish kerak bo’lsa, kompilyator uning miqdori va parametr tiplari bo’yicha aniqlaydi. maydon initsializatsiyalashtirilgandan keyin, obyektning hosilasiga ma’lum bo’ladi. quyidagi misolni ko’raylik (8.11-listing). 8.11-listing using system; namespace app28_base …
5 / 17
c void main() { console.writeline("base kalit so'zi bilan ishlash\n"); hosila_sinf obj = new hosila_sinf(5, 2, 3, 4); console.writeline("bazali sinf obyektining koordinatalari: {0} {1} {2}", obj.x, obj.y, obj.z); obj.aer(obj); console.readline(); } } } takrorlaymiz, base kalit so’zi yordamida istalgan shaklda konstruktorga murojaat qilish mumkin. endi esa base kalit so’zi yordamida hosil qilingan prinsipni qisqacha ko’rib chiqamiz. qachonki, hosila sinfda base kalit so’zi ko’rsatilsa, bevosita bazali sinfdan konstruktorni chaqiradi. shunday ekan, bazali sinfga har doim base kalit so’zi orqzli murojaat qilinadi, sinflarga murojaatda bevosita iyerarxiyaga chaqiriladi. base() metodining argumentlari sifatida bazali konstruktorga argumentlar jo’natiladi. agar kalit so’z mavjud bo’lmasa, jimli bo’yicha bazali sinfdan foydalanib konstruktor avtomatik chaqiriladi. muhrlangan sinfni sinfga qo’shish ko’rib chiqdikki, muhrlangan sinfdan vorislik olib bo’lmaydi. ayrim holatlarda o’zimizning sinfimizda ushubu murhlangan sinfning a’zolaridan foydalanishni istaymiz. bu qanday bajariladi? takrorlaymiz, vorislikka yo’l qo’yilmaydi. bu muammoni yechish uchun muhrlangan sinfda olingan elementni chaqirish usulini qo’llaymiz. quyidagi dasturda (8.12-listing) muhrlangan sinfdan foydalanish …

Ko'proq o'qimoqchimisiz?

Barcha 17 sahifani Telegram orqali bepul yuklab oling.

To'liq faylni yuklab olish

"vorislik" haqida

vorislik – bu imkoniyatdan mavjud sinfdan yangi sinflar yaratishda foydalaniladi. yangi sinflar mavjud sinflarning funksionalligini asos sifatida voris qilib olishi mumkin. eski sinflar bu yerda ona yoki bazali sinflar deyiladi. yangilari esa – avlod yoki qiz farzand (nima uchun o’g’il emas – bu tushunarsiz) sinflar yoki sinfning hosilalari deb ataladi. yangi sinflar eskisining funksionalligini kengyatiradi, shuning uchun u kabi ishlaydi, lekin va yana ba’zi bir eskisida yo’q narsalarni beradi. vorislik o’rnatilishida avlod sinf mavjud bo’lib, ishlashi uchun ona sinfning barcha a’zolari public yoki protected atributi orqali berilishi kerak. bazali sinfga misol sifatida quyidagini (8.8-listing) keltirishimiz mumkin: 8.8-listing class avto // avtomobil { const int maxtezlik = 90; // avtomobi...

Bu fayl DOC formatida 17 sahifadan iborat (75,0 KB). "vorislik"ni yuklab olish uchun chap tomondagi Telegram tugmasini bosing.

Teglar: vorislik DOC 17 sahifa Bepul yuklash Telegram