Matematik injiniring yo’nalishi 20


Abstrakt metodlarni voris sinflarda qayta ishlash



Download 148,81 Kb.
bet7/8
Sana13.12.2022
Hajmi148,81 Kb.
#884994
1   2   3   4   5   6   7   8
Bog'liq
Kurs ishi dasturlash asoslari3

3.Abstrakt metodlarni voris sinflarda qayta ishlash.
Vorislik (inheritance) Obyektga Yonaltirilgan Dasturlash(OYD)ning muhim tamoyillaridan biridir. Voris orqali bir sinf boshqa sinfning funksionalligini o’zlashtirishi mumkin, ya’ni voris sinflar umumiy xususiyatlarni vorislik bilan olgan holda, ayrim xususiyatlarni qayta aniqlash orqali yoki yangi xususiyat kiritish orqali tayanch sinfga o’zgartirish mumkin. Shu sababli hosilaviy sinflarni aniqlash sezilarli ravishda kamayadi, chunki unga tayanch sinfdan farqli elementlar qo’shiladi. Aytaylik, bizda alohida shaxsni tavsiflovchi quyidagi Person sinfi mavjud:
class Person

{


private string _name;

public string Name


{


get { return _name; }

set { _name = value; }


}


public void Display()

{


Console.WriteLine(Name);

}
}

Ammo korxona ishchisini tavsiflovchi sinf kerak bo’lib qoldi deylik - bu Employee sinfi. Ushbu sinf Person sinfi bilan bir xil funktsiyani amalga oshirishi sababli, xodim ham o'z navbatida shaxs bo'lganligi sababli, Employee sinfini Person sinfining vorisi (yoki sinf osti) ga aylantirish mantiqan to'g'ri bo'ladi. Bu sinf o’z navbatida ajdod (yoki superklass) tayanch sinf deb nomlanadi:

class Employee : Person


{
}

Ikki nuqtadan keyin ushbu sinf uchun tayanch sinfni ko'rsatiladi. Person sinfi Employee sinfi uchun tayanch sinf hisoblanadi, va shuning uchun Employee sinfi Person sinfining barcha barcha xususiyatlarni, metodlarni, maydonlarni meros qilib oladi. Meros bo’lib o'tmaydigan yagona narsa bu tayanch sinfning konstruktorlari. Shunday qilib, Vorislik is-a munosabatini amalga oshiradi, Employee sinfining ob'ekti o’z navbatida Person sinfining ham ob'ekti hisoblanadi

static void Main(string[] args)


{


Person p = new Person { Name = "Tom" };

p.Display();


p = new Employee { Name = "Sam" };


p.Display();


Console.Read();


}
Employee sinfining obyekti o’z navbatida Person sinfining ham obyekti bo’lganligi sababli, o'zgaruvchini quyidagicha aniqlay olamiz :

Person p = new Employee();


Kelishuv bo’yicha, Vorislik oshkor ravishda ko’rsatilmasa ham, barcha sinflar Object tayanch sinfining vorisi hisoblanadi. Shuning uchun ham, yuqorida keltirilgan Person hamda Employee sinflari o'zlarining metodlaridan tashqari, Ob'ekt sinfining quyidagi metodlariga ham ega: ToString(), Equals(), GetHashCode() va GetType(). Kelishuv bo'yicha barcha sinflar voris qilib olinishi mumkin. Biroq, bu yerda bir qator cheklovlar mavjud: Person va Employee



  1. To’plamli vorislik qo'llanilmaydi, sinf faqat bitta sinfdan voris olishi mumkin.

2.Hosilaviy sinfni yaratishda tayanch sinfning kirish kaliti ham hisobga olinilishi zarur, yani hosilaviy sinfning kirish kaliti tayanch sinfniki bilan bir xil bo’lishi yoki undanda cheklovliroq bo'lishi talab etiladi. Ya'ni, agar tayanch sinf internal kirish kalitiga ega bo'lsa, hosilaviy sinf (voris sinf) ham internal yoki private kirish kalitiga ega bo’lishi mumkin, lekin public kirish kalitiga ega bo’lishi bo’la olmaydi.


Shuni hisobga olish kerakki, agar tayanch va hosilaviy sinflar har xil loyihalarda bo'lsa, unda hosilaviy sinf faqat public modifikatorga ega bo'lgan sinfdan voris olinishi mumkin.
3.Agar sinf sealed modifikator bilan e'lon qilingan bo'lsa, u holda ushbu sinfdan voris olib bo’lmaydi. Masalan, quyidagi sinfdan voris olib bo'lmaydi:

sealed class Admin


{


}
4.Sintaktik sinfdan voris olib bo’lmaydi.

Abstrakt sinflardan meros olish


Boshqa sinflarga o'xshab, abstrakt sinfdan yangi sinf yaratishimiz mumkin bo'ladi.
Bu yerda yagona farq bu parent sinfda belgilangan abstrakt metod ta'rifini child sinflarda ham belgilashingiz kerak.
Agar child sinfda abstrakt metod ta'rifi yozilmagan bo'lsa, unda u abstrakt sinf sifatida belgilanishi kerak.

Keling, Vehicle sinfini meros qilib oluvchi 2 child sinf yaratamiz va unga abstrakt metod ta'rifi mileage() ni belgilaymiz:




//child sinfi
class car extends Vehicle
{
public function mileage()
{
echo “I am” . $this->name . “
”;
echo “My mileage range is 15 to 22 Km/L;
}
}
?>

Biz xohlaganimizcha child sinfni yaratishimiz mumkin, masalan:



// child sinfi
Class Motorcycle extends Vehicle
{
public function mileage()
{
echo “I am” . $this->name . “
”;
echo “My mileage range is – 35 to 47 Km/L”;
}
}
?>

Yuqorida ta'kidlab o'tkanimizdek, abstrakt sinfda hech qanday obyekt bo'lmaydi, bir marta mos child sinfni belgilaymiz va ularni obyektlarini yarataveramiz.



$car = new Car();


$car->setName(“BMV X1”);
$car->mileage();
I am BMV X1
My mileage range is 15 to 22 Km/L

MISOL:
using System;

abstract class AbstractClass
{
// Abstrakt bo'lmagan metod
public int AddTwoNumbers(int num1, int num2)
{
return num1 + num2;
}
public abstract int MultiplyTwoNumbers(int num1, int num2);
}

class VorisClass : AbstractClass


{
public override int MultiplyTwoNumbers(int num1, int num2)
{
return num1 * num2;
}
}

class Program


{
static void Main(string[] args)
{
VorisClass d = new VorisClass();
Console.WriteLine($"Yig'indi: {d.AddTwoNumbers(4, 6)}, Ko'paytma: {d.MultiplyTwoNumbers(6, 4)}");
}
}
Natija: Yig'indi: 10, Ko'paytma: 24

XULOSA
Abstraktsiya - bu umumiy tushunchadir, uni real dunyoda ham, OOP ga asoslangan dasturlash tillarida ham topishimiz mumkin. Haqiqiy dunyodagi har qanday narsalar, masalan, aytib o'tilgan bankomat aparati yoki hozirgi dasturiy ta'minot loyihamizdagi sinflar va ichki qismni berkituvchi omillar abstraktsiyani ta'minlaydi.


Ushbu abstraktsiyalar, murakkablikni kichikroq qismlarga ajratish orqali ishni ancha osonlashtiradi. Eng asosiysi, biz ularni qanday qilib funksionallikni ta'minlayotganini tushunmasdan turib, foydalanishimiz mumkin bo'ladi.


Bu kurs ishini yozish mobaynida juda ko’p bilimlarni oldim va ularni shu yerda yozdim.Umuman olganda fanni o’zidan juda kop bilimlarni egalladim. Hozirgi kunda C# dasturlash tili o’zining imkonyatlari kengligi bilan boshqa dasturlash tillaridan ajralib turibdi va men shu tilni oz bo’lsada o’rganganimdan xursandman
MUNDARIJA
I.KIRISH
II.ASOSIY QISM………………………………………...5
1.C# Dasturlash tili……………………………………….5
2.Abstrakt sinflar e’loni…………………………………10
3. Abstrakt berilganlar va metodlar.…………………….15
4. Abstrakt metodlarni voris sinflarda qayta aniqlash…..23
III.XULOSA…………………………………………….30

Download 148,81 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish