26-mavzu. Ichma-ich joylashgan sinflar. Reja
Download 53.57 Kb.
|
26-maruza matni (1)
- Bu sahifa navigatsiya:
- Ichki sinflar
26-mavzu. Ichma-ich joylashgan sinflar. Reja: Ichma-ich joylashgan sinflar e’loni. Ichma-ich joylashgan sinflarni nomlar fazosida ishlatish. Muhrlangan sinfni sinfga qo’shishKo’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’rsatilgan: 8.12-listing using System; namespace app29_include_sealed { sealed public class A { private int a; // Maydon private int b; // Xossa public int A_a { get { return a; } set { a = value; } } public int A_b { get { return b; } set { b = value; } } // Konstruktor public A(int a, int b) { this.a = a; this.b = b; } // Metod public int M_A() { return (a + b); } } internal class B { public int c; public A ab = new A(15, 20); public B(int cc) { c = cc; } } internal class Program { public static void Main() { B ba = new B(5); int sum = ba.c + ba.ab.M_A(); Console.WriteLine("Yaratilgan obyektda Muhrlangan sinfdan foydalanish"); Console.WriteLine("B sinfning maydoni bilan = {0}", ba.c); Console.WriteLine("Muhtrlangan A sinfining maydoni= {0}, {1}", ba.ab.A_a, ba.ab.A_b); Console.WriteLine("A dagi va B dagi metodlar yig'indisi natijasi: {0}", sum); } } } Demak, muhrlangan A sinfida ikkita maydon mavjud, ruxsat faqat ikkita mos xossalar orqali amalga oshiriladi: A_a va A_b. A sinfi M_A() metodiga ega bo’lib, u yopiq maydonlarning qiymatlari yig’indisini hisoblaydi. Biz B sinfini qurishda bitta c maydoni va muhrlanga sinfidan olinga ab obyektidan foydalandik. Ekranda chiqarilgan ma’lumotlarga qarasak (8.6-rasm), garchi vorislik bo’lmasa ham, A sinfning funksionalligidan B sinfida foydalanilgan (shu jumladan, M_A() metodidan ham). Agar e’tibor bergan bo’lsak, biror sinfning obyekti boshqa sinfning ichida joylashgan bo’lsa, bu holatda sinfning ichidagi obyektga murojaat qilish uchun nuqta amalidan foydalanilgan Buni int sum = ba.c + ba.ab.M_A(); satrida kuzatishimiz mumkin. Bu yerda ab obyekti B sinfining ichida joylashgan. 8.6-rasm. Muhrlangan sinf elementlaridan foydalanish Ichki sinflarYuqoridagi misolda biz ichki tiplarni qo’lladik: C# tilida ichki tiplarga ruxsat beriladi( Bu holatda sinf tipi nazarda tutilmoqda, qolgan tiplarni bunday ishlatish haqida bilmaymiz)1. Bunda ichki tiplar oddiy a’zolarini yoki ichki sinflarni qamrab olgan hisoblanadi. Ichki sinflarga misol: public class TashqiSinf { public class IchkiSinf1 { } private class IchkiSinf2 { } } Agar ichki sinflardan foydalanishimiz uchun, undagi mavjud bo’lgan barcha sinflarni nuqta amali vositasida ketma-ket yozib chiqishimiz kerak. Misol sifatida yuqorida e’lon qilingan IchkiSinf1 sinfida yaratilgan obyektni asosiy dasturda e’lon qilishni ko’rib chiqamiz: static void Main() { TashqiSinf.IchkiSinf1 obj1 = new TashqiSinf.IchkiSinf1(); } Agar ichki sinflar bir nechta tashqi sinflar ichida joylashsa uning obyektini yaratish uchun biroz ko’proq yozuv yozishimizga to’g’ri keladi. Bu muammoni bartaraf etish usuli allaqachon o’ylab topilgan. Buning uchun integrallashgan muhitning Podskazchiklari yordamga keladi. Agar biz birinchi turgan tashqi sinfni yozishimiz bilanoq, u bizga unda mavjud bo’lgan a’zolar va ichki sinflar haqida ma’lumotni beradi. Darhol ulardan birini tanlab Download 53.57 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling