logo

Ob’yektga mo’ljallangan dasturlash asoslari.

Yuklangan vaqt:

08.08.2023

Ko'chirishlar soni:

0

Hajmi:

23.7138671875 KB
Mavzu:   Ob’yektga mo’ljallangan dasturlash asoslari.
Reja:
1. Sinf va ob’yekt tushunchalari. 
2. Sinfda o’zgaruvchi va metodlar yaratish. 
3. Konstruktor va destruktor tushunchalari.
4. Sinfda o’zgaruvchi va metodlarni ko’rinish sohalari.
  Obyektga   mo'ljallangan   yondashuv   (OMY)   bir   kunda   o'ylab   topilgan   emas.
Uning   paydo   bo'lishi   dasturiy   ta'minotning   tabiiy   rivojidagi   navbatdagi   pog'ona,
xolos.   Vaqt   o'tishi   bilan   qanday   uslublar   ishlash   uchun   qulay,   qaysinisi   noqulay
ekanini aniqlash oson bo'lib bordi. OMY eng muvaffaqiyatli, vaqt sinovidan o'tgan
uslublarni o'zida mujassam etadi.
Dastlab   dasturlash   anchayin   boshqotirma   ixtiro   bo'Iib,   u   dasturchilarga
dasturlarni   kommutatsiya   bloki   orqali  kompyuterning  asosiy   xotirasiga  to'g'ridan-
to'g'ri kiritish imkonini berdi. Dasturlar mashina tillarida ikkilik tasawurda yozilar
edi.   Dasturlarni   mashina   tilida   yozishda   tez-tez   xatolarga   yo'l   qo'yilar,   kodni
kuzatib   borish   amalda   deyarli   mumkin   emas   edi.   Bundan   tashqari,   mashina
kodlaridagi
dastur tushunish uchun g'oyat murakkab edi.
Vaqt   o'tishi   bilan   kompyuterlar   tobora   kengroq   qo'llana   boshlandi   hamda
yuqoriroq   darajadagi   protsedura   tillari   paydo   bo'ldi.   Bularning   dastlabkisi
FORTRAN tili edi. Biroq obyektga mo'ljallangan yondashuv rivojiga asosiy ta'sir
keyinroq   paydo   bo'lgan.   Protsedura   tillari   dasturchiga   axborotga   ishlov   berish
dasturini   pastroq   darajadagi   bir   nechta   protseduraga   boMib   tashlash   imkonini
beradi.   Pastroq   darajadagi   bunday   protseduralar   dasturning   umumiy   tuzilmasini
belgilab beradi. Ushbu protseduralarga izchil murojaatlar protseduralardan tashkil
topgan dasturlarning bajarilishini boshqaradi.
Modulli   dasturlashda,   masalan,   Modula   2   kabi   tilda   protsedurali
dasturlashda topilgan ayrim kamchiliklarni bartaraf etishga urinib ko'rildi. Modulli
dasturlash dasturni bir necha tarkibiy bo'laklarga, yoki, boshqacha qilib aytganda,
modullarga   bo'lib   tashlaydi.   Agar   protsedurali   dasturlash   ma'lumotlar   va
protseduralarni   boMib   tashlasa,   modulli   dasturlash,   undan   farqli   o'laroq,   ularni
birlashtiradi.   Modul   ma’lumotlarning   o'zidan   hamda   ma'lumotlarga   ishlov
beradigan   protseduralardan   iborat.   Dasturning   boshqa   qismlariga   moduldan
foydalanish kerak bo'lib qolsa, ular modul interfeysiga murojaat etib qo'ya qoladi.
Modullar barcha ichki axborotni dasturning boshqa qismlarida yashiradi. Obyektga   mo'ljallangan   dasturlash   (OMD)   modulli   dasturlashdan   keyingi
mantiqiy pog'onani egallaydi, u modulga nasldan naslga o'tishni va polimorfizmni
qo'shadi.   Dasturchi   OMD   dan   foydalanar   ekan,   dasturni   bir   qator   oliy   darajali
obyektlarga   bo'lish   yo'li   bilan   tizimlashtiradi.   Har   bir   obyekt   hal   qilinayotgan
muammoning   ma'lum   birtomonini   modellashtiradi.   OMD   endilikda   dasturni
bajarish   jarayonini   boshqarish   uchun   dasturchi   diqqatini   protseduralarni   ketma-
ketlikda   chaqirib   olish   ro'yxatini   tuzib   o'tirishga   qaratmaydi.Buning   o'rniga
obyektlar   o'zaro   aloqada   bo'ladi.   OMY   yordamida   ishlab   chiqilgan   dastur   hal
qilinayotgan muammoning amaldagi modeli bo'lib xizmat qiladi.
Dasturga   obyektlar   atamalari   bilan   ta'rif   berish   dasturiy   ta'minotni   ishlab
chiqishning   eng   tushunarli   usulidir.   Obyektlar   hamma   narsani   obyekt   nima
qilayotgani nuqtayi nazaridan idrok etishga, ya'ni uning xatti-harakatlarini xayolan
modellashtirishga   majbur   qiladi.   Shu   tufayli   obyektga   yondashishda   u   dasturning
bajarilishi   jarayonida   qanday   ishlatiladi   degan   nuqtayi   nazardan   biroz   e'tiborni
chalg'itishi mumkin.
Shunday   qilib.   dasturni   yozish   jarayonida   haqiqiy   dunyoning   tabiiy
atamalaridan   foydalanish   mumkin.   Dasturni   alohida   protseduralar   va   ma'lumotlar
shaklida (kompyuter dunyosi atamalarida) qurish o'rniga obyektlardan iborat dastur
qurish   mumkin.   Obyektlar   otlar,   fe'llar   va   sifatlar   yordamida   haqiqiy   dunyoni
dasturda modellashtirishga imkon beradi. Joriy qilish (realizatsiya) xatti-harakatlar
qanday   bajarilayotganini   belgilaydi.   Dasturlash   atamalarida   joriy   qilish   —   bu
dasturiy kod.
OMD,   haqiqiy   dunyo   kabi,   obyektlardan   tashkil   topadi.   Obyektga
mo'ljallangan sof dasturlash tilida eng dastlabki, bazaviy, butun, mantiqiy turlardan
tortib,   to   sinflarning   murakkabroq   nusxalarigacha,   barchasi   obyekt   hisoblanadi.
Biroq   obyektga   moMjallangan   tillarning   hammasi   ham   bu   darajada   chuqurlashib
ketmagan.   Ayrim   tillarda   (masalan,   Java   kabi)   int   va   float   ga   o'xshash   oddiy
primitivlar   obyekt   sifatida   olib   qaralmaydi.   OMD   obyektlari,   haqiqiy   olam
obyektlari kabi, o'z xususiyatlari va xatti-harakatlari bo'yicha tasniflanadi. 1. Sinf va ob’yekt tushunchalari .
Sinf   -   bu   maxsus   turlar   bo’lib,   o’zida   maydon,   usullar   va   xossalarni
mujassamlashtiradi.
Sinf murakkab struktura bo’lib, ma’lumotlar ta’riflaridan tashqari, prosedura
va funksiyalar ta’riflarini o’z ichiga oladi.
Sinf   jismoniy   mohiyatga   ega   emas,   tuzilmaning   e’lon   qilinishi   uning   eng   yaqin
analogiyasidir.   Sinf   ob’ektni   yaratish   uchun   qo’llangandagina,   xotira   ajralib
chiqadi. Bu jarayon ham sinf nusxasi (class intsance) ni yaratish deb ataladi.
To’g’ri aniqlangan sinf ob’ektini butun dasturiy modul sifatida ishlatish mumkin.
              Haqiqiy   sinfning   barcha   ichki   ishlari   yashirin   bo’lishi   lozim.   To’g’ri
aniqlangan   sinfning   foydalanuvchilari   uning   qanday   ishlashini   bilishi   shart   emas,
ular sinf qanday vazifani bajarishini bilsalar yetarlidir.
Obyekt   —   mavhum   (abstrakt)   mohiyat   bo'lib,   u   bizni   o'rab   turgan   haqiqiy
olamning   tavsiflariga   ega.   Obyektlarni   yaratish   va   ular   ustida   manipulyatsiyalar
olib   borish   С++   tilining   qandaydir   alohida   imtiyozi   emas,   balki   obyektlarning
tavsifi   va   ular   ustida   o'tkaziladigan   operatsiyalarni   kodli   konstruksiyalarda   o'zida
mujassamlantiradigan   dasturlash   metodologiyasi   (uslubiyoti)   ning   natijasidir.
Dasturning har bir obyekti, har qanday haqiqiy obyekt kabi, o'z atributlari va o'ziga
xos   xulq-atvori   bilan   ajralib   turadi.   Obyektlarni   turli   kategoriyalarga   ko'ra
tasniflash mumkin: masalan, mening «Cassio» raqamli qo’l soatim  soatlar sinfiga
mansub.   Soatlarning   dasturiy   realizatsiyasi   (ishlatilishi),   standart   holat   sifatida,
sizning kompyuteringizning operatsiya tizimi tarkibiga kiradi.
Har   bir   sinf   sinflar   tabaqalanishida   (ierarxiyasida)   ma'lum   o'rinni   egallaydi.
Masalan,   barcha   soatlar   vaqtni   o'Ichash   asboblari   sinfiga   (tabaqalanishda   ancha
yuqori   turgan)   mansub,   soatlar   sinfining   o'zi   esa   xuddi   shu   mavzudagi   ko'plab
hosila variatsiyalarni o'z ichiga oladi. Shunday qilib, har qanday sinf obyektlarning
biror bir kategoriyasini aniqlaydi, har qanday obyekt esa biror bir sinf ekzemplyari
(nusxasi)dir. Obyektga   mo’ljallangan   dasturlash   (OMD)   —   bu   dasturchining   asosiy
diqqatini   obyektlarni   ishlatish   tafsilotlariga   emas,   balki   obyektlar   o'rtasidagi
aloqalarga qaratadigan metodika. 
2. Sinfda o’zgaruvchi va metodlar yaratish.
Sinflar ma'lum maqsadlarga erishish  uchun ishlab chiqiladi. Odatda dasturchi
mavhum g'oyadan boshlaydi va u asta-sekin loyihani ishlab chiqish jarayonida turli
detallar  bilan  toidirib boriladi. Ba'zida  birbiriga  g'oyat  o'xshash  bo'Igan bir  necha
sinfni   ishlab   chiqish   bilan   ish   tugallanadi.   Sinflarda   kodlarni   bu   kabi   takrorlash
(dubllashtirish)dan   qochish   uchun   bu   sinflarni   ikki   qismga   bo'lish   kerak,   ya'ni
umumiy   qismni   ota   sinfida   aniqlab,   farqlanadiganlarini   hosila   sinfda   qoldirish
kerak.
Sinfdan   foydalanishdan   oldin   u   e'lon   qilinishi   kerak.   Odatda,   amaliyotchi
dasturchi   tayyor   bazaviy   sinflardan   foydalanadi,   bundan   tashqari   u   barcha
spetsifikatsiyalarni va ichki ishlash yo’llarini bilishi mutlaqo shart emas. Biroq, C+
+bazaviy   sinfidan   foydalanishingiz   uchun   qanday   ma'lumotlar   a'zolari   va
metodlarga kira olishingiz mumkinligini albatta bilishingiz lozim.
Sinf   ichidagi   har   bir   e'lon   qilish,   sinf   nomi   qaysi   seksiyada   paydo   bo'lishiga
qarab,  bu  nomlarga  kirish  imtiyozlarini   aniqlaydi.  Har   bir  seksiya  quyidagi  kalit-
so'zlarning   biridan   boshlanadi:   private,   protected,   public .   Bazaviy   sinfni   e'lon
qilishning umumlashma sintaksisi quyidagi ko'rinishga ega:
class className
private:
<privat ma'lumotlar a'zolari> <privat konstruktorlar> <privat
metodlar>
protected:
<himoyalangan ma'lumotlar a'zolari> <himoyalangan
konstruktorlar> <himoyalangan metodlar>
public:
<ommaviy xususiyatlar> <ommaviy ma'lumotlar a'zolari>
<ommaviy konstruktorlar> <ommaviy destruktor> <ommaviy metodlar>
3. Sinfda o’zgaruvchi va metodlarni ko’rinish sohalari.
Shunday qilib, C++da bazaviy sinfni e'lon qilish quyidagicha kirish huquqlari
va tegishli ko'rishlik sohasini taqdim etadi: 
■   Privat   private   nomlar   faqat   ushbu   sinf   metodlariga   ruxsat   etilgan   eng
cheklangan   kirish   huquqiga   ega.   Hosila   sinflar   uchun   bazaviy   sinflarning   privat
metodlariga kirish taqiqlangan.
■  Himoyalangan   protected   nomlar  ushbu   sinf   va  undan  hosil   bo'lgan  sinflar
metodlariga ruxsat etilgan kirish huquqiga ega.
■ Ommaviy   public   nomlar barcha sinflar va ularning obyektlari metodlariga
ruxsat etilgan cheksiz kirish huquqiga ega.
Quyidagi   qoidalar   sinf   e'lon   qilinishining   turli   seksiyalarining   hosil   bo'lishida
qo’llaniladi:
Quyidagi   qoidalar   sinf   e'lon   qilinishining   turli   seksiyalarining   hosil
bo'lishida qo’llaniladi:
1.   Seksiyalar   har   qanday   tartibda   ham   paydo   bo'lishi,   ularning   nomlari   esa
takroran uchrayverishi mumkin.
2.   Agar   seksiya   nomlanmagan   bo'lsa,   sinf   nomlarining   keying   e'lonlarini
kompilyator  privat   deb  hisoblaydi.  Bu   yerda  sinf   va  tuzilmaning  e'lon  qilinishida
farq yuzaga kelyapti: tuzilma yashirin holda ommaviy deb olib qaraladi.
3. Agar siz haqiqatan ham ma'lumotlar a'zolariga har qayerdan kirishni ruxsat
etmoqchi   bo'lmasangiz,   imkon   darajasida   ularni   ommaviy   seksiyaga
joylashtirmang.   Faqat   hosila   sinflar   metodlariga   kirish   huquqini   berish   uchun
ularni odatda himoyalangan deb e'lon qiladilar.
4.   Metodlardan   ma'lumotlar   xususiyatlari   va   a'zolarini   tanlash,   tekshirish   va
qiymatlarini o'rnatish uchun foydalaning.
5.   Konstruktorlar   va   destruktorlar   maxsus   funksiyalar   bo'lib,   qiymatni
qaytarmaydilar   va   o'z   sinfining   nomiga   ega   bo'ladilar.   Konstruktor   berilgan   sinf
obyektini quradi, destruktor esa uni olib tashlaydi. 6.   C++ning   bittadan   ortiq   yo'riqnomasiga   ega   boMgan   metodlarni
(konstruktorlar   va   destruktorlar   kabi)   sinfdan   tashqarida   deb   e'lon   qilish   tavsiya
etiladi.
4. Konstruktor va destruktor tushunchalari.
                        Nomlaridan   ko'rinib   turganidek,   konstruktor   —   bu   metod   bo'lib,   u   o'z
xotirasida   ushbu   sinf   obyektini   quradi,   destruktor   esa   —   bu   obyektni   olib
tashlaydigan   metod.   Konstruktorlar   va   destruktorlar   boshqa   obyektli   metodlardan
quyidagi xususiyatlariga ko'ra farqlanadi:
■ O'z sinfi nomi bilan bir xil bo'lgan nomga ega.
■ Qaytariladigan qiymatga ega emas.
■ Garchi hosila sinf bazaviy sinflarning konstruktorlari va destruktorlarini 
chaqira olsa-da, konstruktor va destruktorlarning o’zlari vorislik qilolmaydi.
■ Agar boshqacha e'lon qilinmagan bo'lsa, kompilyator tomonidan avtomatik 
tarzda public sifatida generatsiya qilinadi.
■ Sinf obyektlarining yaratilishi va yo'q qilinishini tegishli tarzda kafolatlash 
uchun kompilyator tomonidan chaqirib olinadi.
■ Agar obyekt dinamik xotiraning ajratilishi va yo'q qilinishini talab qilsa, 
new va delete operatorlariga noaniq murojaatga ega bo'lishi mumkin.
Quyida konstruktorlar va destruktorlar e'lonining umumlashma sintaksisini 
namoyish qiluvchi misol keltiramiz:
class className
{public:
//className ma'lumotlarining boshqa a'zolari; className
(<parametrlar ro'yxati;-)//Dalillarga ega konstruktor
className(const className&);//Nusxa ko'chirish konstruktori
//Boshqa konstruktorlar
~className();//Destruktor
//Boshqa metodlar};
Sinf   soni   cheklanmagan   konstruktorlarga   ega   bo'lishi,   shu   jumladan,
konstruktorlarga umuman ega bo'lmasligi mumkin.Konstruktorlar virtual deb e'lon qilinishi   mumkin   emas.   Hamma   konstruktorlarni   himoyalangan   seksiyaga
joylashtirmang hamda yashirin argumentlar qiymatidan foydalanib, ularning sonini
kamaytirishga intiling.
Ko'p hollarda sinf obyektlarini initsiallash (nomlash) ning bir nechta 
usullariga ega boiish yaxshi natija beradi. Bunga bir nechta konstruktor vositasida 
erishish mumkin. Masalan:
class date {
int month, day, year;
public:
date(int, int, int); //yilning oyi, kuni
date(char*); //satr ko'rinishidagi sana
date(int); //bugungi kun, oy, yil
date(); //yashirin sana: bugungisi
};
Ortiqcha yuklangan funksiyalar qanday qoidalarga amal qilsa, konstruktorlar ham 
parametrlar turlariga nisbatan xuddi shunday qoidalarga amal qiladilar. Agar 
konstruktorlar o'z parametrlari turlari bo'yicha ancha-muncha farq qilsa, 
kompilyator har gal foydalanganda to'g'ri parametrni tanlab olishi mumkin:
date today(4);
date july4("1983-yil, 4-iyul");
date guy("5-noyabr")
date now; //yashirish initsiallashadi (nomlanadi)
Konstruktorlarning uch turi mavjud:
■ Yashirin konstruktor parametrlarga ega emas. Agar sinf bitta ham konstruktorga 
ega boimasa, kompilyator avtomatik tarzda bitta yashirin konstruktor yaratadiki, u 
o'z sinfiga mansub obyektni yaratishda xotirani shunchaki ajratib beradi.
Date holatida har bir parametr uchun «yashirin qabul qilish: today» (bugun) 
sifatida talqin qilinadigan yashiringan qiymatni berish mumkin:
class date {
int month, day, year; public:
date(int d =0, int m =0, int у =0);
date(char*); // satr vositasida berilgan sana
};
date::date(int d, int m, int y)
{
day = d ? d : today.day;
month = m ? m : today.month;
year = у ? у : today.year;
// yo'l qo'yiladigan sana ekanini tekshirish
}
■ Dalillarga ega konstruktor obyektning yaratilish paytida uni initsiallash 
(nomlash) ga, ya'ni turli funksiyalarni chaqirib olishga, dinamik xotirani 
ajratish, o'zgaruvchilarga dastlabki qiymatlarni berish va h.k. ga imkon beradi.
■ Nusxa ko'chirish konstruktori berilgan sinf obyektlarini yaratish uchun 
ma'lumotlarni ushbu sinfning mavjud bo'lgan boshqa obyektidan nusxa 
ko'chirish yo'lidan borishga mo'ljallangan. Bunday konstruktorlar 
ma'lumotlarning dinamik tuzilmalarini modellashtiradigan obyektlar nusxasini 
yaratishda ayniqsa maqsadga muvofiqdir. Biroq yashirin holda kompilyator 
yuzaki nusxalash
konstruktorlari (shallow copy constructors) deb ataluvchi faqat ma'lumotlar 
a'zolaridan nusxa oladigan konstruktorlarni yaratadi.
Shuning uchun, agar biror bir ma'lumotlar a'zolari ko'rsatkichlarga ega bo'lsa, 
ma'lumotlarning o'zidan nusxa ko'chirilmaydi. «Chuqur» nusxalashni 
konstruktor kodiga joriy qilish uchun tegishli yo'riqnomalarni kiritish kerak.
Misol:
class string
{
char *Str;
int size; public:
string(string&);     // nusxa ko'chirish konstruktorlari
};
string::string(string& right) // dinamik o'zgaruvchilar va resurslar
{ // nusxalarini yaratadi
s = new char[right->size];
strcpy(Str,right->Str);
}
Sinf faqat bitta ommaviy destruktorni e'lon qilishi mumkin. Uning o'z sinfi 
bilan bir xil bo'Igan nomi oldidan ~ (tilda) belgisi turishi kerak. Dcstruktor 
paramctrlarga ega emas hamda virtual deb e'lon qilinishi mumkin. Agar sinf 
destruktor e'loniga ega bo'lmasa, kompilyator avtomatik ravishda uni yaratadi.
Odatda tegishli konstruktorlar bajargan operatsiyalarga teskari operatsiyalarni
destruktorlar bajaradi. Agar siz fayl sinfi obyektini yaratgan boMsangiz, bu holda 
destruktorda bu faylning yopilishi ehtimoldan xoli emas. Agar sinf konstruktori 
ma'lumotlar massivi uchun dinamik xotirani ajratsa (new operatori yordamida), bu 
holda destruktor ajratilgan xotirani bo'shatishi (delete operatori yordamida) 
ehtimoldan xoli emas va h.k. date  obyekti konstruktori va destruktoriga misol:
class date { int *day, *month, *year
public:
date(int d, int m, int y)
{
day=new int;month=new int;
year=new int;*day= d ? d : 1;
*month = m ? m : L;
*year = у ? у : 1;
}
~date()
{
delete day;delete month;delete year; }};            Foydalanilgan ea dabiyotlar ro’yxati
1. Sh.A.Nazirov, R.V.Qobulov, M.R.Babajanov «C va C++ TILI»
2. Informatika fanidan o’quv qo’llanma //TATU 489 b. Toshkent, 2012.
3. C/C++.   Программирование   на   языке   высокого   уровня   /   Т.   А.
Павловская. — СПб.:Питер, 2003. —461 с: ил.
4. Программирование на языке С++ в среде Qt Creator:
5. / Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк,О. В. Чеснокова,
6. А. С. Чмыхало — М. : ALT Linux, 2015. — 448 с.
7. Жасмин   Бланшет,   Марк   Саммерфилд   Qt   4:Программирование   GUI   на
C++
8. М.Шлее, Qt 5.10. Профессиональное программирование на С++. - СПб.:
БХВ-Петербург, 2018. - 1072 с.

Mavzu: Ob’yektga mo’ljallangan dasturlash asoslari. Reja: 1. Sinf va ob’yekt tushunchalari. 2. Sinfda o’zgaruvchi va metodlar yaratish. 3. Konstruktor va destruktor tushunchalari. 4. Sinfda o’zgaruvchi va metodlarni ko’rinish sohalari.

Obyektga mo'ljallangan yondashuv (OMY) bir kunda o'ylab topilgan emas. Uning paydo bo'lishi dasturiy ta'minotning tabiiy rivojidagi navbatdagi pog'ona, xolos. Vaqt o'tishi bilan qanday uslublar ishlash uchun qulay, qaysinisi noqulay ekanini aniqlash oson bo'lib bordi. OMY eng muvaffaqiyatli, vaqt sinovidan o'tgan uslublarni o'zida mujassam etadi. Dastlab dasturlash anchayin boshqotirma ixtiro bo'Iib, u dasturchilarga dasturlarni kommutatsiya bloki orqali kompyuterning asosiy xotirasiga to'g'ridan- to'g'ri kiritish imkonini berdi. Dasturlar mashina tillarida ikkilik tasawurda yozilar edi. Dasturlarni mashina tilida yozishda tez-tez xatolarga yo'l qo'yilar, kodni kuzatib borish amalda deyarli mumkin emas edi. Bundan tashqari, mashina kodlaridagi dastur tushunish uchun g'oyat murakkab edi. Vaqt o'tishi bilan kompyuterlar tobora kengroq qo'llana boshlandi hamda yuqoriroq darajadagi protsedura tillari paydo bo'ldi. Bularning dastlabkisi FORTRAN tili edi. Biroq obyektga mo'ljallangan yondashuv rivojiga asosiy ta'sir keyinroq paydo bo'lgan. Protsedura tillari dasturchiga axborotga ishlov berish dasturini pastroq darajadagi bir nechta protseduraga boMib tashlash imkonini beradi. Pastroq darajadagi bunday protseduralar dasturning umumiy tuzilmasini belgilab beradi. Ushbu protseduralarga izchil murojaatlar protseduralardan tashkil topgan dasturlarning bajarilishini boshqaradi. Modulli dasturlashda, masalan, Modula 2 kabi tilda protsedurali dasturlashda topilgan ayrim kamchiliklarni bartaraf etishga urinib ko'rildi. Modulli dasturlash dasturni bir necha tarkibiy bo'laklarga, yoki, boshqacha qilib aytganda, modullarga bo'lib tashlaydi. Agar protsedurali dasturlash ma'lumotlar va protseduralarni boMib tashlasa, modulli dasturlash, undan farqli o'laroq, ularni birlashtiradi. Modul ma’lumotlarning o'zidan hamda ma'lumotlarga ishlov beradigan protseduralardan iborat. Dasturning boshqa qismlariga moduldan foydalanish kerak bo'lib qolsa, ular modul interfeysiga murojaat etib qo'ya qoladi. Modullar barcha ichki axborotni dasturning boshqa qismlarida yashiradi.

Obyektga mo'ljallangan dasturlash (OMD) modulli dasturlashdan keyingi mantiqiy pog'onani egallaydi, u modulga nasldan naslga o'tishni va polimorfizmni qo'shadi. Dasturchi OMD dan foydalanar ekan, dasturni bir qator oliy darajali obyektlarga bo'lish yo'li bilan tizimlashtiradi. Har bir obyekt hal qilinayotgan muammoning ma'lum birtomonini modellashtiradi. OMD endilikda dasturni bajarish jarayonini boshqarish uchun dasturchi diqqatini protseduralarni ketma- ketlikda chaqirib olish ro'yxatini tuzib o'tirishga qaratmaydi.Buning o'rniga obyektlar o'zaro aloqada bo'ladi. OMY yordamida ishlab chiqilgan dastur hal qilinayotgan muammoning amaldagi modeli bo'lib xizmat qiladi. Dasturga obyektlar atamalari bilan ta'rif berish dasturiy ta'minotni ishlab chiqishning eng tushunarli usulidir. Obyektlar hamma narsani obyekt nima qilayotgani nuqtayi nazaridan idrok etishga, ya'ni uning xatti-harakatlarini xayolan modellashtirishga majbur qiladi. Shu tufayli obyektga yondashishda u dasturning bajarilishi jarayonida qanday ishlatiladi degan nuqtayi nazardan biroz e'tiborni chalg'itishi mumkin. Shunday qilib. dasturni yozish jarayonida haqiqiy dunyoning tabiiy atamalaridan foydalanish mumkin. Dasturni alohida protseduralar va ma'lumotlar shaklida (kompyuter dunyosi atamalarida) qurish o'rniga obyektlardan iborat dastur qurish mumkin. Obyektlar otlar, fe'llar va sifatlar yordamida haqiqiy dunyoni dasturda modellashtirishga imkon beradi. Joriy qilish (realizatsiya) xatti-harakatlar qanday bajarilayotganini belgilaydi. Dasturlash atamalarida joriy qilish — bu dasturiy kod. OMD, haqiqiy dunyo kabi, obyektlardan tashkil topadi. Obyektga mo'ljallangan sof dasturlash tilida eng dastlabki, bazaviy, butun, mantiqiy turlardan tortib, to sinflarning murakkabroq nusxalarigacha, barchasi obyekt hisoblanadi. Biroq obyektga moMjallangan tillarning hammasi ham bu darajada chuqurlashib ketmagan. Ayrim tillarda (masalan, Java kabi) int va float ga o'xshash oddiy primitivlar obyekt sifatida olib qaralmaydi. OMD obyektlari, haqiqiy olam obyektlari kabi, o'z xususiyatlari va xatti-harakatlari bo'yicha tasniflanadi.

1. Sinf va ob’yekt tushunchalari . Sinf - bu maxsus turlar bo’lib, o’zida maydon, usullar va xossalarni mujassamlashtiradi. Sinf murakkab struktura bo’lib, ma’lumotlar ta’riflaridan tashqari, prosedura va funksiyalar ta’riflarini o’z ichiga oladi. Sinf jismoniy mohiyatga ega emas, tuzilmaning e’lon qilinishi uning eng yaqin analogiyasidir. Sinf ob’ektni yaratish uchun qo’llangandagina, xotira ajralib chiqadi. Bu jarayon ham sinf nusxasi (class intsance) ni yaratish deb ataladi. To’g’ri aniqlangan sinf ob’ektini butun dasturiy modul sifatida ishlatish mumkin. Haqiqiy sinfning barcha ichki ishlari yashirin bo’lishi lozim. To’g’ri aniqlangan sinfning foydalanuvchilari uning qanday ishlashini bilishi shart emas, ular sinf qanday vazifani bajarishini bilsalar yetarlidir. Obyekt — mavhum (abstrakt) mohiyat bo'lib, u bizni o'rab turgan haqiqiy olamning tavsiflariga ega. Obyektlarni yaratish va ular ustida manipulyatsiyalar olib borish С++ tilining qandaydir alohida imtiyozi emas, balki obyektlarning tavsifi va ular ustida o'tkaziladigan operatsiyalarni kodli konstruksiyalarda o'zida mujassamlantiradigan dasturlash metodologiyasi (uslubiyoti) ning natijasidir. Dasturning har bir obyekti, har qanday haqiqiy obyekt kabi, o'z atributlari va o'ziga xos xulq-atvori bilan ajralib turadi. Obyektlarni turli kategoriyalarga ko'ra tasniflash mumkin: masalan, mening «Cassio» raqamli qo’l soatim soatlar sinfiga mansub. Soatlarning dasturiy realizatsiyasi (ishlatilishi), standart holat sifatida, sizning kompyuteringizning operatsiya tizimi tarkibiga kiradi. Har bir sinf sinflar tabaqalanishida (ierarxiyasida) ma'lum o'rinni egallaydi. Masalan, barcha soatlar vaqtni o'Ichash asboblari sinfiga (tabaqalanishda ancha yuqori turgan) mansub, soatlar sinfining o'zi esa xuddi shu mavzudagi ko'plab hosila variatsiyalarni o'z ichiga oladi. Shunday qilib, har qanday sinf obyektlarning biror bir kategoriyasini aniqlaydi, har qanday obyekt esa biror bir sinf ekzemplyari (nusxasi)dir.

Obyektga mo’ljallangan dasturlash (OMD) — bu dasturchining asosiy diqqatini obyektlarni ishlatish tafsilotlariga emas, balki obyektlar o'rtasidagi aloqalarga qaratadigan metodika. 2. Sinfda o’zgaruvchi va metodlar yaratish. Sinflar ma'lum maqsadlarga erishish uchun ishlab chiqiladi. Odatda dasturchi mavhum g'oyadan boshlaydi va u asta-sekin loyihani ishlab chiqish jarayonida turli detallar bilan toidirib boriladi. Ba'zida birbiriga g'oyat o'xshash bo'Igan bir necha sinfni ishlab chiqish bilan ish tugallanadi. Sinflarda kodlarni bu kabi takrorlash (dubllashtirish)dan qochish uchun bu sinflarni ikki qismga bo'lish kerak, ya'ni umumiy qismni ota sinfida aniqlab, farqlanadiganlarini hosila sinfda qoldirish kerak. Sinfdan foydalanishdan oldin u e'lon qilinishi kerak. Odatda, amaliyotchi dasturchi tayyor bazaviy sinflardan foydalanadi, bundan tashqari u barcha spetsifikatsiyalarni va ichki ishlash yo’llarini bilishi mutlaqo shart emas. Biroq, C+ +bazaviy sinfidan foydalanishingiz uchun qanday ma'lumotlar a'zolari va metodlarga kira olishingiz mumkinligini albatta bilishingiz lozim. Sinf ichidagi har bir e'lon qilish, sinf nomi qaysi seksiyada paydo bo'lishiga qarab, bu nomlarga kirish imtiyozlarini aniqlaydi. Har bir seksiya quyidagi kalit- so'zlarning biridan boshlanadi: private, protected, public . Bazaviy sinfni e'lon qilishning umumlashma sintaksisi quyidagi ko'rinishga ega: class className private: <privat ma'lumotlar a'zolari> <privat konstruktorlar> <privat metodlar> protected: <himoyalangan ma'lumotlar a'zolari> <himoyalangan konstruktorlar> <himoyalangan metodlar> public: <ommaviy xususiyatlar> <ommaviy ma'lumotlar a'zolari> <ommaviy konstruktorlar> <ommaviy destruktor> <ommaviy