12-mavzu. Vorislik va unda konstruktorlarni ishlatish


Download 48.37 Kb.
bet1/3
Sana08.11.2023
Hajmi48.37 Kb.
#1755129
  1   2   3
Bog'liq
12-м. Ворислик. Синфлар шажараси.


12-mavzu. Vorislik va unda konstruktorlarni ishlatish
Ob'ektga asoslangan barcha dasturlash tillari (C #, Java, C ++, Smalltalk, Visual Basic va boshqalar) quyida keltirilgan ob'ektga yo'naltirilgan dasturlashning (OYD) uchta asosiy tamoyillariga mos kelishi kerak:
Inkapsulyatsiya - Dasturlash tildagi ob'ektlarning ichki bajarilishi tafsilotlarini yashirish va ma'lumotlar yaxlitligini himoya qilish imkoniyatlari.
Vorislik - Dasturlash tilining kodni ko’p marta foydalanishni rag'batlantirish imkoniyatlari.
Polimorfizm - Dasturlash tilning ob’ektlarni o'xshash munosabatdagi ob'ektlarga talqin qilish imkoniyati.
Vorislik ob'ektga yo'naltirilgan dasturlashning uchta asosiy tamoyillaridan biri bo’lib, u iyerarxik tasniflarni yaratishga imkon beradi. Voris orqali siz ko'plab bog'liq elementlarning xususiyatlarini aniqlaydigan umumiy sinfni yaratishingiz mumkin. Keyinchalik, o'ziga xos sinflar ushbu sinfdan o'ziga xos xususiyatlarini qo'shib, meros olishlari mumkin.
C # da, voris berayotgan sinf tayanch, voris bo’layotgan sinf esa hosila sinf yoki voris sinf deb nomlanadi. Shuning uchun, hosila sinf - bu tayanch sinfning ixtisoslashtirilgan versiyasidir. U tayanch sinfda aniqlangan barcha o'zgaruvchilarni, metodlarni, xususiyatlarni va indeksatorlarni meros qilib oladi, ularga o'z elementlarini qo'shadi.
C # da vorislikni qo'llab-quvvatlash shundan iboratki, siz bitta sinf e’lon qilinishidan boshqa sinfni kiritishingiz mumkin. Buning uchun hosila sinfni e'lon qilishda tayanch sinf ko'rsatiladi. Sinflar o'rtasida munosabatlar o'rnatilganda, ikki yoki undan ortiq turdagi sinflar o'rtasida munosabatlar o'rnatiladi. Klassik vorislikning asosiy g'oyasi shundan iboratki, boshlang'ich nuqtasi sifatida mavjud sinflardan foydalangan holda yangi sinflarni yaratish mumkin:
Tayanch sinfdan meros bo'lib o'tadigan yangi voris sinfni e'lon qilish quyidagicha ko'rinadi:
class voris_sinf_nomi : tayanch_sinf_nomi
{
// voris sinf tanasi
}

Misol:
using System;


class Ikki_ulcham
{
public double width;
public double height;
public void View() {
Console.WriteLine("Kengligi: " + width + ", balandligi: " + height);
}
public double sum()
{
return width + height;
}
}
class TY_Uchburchak : Ikki_ulcham
{
public string shape="Teng yonli uchburchak";
public double side;
public TY_Uchburchak(double a, double h)
{
width = a; height = h;
side = Math.Sqrt(height * height + width * width / 4);
}
public double UYuza()
{
return width * height / 2;
}
public double Perim()
{
return sum() + side;
}
}
class TTurtburchak : Ikki_ulcham
{
public string shape = "To'g'ri to'rtburchak";
public TTurtburchak(double w, double h)
{
width = w; height = h;
}
public double TTYuza()
{
return width * height;
}
public double Perim()
{
return 2 * sum();
}

}
class Program


{
public static void Main()
{
TY_Uchburchak u1 = new TY_Uchburchak(5,6);

Console.WriteLine(u1.shape + "ning yon tomoni: " + u1.side);


Console.WriteLine(u1.shape + "ning yuzasi: " + u1.UYuza());
Console.WriteLine(u1.shape + "ning perimetri: " + u1.Perim());
TTurtburchak t1 = new TTurtburchak(4, 7);
Console.WriteLine(t1.shape + "ning yuzasi: " + t1.TTYuza());
Console.WriteLine(t1.shape + "ning perimetri: " + t1.Perim());
Console.WriteLine(" To’rtburchak balandligi va kengligi yig’indi: " + t1.sum());
Console.ReadLine();
}
}

Ushbu misolda Tayanch sinf: Ikki_ulcham, voris sinflar: TY_Uchburchak, Tturtburchak.
Tayanch sinf a’zolari bo’lgan width, height maydonlar va sum() metodi TY_Uchburchak, Tturtburchak voris sinflarga meros qilingan ya’ni ularning ham a’zosi hisoblanadi.

Har qanday hosila sinf uchun faqat bitta tayanch sinfni ko'rsatish mumkin. C # bitta hosila sinfda bir nechta tayanch sinflarni meros qilib olishni ta'minlamaydi. (Shu nuqtai nazardan, C # C ++ dan farq qiladi, ya’ni bir nechta tayanch sinflardan meros olish imkoni. Buni C ++ kodini C # ga ko'chirishda hisobga olish kerak.) Ammo, siz hosila sinf boshqasining tayanch sinfiga aylanadigan meros ierarxiyasini yaratishingiz mumkin. Ammo har qanday holatda ham, hosila sinf o'zining tayanch sinfining barcha a'zolarini, shu jumladan maydonlarini, metodlarini, xususiyatlarini va indeksatorlarini meros qilib oladi.


Vorislikning asosiy ustunligi shundaki, bir nechta ob'ektlar uchun umumiy bo'lgan atributlarni belgilaydigan tayanch sinf yaratilgandan so'ng, undan har qanday sondagi hosila sinflarni yaratish uchun foydalanish mumkin. Va har bir hosila sinf o'z aniq tasnifiga ega bo'lishi mumkin.

Download 48.37 Kb.

Do'stlaringiz bilan baham:
  1   2   3




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