Har hil sinflar ob'ektlar va sinflarning uzlari vorislik munosabatlarida bo’lishi mumkin. Bu munosabat obe'ktlar va sinflar ierarhiyasi hosil bo’lishiga olib keladi



Download 251,22 Kb.
Sana26.01.2023
Hajmi251,22 Kb.
#903023


O’ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI QARSHI FILIALI


KOMPYUTER INJINIRINGI FAKULTETI
II BOSQICH TT 11-21 SIRTQI GURUH TALABASINING
DASTURLASH 1” FANIDAN
MUSTAQIL ISHI


Bajardi: Begimqulov D
Qabul qildi: Xudoyorov L

Qarshi – 2023
VORIS SINFLAR YARATISH VA ULAR YORDAMIDA MASALALARNI YECHISH
Reja

  1. Sinflarda vorislik

  2. Ko’p vorislik

  3. Ob’ektlar massivi bilan ish yuritish
    Xulosa
    Foydalanilgan adabiyotlar

Har hil sinflar ob'ektlar va sinflarning uzlari vorislik munosabatlarida bo’lishi mumkin. Bu munosabat obe'ktlar va sinflar ierarhiyasi hosil bo’lishiga olib keladi. Sinflar ierarhiyasi mavjud sinflar yordamida, ya'ngi sinf yaratishga imkon beradi. Mavjud sinflar asosiy (yoki yaratuvchi) bu sinflar asosida shakillangan sinflar hosilaviy (yoki yaratilgan), ba'zida sinf vorislari yoki meroshurlari deb ataladi. Hosilaviy sinflar asosiy sinflarning ma'lumotlari va metodlarini merosga oladilar. Bundan tashqari ularning o’z ma'lumotlari va metodlari bo’lishi mumkin. Me'roslik o’tuvchi pommosontalar hosilaviy sinflarga ko’chmaydi, balki asosiy sinflarda qoladi. Agar ahborotlarni qayta ishlash uchun hosilaviy sinfda yuq bo’lgan ma'lumotlar kerak bo’lsa ular avtomatik ravishda asosiy sinfda qidiriladi. Vorislik hosilaviy sinfning mavjud asosiy sinfning harakteristikalarini merosga olish hususiyatidir. Misol uchun asosiy sinf employee mavjud bo’lsin:


class employee
{
public:
employee(char *, char *, float);
void show_employee(void);
private:
char name[64];
char position[64];
float salary;
};
Dasturda yangi manager sinfi yaratib employee sinfining qo’yidagi elementlarini merosga olishi lozim bo’lsin:
float annual_bonus;
char company_car[64];
int stock_options;
U holda manager sinfi qo’yidagicha ta'riflanadi:
class manager : public employee
{
public:
manager(char *, char *, char *, float, float, int);
void show_manager(void);
private:
float annual_bonus;
char company_car[64];
int stock_options;
};
Hosilaviy sinf asosiy sinfning elementlariga to’g’ridan – to’g’ri nuqta operatori orqali murojaat qila olmaydi. Qo’yidagi MGR_EMP.CPP dasturda vorislikdan foydalanish ko’rsatiladi:
#include
#include
class employee
{
public:
employee(char *, char *, float);
void show_employee(void);
private:
char name [ 64 ];
char position[64];
float salary;
};
employee::employee(char *name, char *position,float salary)
{
strcpy(employee::name, name);
strcpy(employee::position, position);
employee::salary = salary;
}
void employee::show_employee(void)
{
cout << "Imya: " << name << endl;
cout << "Doljnost': " << position << endl;
cout << "Oklad: $" << salary << endl;
}
class manager : public employee
{
public:
manager(char *, char *, char *, float, float, int);
void show_manager(void);
private:
float annual_bonus;
char company_car[64];
int stock_options;
};
manager::manager(char *name, char *position, char *company_car, float salary, float bonus, int stock_options) : employee(name, position, salary)
{
strcpy(manager::company_car, company_car) ;
manager::annual_bonus = bonus ;
manager::stock_options = stock_options;
}
void manager::show_manager(void)
{
show_employee();
cout << "Mashina firmih: " << company_car << endl;
cout << "Ejegodnaya premiya: $" << annual_bonus << endl;
cout << "Fondovihy optsion: " << stock_options << endl;
}
void main(void)
{
employee worker("Djon Doy", "Programmist", 35000);
manager boss("Djeyn Doy", "Vitse-prezident ", "Lexus", 50000.0, 5000, 1000);
worker.show_employee() ;
boss.show_manager();
}
Bu misolda manager sinfi konstruktoriga e'tibor berish lozimdir. Asosiy sinfning konstruktorini qo’yidagicha chaqirish lozimdir:
manager::manager(char *name, char *position, char *company_car, float salary, float bonus, int stock_options) :
employee(name, position, salary) //————————————— Konstruktor bazovogo klassa
{
strcpy(manager::company_car, company_car);
manager::annual_bonus = bonus;
manager::stock_options = stock_options;
}
Yana shunga e'tibor berinki show_manager funktsiyasi show_employee funktsiyasini chaqirishi mumkin, chunki manager sinfi employee sinfining vorisi bo’lgani uchun, umumiy elemenlariga murojaat qilishi mumkindir. Ikkinchi misol
Misol uchsun book asosiy sinfi mavjud:
class book
{
public:
book (char *, char *, int);
void show_book(void);
private:
char title[64];
char author[b 4];
int pages;
};
Yangi library_card sinfi book sinfiga qo’yidagi elemenlarni qo’shishi lozim:
char catalog[64];
int checked_out; // 1, agar tekshirilgan bulsa, aks holda O
Dasturda bu sinf vorislik yordamida qo’yidagicha ta'riflanishmi lozim
class library_card : public book
{
public:
library_card(char *, char *, int, char *, int);
void show_card(void);
private:
char catalog[64] ;
int checked_out;
};
Qo’yidagi BOOKCARD.CPP dasturida bu sinflardan foydalanish ko’rsatilgan:
#include
#include
class book
{
public:
book(char *, char *, int);
void show_book(void);
private:
char title [64];
char author[64];
int pages;
};
book::book(char •title, char *author, int pages)
{
strcpy(book::title, title);
strcpy(book::author, author);
book::pages = pages;
}
void book::show_book(void)
{
cout << "Nazvanie: " << title << endl;
cout << "Avtor: " << author << endl;
cout << "Stranits: " << pages << endl;
}
class library_card : public book
{
public:
library_card(char *, char *, int, char *, int);
void show_card(void) ;
private:
char catalog[64];
int checked_out;
};
library_card::library_card(char *title, char *author, int pages, char *catalog, int checked_out) : book(title, author, pages)
{
strcpy(library_card::catalog, catalog) ;
library_card::checked_out = checked_out;
}
void 1ibrary_card::show_card(void)
{
show_book() ;
cout << "Katalog: " << catalog << endl;
if (checked_out) cout << "Status: proverena" << endl;
else cout << "Status: svobodna" << endl;
}
void main(void)
{
library_card card( "Uchimsya programmirovat' na yazihke C++", "Jamsa", 272, "101SRR", 1);
card.show_card();
}
Yana shunga e'tibor berinki library_card konstruktori book sinfi konstruktorini chaqiradi.
Agar bir sinfdan ikkinchisini hosil qilinsa asosiy va hosilaviy sinflarda elementlar nomlari bir hil bo’lishi mumkin. Bu holda 'hosilaviy sinf ichidagi funktsiyalarda hosilaviy sinf elementaridan foydalaniladi. Misol uchun book i library_card sinflari price elementlaridan foydalansin. Agar aniq ko’rsatilmagan bo’lsa library_card chsinfi funktsiyalari shu sinfning price elementidan foydalanadi. Agar library_card sinfi funktsiyalaori book sinfi price elementiga murojaat qilishi lozim bo’lsa ruhsat operatoridan foydalanishi lozim, masalan book::price. Agar show_card funktsiyasi ikkala narhni ekranga chiqarishi lozim bo’lsa qo’yidagi operatorlardan foydalanishi lozim:
cout << "Bibliotechnaya tsena: $" << price << endl;
cout << "Prodajnaya tsena: $" << book::price << endl;
Harsafar biz rasmga biron bir ob'ektni qo`shsak, u oldini planda joylashadi.
Arr`ange/ Order (montaj/tartib) komandasi ob'ektlarni tanlab, aralashtirib, uni hujjatning turli qismiga joylashtirishi mumkin. Order (tartib) komandasini tanlaganimizdan keyin ob'ektlarning joylashish tartibini o`zgartirib beruvchi 7 ta turli-tuman komandalardan iborat bo`lgan menyu ochiladi.

  • To Front (oldingi planga). Bu komanda yordamida ajratilgan ob'ekt va ob'ektlarni rasmdagi barcha ob'ektlarning ustiga joylashtirib beradi. Bu komandadan rasmdagi ob'ektlarning tartibini o`zgartirish uchun foydalaniladi.


  • To Back (orqa planga). Komanda ajratilgan ob'ekt yoki ob'ektlarni rasmdagi barcha ob'ektlarning ostiga joylashtirib beradi.


  • Forward One (oldinga) komanda ajratilgan ob'ekt yoki ob'ektlarni bir qadam orqaga joylashtirib beradi.


  • Back One (orqaga) komanda ajratilgan ob'ekt yoki ob'ektlarni bir qadam orqaga joylashtirib beradi.


  • In Front of (Ob'ektning oldiga) komanda ajratilgan ob'ekt yoki ob'ektlarni rasmning berilgan ob'ekti oldiga joylashtirib beradi.


  • Behind (ob'ektdan keyin). Komanda ajratilgan ob'ekt yoki ob'ektlarni berilgan ob'ektning orqasiga joylashtirib beradi.


  • Reverse Order (tartibni qaram-qarshi tomonga o`zgartirish). Komanda ikki yoki undan ko`p ob'ektlarning tartibini qarama-qarshi tomonga o`zgartirib beradi.



Order (tartib) podmenyusi va Arrange (monta) menyusidan tashqariob'ektlarni tartibga keltirish uchun Object (ob'ekt) kontekst menyusi va atributlar panelidan foydalanish mumkin. Bundan tashqariklavishlarning quyidagi cha kombinatsiyalaridan foydalanish mumkin:
  • SHIFT+PGUP - oldingi planga


  • SHIFT+PGDN - orqa planga


  • CTRL+PGUP - oldinga


  • CTRL+PGDN - orqaga


Lekin ob'ektlarning tartibini turli qatlamlarda turgani holda o`zgartirishi mumkin emas.




Xulosa
Merosxo’rlik - ob'ektga yo'naltirilgan dasturlash (OOP) tillarining asosiy tushunchalaridan biridir. Bu atributlar va usullar to'plamini baham ko'radigan sinflar ierarxiyasi uchun boshqa sinfdan sinfni olish mumkin bo'lgan mexanizm. Biz undan turli xil istisnolarni e'lon qilish, mavjud ramkalarga maxsus mantiq qo'shish va hatto domen modelingizni ma'lumotlar bazasiga joylashtirish uchun foydalanishimiz mumkin. Merosxo’rlikni tushunishning kaliti shundaki, u kodni qayta ishlatishni ta'minlaydi. Xuddi shu kodni qayta-qayta yozish o'rniga, biz bir sinfning xususiyatlarini boshqasiga meros qilib olishimiz mumkin. Java-da har bir sinf faqat bitta sinfdan olinishi mumkin. Bu sinf superklass yoki ota-ona sinf deb ataladi. Olingan sinf pastki sinf yoki pastki sinf deb ataladi. Siz pastki sinfingiz kengaytirilgan sinfni aniqlash uchun kengaytirilgan kalit so'zdan foydalanasiz. Agar siz yuqori sinfni e'lon qilmasangiz, sizning sinfingiz ob'ekt sinfini bilvosita kengaytiradi. Ob'ekt barcha meros ierarxiyalarining ildizidir; bu Java-da boshqa sinfni kengaytirmaydigan yagona sinf.

Foydalanilgan adabiyotlar

    1. https://stackify.com/oop-concept-inheritance/

    2. https://www.analyticsvidhya.com/blog/2020/10/inheritance-object-oriented-programming

    3. https://youtu.be/pTB0EiLXUC8

    4. https://docs.dot-net.uz/c-.net/basic/essential/vorislik

    5. https://www.texnoman.uz/post/obyektga-yonaltirilgan-dasturlash-oyd-haqida.html

Download 251,22 Kb.

Do'stlaringiz bilan baham:




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