1-ma’ruza C++ da Sinflar va obyektlar. Konstruktor va destruktor. Sinf usullari reja


Download 86.61 Kb.
bet12/23
Sana09.06.2023
Hajmi86.61 Kb.
#1472539
1   ...   8   9   10   11   12   13   14   15   ...   23
Bog'liq
Algoritmlashga kirish fanidan majmua

class Person
{
public string Name { get; set; }
public Person(string name)
{
Name = name;
}
public virtual void Display()
{
Console.WriteLine(Name);
}
}
class Employee : Person
{
public string Company { get; set; }
public Employee(string name, string company) : base(name)
{
Company = company;
}
}


Bu kodda Person klassi odamni ifodalaydi. Employee klassi Person klassidan meros oladi va u korxona ishchisini ifodalaydi. Employee klassi ota klassdan meros olgan Name xossasidan tashqari Company xossasiga ham ega.


Savollar.

  1. Kompanentalarining kvalifikatsiyalangan nomlaridan nima maqsadda foydalaniladi.

  2. Oddiy vorislikga dastur kodini yozing.

  3. Vorislikda destruktorlar hossalari haqida ayting.


4-ma’ruza Sinf qoliplari, ularni yaratish va ishlatish.
REJA:

  1. Sinf qoliplari.

  2. Sinf qoliplarini yaratish.

  3. Sinf qoliplari ishlatish.

Kalit so’zlar:, ro’yxat, manzil, nolinchi ko’rchsatkich, tugun, adres olish &, bo’shatish, ko’rsatkich, virtual destruktor, xotira, xotira chiqishi, destruktor, toifani o’zlashtirish, Inkapsulyasiya, inline, polimorfizm, vorislik, SINF a’zo destruktori.
Sinfning statik a’zolari
Sinf a’zolari static modifikatori bilan e’lon qilinishi mumkin. Sinf statik a’zosini sinf sohasi chegarasida murojaat qilish mumkin bo’lgan global o’zgaruvchi yoki funksiya deb qarash mumkin. Sinfning static deb e’lon qilingan berilganlar- a’zolari sinfning barcha ob’yektlari tomonidan birgalikda ishlatiladi, chunki bunday o’zgaruvchining yagona nusxasi bo’ladi.
Amalda sinfning statik berilganlari uchun xotiradan joyajratiladi, hattoki sinfning birorta ob’yekti bo’lmasa ham. Shu sababli sinf statik berilganini e’lon qilib qolmasdan, uni aniqlash shart. Masalan:
slass Sinf
{
public:
Sinf();
static int Sanagich;//statik berilgan–a’zo e’loni
}
int Sinf::Sanagich=0; // statik berilgan–a’zo e’loni
Bu misolda, garchi Sanagich statik berilgan – a’zo public bo’limida e’lon qilingan sinf ob’yekti nomini ishlatish yordamida murojaat qilish mumkin.
Sinf sinf1;
Sinf1.Sanagich++; Sinf sinf2;
Sinf2->Sanagich--;
Statik berilganlar – a’zolarga sinf nomi orqali murojaat qilgan ma’qul bo’ladi.
Sinf::Sanagich++;
Bu holat Sanagich statik berilgan–a’zo barcha sinf ob’yektlari uchun yagona ekanligini ta’kidlaydi.
Agarda statik berilganlar yopiq deb e’lon qilingan bo’lsa, ularga funksiyalar – a’zolar orqali murojaat qilish mumkin.
Umuman olganda statik berilganlar–a’zolarni ishlatishda quyidagi takliflarni berish mumkin:
statik berilganlar-a’zolarni bir nechta sinf ob’yektlari tomonidan birgalikda ishlatish uchun aniqlang;
statik berilganlar-a’zolarini private, protected modifikatorlar bilan e’lon qilish orqali ularga murojaatni cheklang.
Sinfning statik berilgan-a’zosini ishlatishga misol.
slass S;
{
public: S() {ob_soni++;}
~S() {ob_soni--;} static int ob_soni ; private:
int x;
};
int S::ob_soni=0; int main ()
{
S* p_ob=new S[5];
cout<<”Sinfning ”<delete [] p_ob; return 0;
}
Dastur ishlash natijasida ekranga Sinfning 5 ob’yekti mavjud.
Sinfning statik funksiyalarni ishlatishning o’ziga xosligi shundaki, ular ham yagona nusxada aniqlanadi va birorta sinf ob’yektining “shaxsiy” funksiyasi bo’lmaydi. Shu sababli, bu funksiyalarga this ko’rsatgichi uzatilmaydi. Statik funksiyalarning bunday xususiyatidan Windows uchun dasturlashda keng foydalaniladi.
Yuqorida aytilgan fikrlardan bir nechta muhim xulosalar kelib chiqadi:
statik funksiya –a’zolarni sinfning birorta ham vakili (ob’yekti) mavjud bo’lmasa ham chaqirish mumkin;
sinfning statik funksiyasi faqat sinfning statik berilganlarini qayta ishlashi mumkin va faqat sinfning statik funksiya–a’zolarini chaqirishi mumkin;
statik funksiya-a’zo virtual modifikatori bilan e’lon qilinishi mumkin emas. Quyida keltirilgan dastur funksiya–a’zoni ishlatishga misol bo’ladi: #include
class S
{
public:
S() {sanagich++};
~S() {sanagich--};
//..
static int Sinf_Sanagichi(){return sanagich;} private:
int x;
static int sanagich;
};
int S::sanagich=0;
int main()
{
S * pOb= new S[10];
cout<<”S sinfning “<<<” Ob’yekti mavjud”<return 0;
}



Download 86.61 Kb.

Do'stlaringiz bilan baham:
1   ...   8   9   10   11   12   13   14   15   ...   23




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