logo

Obyektga yunaltirilgan dasturlash tillari va vazifalari lab

Yuklangan vaqt:

08.08.2023

Ko'chirishlar soni:

0

Hajmi:

841.8095703125 KB
1-laboratoriya ish ish
Mavzu : Obyektga yunaltirilgan dasturlash tillari va vazifalari
1- Vorislik .
2- Inkapsulyatsiya .
3- Polimorfizim .
4- Konstruktor .
5- Descruktor .
6- Metodlar .
7- Sinf parametrlari class metodlar .
Vorislik —bu   hosilavey   sinfning   mavjud   asosiy   harakteristikalarini
merosga olish hususyatidir .
Inkapsulyatsiya   –   bu   tizimda   ishlaydigan   ma’lumotlar   va
usulllarni   sinfda   birlashtirishga   va   foydalanuvchidan   amalga   oshirish
tafselotlarini   yashirishga   imkon   beruvchi   tizimning   xususyati   .
Ma’lumotlarni   manepulyatsiya   qiladigan   va   kodni
birlashtiradigan ,shuningdik birinchi navbatdan ma’lumotlarga to’g’ridan
to’g’ri tashqi kirishdan noto’g’ri ishlatishdan ximoya qiluvchi tamoyil .
Polimorfezim  – bu umumiy muloqot tili .
Bir   xil   enterfeysli   obyektlardan   oyektning   turi   va   ichki   tuzilishi   haqida
ma’lumotsiz foydalanish xususyatidir .
Ikki   yoke   undan   ortiq   uxshash   ,lekin   biroz   boshqacha   muammolarni
yechishda bir xil usul nomidan foydalanadigan mexanezm .
Konstruktir   –   bu   bir   xil   sinfdagi   obkekt   yaratilganda   avtomatik
ravishta   chaqiriladigan   sinf   metodining   maxsus   turi
Konstruktorlar   ,odatda   standart   foydalanuvchi   tomonidan   berilgan
qiymatga   ega   bo’lgan   sinf   a’zolarining   o’zgaruvchilarini   ishga   tshurish
yoke ishlayotgan sinf uchun ,zarur bo’lagan konfeguratsiya bosqichlarini
bajarish uchun ishlatiladi .
Destruktor —   bu   sinfning   biror   obyekti   uchun   ajratilgan   xotira   obyekt
yuqotilganidan so’ng bo’shatilishi lozimdir .
Sinflarning   maxsus   komponentalari   destruktorlar   bu,vazefani   aftomatik
bajarish imkonini yaratadi .
Metod   –   bu   sinfga   tegishli   funksiyalardir   ,sinfga   tegishli   funksiyalrni
aniqlash uchun ikki yul mavjud .
1)     ichki sinf   2)    sinfdan tashqari .
Sinf   –bu   bizning   dasturimizda   foydalanishimiz   mumkin   bo’lgan
foydalanuvchi  belgilaydigan ma’lumot turi va u obyekt tuzuvchisi  yoke
obketlarni yaratish uchun reja sifatida ishlaydi .  2-laboratoriya ish ish
Mavzu : Abstraktlash
Abstrakt sinflar. Abstrakt   sinf   ta’rifi.   Hech   bo’lmasa   bitta   sof   (bo’sh)
virtual funksiyaga ega bo’lgan sinf abstrakt sinf deyiladi.Quyidagi e’longa ega
bo’lgan komponentali funksiya sof virtual funksiya deyiladi:
virtual <tur> <funksiya_nomi>
(<formal_parametrlar_ro’yxati>) = 0;
Bu   yozuvda   «   =   0»   konstruksiya   «sof   spesifikator»   deyiladi.   Sof   virtual
funksiya ta’rifiga misol:
virtual void fpure (void) = 0;
Bu   atamadan   biz   OYD   ning   shunday   yondashuvi,   degan   xulosaga
kelishimiz mumkin, bu yerda obyektlar birinchi o'rinda turadi. 
Bu   mavzular   biroz   murakkabroq   tuyilishi   mumkin,   lekin   to’g’ri
yo’nalishga   tushib   olinsa   o’rganish   oson.   Obyektlar   bir-biri   bilan   muloqot
qilishlari,   o'zaro   ta'sir   o'tkazishlari,   o'zlari   o'rtasida   biror   narsani   uzatishi
mumkin.
Obyekt nimani anglatadi?
Buni   kompyuter   o'yinida   ko'rish   mumkin.   Katta,   murakkab   o'yinlar   va
dasturlar   odatda   obyektga   yo'naltirilgan   uslubda   yoziladi.   Bu   dasturda   mavjud
bo'lgan hamma narsa obyekt.
Agar  siz  qandaydir   personaj  olsangiz,   u biror   joyga (chapga  yoki  o'ngga)
borishi,  hujum   qilishi,  olib  kelishi, qurishi   mumkin. Bu  personaj   qila oladigan
barcha vazifalar  metodlar  deyiladi.
Bundan   tashqari,   OYD   obyektlari   xossalarga   ega.   Xossalar   qaysi   obyekt
haqidagi   savolga   javob   beradi.   Bizning   obyektimiz   yashil   rangda,   qo'llari
mavjud, oyoqlari bor, qandaydir o’lchamga ega va boshqalar. Hammasi "obekt
qanday " degan savolga javob beradi, bu obyektning xossalari bilan bog'liq.
C ++ da strukturalar haqida eslatma .   C da strukturalar faqat  ma'lumotlarni
saqlashi   mumkin   va   ular   bilan   bog'liq   metodlar   bo'lmasligi   mumkin.   C++   da
sinflarni   loyihalashdan   so'ng   (class   kalit   so'zidan   foydalangan   holda)   Bjarne
Stroustrup struktura (C dan meros bo'lib o'tgan) bog'liq metodlarga ega bo'lishi
kerakligi   haqida   o'ylab   ko'rdi.   Biroz   o'ylanib,   nima   kerakligini   hal   qildi.
Shuning   uchun,   yuqoridagi   dasturlarda   biz   sinf   o'rniga   struct   kalit   so'zidan
foydalanishimiz mumkin va hamma narsa ishlaydi!  1-Topshiriq
14 .  Viloyat nomli sinf  yarating ,   tarkebida ikki xil konstruktir
bo’lsin  . 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 #include <iostream>
using namespace std;
class viloyat
{
private:
    string m_nom;
    int m_yil;
    float m_hudud;
public:
    viloyat()
    {
       m_nom="samaraqand";
       m_yil=1800;
       m_hudud=4.600;
    }
    viloyat(string nom,int yil,float hudud)
    {
        m_nom=nom;
        m_yil=yil;
        m_hudud=hudud;
    }
    string getNOm()
    {
        return m_nom;
    }
};
int main()
{     
 viloyat tuman;
cout<<tuman.getNOm()<<endl;
     return 0;
}  Dasturni ishga tshurgandan so’ngi nateja quydagiga teng bo’ladi .  3-laboratoriya ish ish
Mavzu :Modullik
Diagramma   -   bu   elementlar   to'plamining   grafik   tasviri   bo'lib,   ular
ko'pincha  graf   uchlari  (yo'llar)  va   yo'llar  (aloqa)   ning  bog'langan  grafi  sifatida
tasvirlanadi.   UML   tili   13   turdagi   diagramalarni   o'z   ichiga   oladi,   ular   orasida
birinchi navbatda sinflar diagrammasi bo'lib, biz bu mavzuda shuni muhokama
qilamiz.
Sinf diagrammalarida sinflar, interfeyslar va ularning aloqalari ko'rsatilgan.
Bunday   sxemalar   ko'pincha   ob'ektga   yo'naltirilgan   tizimlarni   modellashtirish
uchun ishlatiladi. Ular tizimni statik tarzda ifodalash uchun mo'ljallangan.
UML elementlarining ko'pchiligi elementning eng muhim jihatlarini vizual
tarzda taqdim etishni ta'minlaydigan o'ziga xos va sodda grafik belgiga ega.
Sinf diagrammasini tuzish.   Tizim va uning chegaralari uchun funksional
talablar   aniqlangandan   so'ng,   sinflar   diagrammasini   tuzish   uchun   predmet
sohani tahlil qilish kerak.
Sinf   diagrammasi   bo'yicha   qisqacha   nazariy   ma'lumot.   Sinf
diagrammasi   tizimdagi   sinflarning   turlarini   va   ular   orasidagi   turlicha   statik
munosabatlarni   belgilaydi.   Sinf   diagrammalarida   sinflar   orasidagi
munosabatlarga   taalluqli   sinf   atributlari,   sinf   metodlari   va   cheklovlar
tasvirlangan.   Sinf   diagrammasining   turi   va   talqini,   asosan,   nuqtai   nazarga
(abstraktsiya   darajasi)   bog'liq:   sinflar   predmet   sohaning   mohiyatini   namoyish
etadi   (tahlil   jarayonida)   yoki   dasturiy   ta'minot   elementlarini   (loyihalash   va
amalga oshirish jarayonlarida) ifodalashi mumkin.
2-Topshiriq
14-   Viloyat   nomli   sinf   yarating.   Tarkibida   2   ta   metod,   3   ta
xossa   bo’lsin.   Viloyat   hokimini   getHokim()   metodi   orqali
jo’nating
1
2
3
4
5
6
7
8
9
10
11
12 #include <iostream>
            using namespace std;
class viloyat
{
private:
    string m_nom;
    float m_hudud;
    string  m_hokim;
    public:
    viloyat()  13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36     {  m_nom="mavjud emas";
        m_hokim="mavjud emas";
        m_hudud=0;
    }   viloyat(string nom, float hudud,string hokim)
    {
        m_nom=nom;
        m_hudud=hudud;
        m_hokim=hokim;
    }  string  getNom()
    {   return m_nom;
    }   string getHokim()
    {   return m_hokim;
    }   };  int main()
{   viloyat hudud("Samarqand",4.4,"Mirzabek_Umrzoqov");
    cout <<hudud.getNom() << endl;
    cout<<hudud.getHokim()<<endl;
    cout<<hudud.getNom()<<" "<<"Viloyati 
hokimi:"<<hudud.getHokim()<<endl;
    return 0;
}
Dasturni ishga tshurgandan so’ngi nateja quydagiga teng bo’ladi .  4-laboratoriya ish ish
Mavzu:Ierarxiya
E'tibor bering, bu dastur yuqoridagi dasturga o'xshaydi, bu yerda struktura
ishlatiladi.   Biroq,   bir   nechta   farqlar   mavjud.   DateStruct   versiyasida   biz
strukturaning   o'zgaruvchisini   parametr   sifatida   to'g'ridan-to'g'ri   print()
funktsiyasiga   o'tkazishimiz   kerak   edi.   Agar   biz   buni   qilmaganimizda,   print()
funktsiyasi DateStruct strukturasining qaysi o'zgaruvchisini chop etishini bilmas
edik.   Keyin   biz   aniq   funktsiya   tarkibidagi   a'zolarga   murojaat   qilishimiz   kerak
edi.
Sinf   metodlari   biroz   boshqacha   ishlaydi:   barcha   metod   chaqiruvlari   sinf
obyekti   bilan   bog'lanishi   kerak.   today.print()   ga   murojaat   qilganimizda,   biz
kompilyatorga today obyektining print() metodini chaqirishini aytamiz.
print()   metodining   ta'rifini   yana   ko'rib   chiqamiz:   m_day,   m_month   va
m_year   aslida   nimani   nazarda   tutadi?   Ular   tegishli   today   obyektiga   murojaat
qiladi (bu murojaat qiluvchining o'zi tomonidan belgilanadi).
Shuning   uchun,   today.print()   ni   chaqirganda,   kompilyator   quyidagicha
izohlaydi:
m_day – today.m_day kabi;
m_month – today.m_month kabi;
m_year – today.m_year kabi.
3-Topshiriq
14.   Noutbuk   nomli   sinf   yarating.   Tarkibida   1   ta   metod,   3   ta
xossa, 2 ta konstruktor, 1 ta destruktor bo’lsin
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <iostream>
using namespace std;
class Noutbuk  {
private:
    string m_nom;
    int m_xotira;
    int m_yil;
public:
    Noutbuk()
    {   m_nom="mavjud emas";  15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36         m_xotira=0;
        m_yil=0;    }
    Noutbuk(string nom,int xotira,int yil)  
  {
     m_nom=nom;
     m_xotira=xotira;
     m_yil=yil; }
    string getNom()
    {    return m_nom;  }
};
   int main()
  {
    Noutbuk kampyuter("Asus",1000,2014);
    cout<<kampyuter.getNom()<<endl;
    return 0;
}
Dasturni ishga tshurgandan so’ngi nateja quydagiga teng bo’ladi .
+
5-laboratoriya ish
Mavzu :Tiplashtirish  .
Sinflar .   C++   tilining   eng   foydali   xususiyatlaridan   biri   bu   muayyan
muammolarni   hal   qilish   uchun   ko'proq   mos   keladigan   ma'lumotlar   turlarini
aniqlashdir. O'zingizning shaxsiy ma'lumotlar turlarini yaratish uchun ro'yxatlar
va   tuzilmalardan   qanday   foydalanish   mumkinligini   allaqachon   ko'rgansiz.
Masalan, sanani saqlash uchun struktura quyidagicha e’lon qilinadi.  struct DateStruct
{
        int day;
        int month;
        int year;
};
Ro'yxatlar va strukturalar-bu an'anaviy (strukturali) dasturlash dunyosi, biz
faqat   ma'lumotlarni   saqlashimiz   mumkin.   C++11   da   biz   shunday   strukturani
yaratishimiz va ishga tushirishimiz mumkin:
4-Topshiriq
14. Viloyat nomli sinf yarating. Tarkibida public, private
spetsifikatorlari orqali metodlar va xossalar e’lon qiling.
Ulardan asosiy dasturda foydalaning
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #include <iostream>
           using namespace std;
class viloyat
{   private:
 string m_nom;   float m_hudud;  string  m_hokim;
     int m_yil;
              public:
    viloyat()
    {   m_nom="mavjud emas"; m_hokim="mavjud emas";
        m_hudud=0;  m_yil=0; }
    viloyat(string nom, float hudud,string hokim,int yil)
   { m_nom=nom; m_hudud=hudud; m_hokim=hokim;
        m_yil=yil;  }   string  getNom()
    {   return m_nom;  }    string getHokim()
    {    return m_hokim; }    int getYosh(int hozirgi_yil)
    { return hozirgi_yil-m_yil;  } };
Intmain(){viloyat
hudud("Samarqand",4.4,"Mirzabek_Umrzoqov",1860);
    int hozirgi_yil;  cout<<"hozirgi yilni kiriting:";
    cin>>hozirgi_yil; cout <<hudud.getNom() << endl;
    cout<<hudud.getHokim()<<endl;  30
31
32
33
34
35
36
37         cout<<hudud.getNom()<<"   "<<"Viloyati
hokimi:"<<hudud.getHokim()<<endl;
        cout<<hudud.getNom()<<"   "<<"   viloyati   "<<"
2021-yilda   "<<hudud.getYosh(hozirgi_yil)<<"   yilligi
nishonlanadi "<<endl;
    return 0;}
Dasturni ishga tshurgandan so’ngi nateja quydagiga teng bo’ladi .
6-laboratoriya ish
Mavzu: Sinf va ob’yekt tushunchalari
  Statik   a'zolar   o'zgaruvchilari,   agar   sinf   ichki   qidiruv   jadvalidan
foydalanishi   kerak   bo'lsa,   foydali   bo'lishi   mumkin   (masalan,   oldindan
hisoblangan   qiymatlar   to'plamini   saqlash   uchun   ishlatiladigan   qator).   Qidiruv
jadvalini   statik   qilib,   sinfning   barcha   ob'ektlari   uchun   faqat   bitta   nusxa
yaratiladi   (sinfning   har   bir   ob'ekti   uchun   alohida   nusxa   emas).   Bu   xotirani
sezilarli darajada tejashga yordam beradi.
Sinfning   statik   metodlari.   Yuqorida   biz   statik   a'zolar   o'zgaruvchilari
uning obyektlari emas, balki sinfga tegishli a'zolar ekanligini bilib oldik.
Statik   metodlar.   Agar   statik   a'zolar   o'zgaruvchilari   public   bo'lsa,   biz
ularga   to'g'ridan-to'g'ri   sinf   nomi   va   (::)   operatori   orqali   kirishimiz   mumkin.
Agar   statik   a'zo   o'zgaruvchilari   private   bo'lsa   -chi?   Quyidagi   kodni   ko'rib
chiqaylik:
class Value
{
private:
        static int s_value;
 
};  int Value::s_value = 3; // private bo'lsa ham, statik a'zoni aniqlash
int main()
{
        //   Bu   yerda   Value::s_valuega   qanday   kirish   mumkin,   agar   s_value
private bo'lsa?    }
5 -Topshiriq
14. Guruh nomli sinf yozing. Guruh talabalar soni 30 ta bo’lishi
talab   qilinmoqda.   Guruh   talabalar   soniga   qarab,   “TALABA
YETARLI”,   “TALABA   KAM”,   “TALABA   KO’P”   kabi
natijalar qaytaruvchi metodlar hosil qiling  .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 #include <iostream>
using namespace std;
class Guruh
{  private:
    int m_nom;  int m_son;
public:
    Guruh()
    {  m_nom=0;  m_son=0;
    }  Guruh( int nom, int son )
    {m_nom=nom; m_son=son;
    }  int getNom()
    {    return m_nom;
    } int getSon()
    { return m_son;
    } string getTalaba()
    {   if(m_son==30)
        return "Talaba yetarli";  else   if(m_son<30)
        return" Talaba kam";      else   if(m_son>30)
        return  "Talaba kop"; } };
                int main()  {   Guruh guruh(204,30);
        cout   <<   guruh.getNom()<<"-da   "
<<guruh.getTalaba()<< endl;
    return 0;  
}  Dasturni ishga tshurgandan so’ngi nateja quydagiga teng bo’ladi .
7-laboratoriya ish
Mavzu:Sinfda o’zgaruvchi va metodlaryaratish  .
Statik a'zolar sinf ob'ektlari bilan bog'liq emas.   Statik a'zolarga har xil
sinf   obyektlari   orqali   kirishingiz   mumkin   bo'lsa   (yuqoridagi   misolda   bo'lgani
kabi),   statik   a'zolar   sinf   obyektlari   yaratilmagan   bo'lsa   ham   mavjud   ekanligi
ayon   bo'ladi!   Global   o'zgaruvchilar   singari,   ular   dastur   ishga   tushganda
yaratiladi va dastur bajarilgandan so'ng yo'q qilinadi.
Shunday qilib, statik a'zolar sinfga tegishli bo'lib, bu sinf obyektlariga tegishli 
emas. s_value har qanday sinf obyektlaridan mustaqil ravishda mavjud 
bo'lganligi sababli, unga to'g'ridan-to'g'ri sinf nomi va  ko’rinish sohasini 
aniqlash operatori  orqali kirish mumkin (bu holda Value::s_value orqali
Sinfning   statik   o’zgaruvchi-a’zolari.   Oldingi   darslardan   statik
o'zgaruvchilar o'z qiymatlarini saqlab qolishlarini va ular e'lon qilingan blokdan
chiqqandan keyin ham yo'q qilinmasligini bilib oldik, masalan:
6 -Topshiriq
14.   Trapetsiya   nomli   sinf   yarating.   Tarkibida   ikki   xil
konstruktor bo‘lsin 
1
2
3
4
5
6
7 #include <iostream>
using namespace std;
class trapetsiya
{  8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 private:
    int m_yuz;
    int m_son;
public:
    trapetsiya()
    {
        m_yuz=0 ;
        m_son=0;
    }
    trapetsiya( int yuz, int son )
    {
        m_yuz=yuz;
        m_son=son;
    }
};
int main()
{
    trapetsiya Yuza;
    return 0;
}
Dasturni ishga tshurgandan so’ngi nateja quydagiga teng bo’ladi .    8-laboratoriya ish
Mavzu  :   Konstruktor va destruktor tshunchalari  .
GETTER   VA   SETTER   -   Getter   va   setter   tushunchasi   ma'lumotlarni   yashirish
konsepsiyasini   qo'llab-quvvatlaydi.   Boshqa   ob'ektlar   ob'ektlardan   birida
joylashgan   ma'lumotlarni   to'g'ridan   -to'g'ri   boshqarishi   shart   emasligi   sababli,
qabul   qiluvchilar   va   o'rnatuvchilar   ob'ekt   ma'lumotlariga   boshqariladigan
kirishni   ta'minlaydi.   Qabul   qiluvchilar   va   o'rnatuvchilar   ba'zan   mos   ravishda
aksessuarlar va o'zgartirish usullari deb ataladi.
Shuni   ta'kidlash  kerakki,  biz  faqat  usullarning  interfeysini   ko'rsatamiz,  amalga
oshirishni   emas.   Metodlarni   samarali   qo'llash   uchun   barcha   foydalanuvchilar
bilishi   kerak   bo'lgan   quyidagi   ma'lumotlar:metod   nomi;metodga   berilgan
parametrlar .
Konstruktor   bu   dastur   opertorlarini   tuzuvchi   ,destruktir   dastur   operatorlarini
o’zgatiruvchi . 
Metodning qaytish turi.
7 -Topshiriq
14 .  Kutubxona nomli sinf yarating. Tarkibida getterlar va setterlar.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include <iostream>
using namespace std;
class kutubxona
{
private:
    string m_nom;
    int m_yil;
   int  m_son;
   string m_rahbar;
   int m_hozirgi_yil;
public:
    kutubxona()
    {   m_nom="mavjudmas";
        m_yil=0;
        m_son=0;
        m_rahbar="mavjudmas";
        m_hozirgi_yil=0;  }
    kutubxona(string nom,int yil, int son,string rahbar,int yili)
    {   m_nom=nom;
        m_yil=yil;
        m_son=son;
        m_rahbar=rahbar;
        m_hozirgi_yil=yili;  }  25
26
27
28
29
30
31
32
33
34
35
36
37
38
39    string getrahbar()
    {  return m_rahbar;  }
   int getyil()
    {   return m_yil;   }
        int getYosh()
        {  return m_hozirgi_yil-m_yil;  }
     ~kutubxona(){}   };
int main()
{    kutubxona kitob("pushkinskiy",1267,200,"Mirzabek Umrzoqov ",2021);
   cout<<kitob.getrahbar()<<endl;
   cout<<kitob.getyil()<<endl;
   cout<<"kutubxon:"<<kitob.getYosh()<<"yoshda";
    return 0;
}
Dasturni ishga tshurgandan so’ngi nateja quydagiga teng bo’ladi .
                                                                     9-laboratoriya ish
Mavzu:Sinfda o’zgaruvchi va metodlaryaratish .
Ba'zida sinf metodi uchun ishlayotgan obyektni qaytarish qiymati sifatida 
qaytarish foydalidir. Bu yerda asosiy nuqta - bitta obyekt ustida ishlayotganda 
bir nechta metodlarni bir -biriga bog'lab qo'yishdir! Aslida biz buni uzoq 
vaqtdan beri ishlatamiz. Masalan, ma'lumotlarni cout bilan qismlarga 
ajratganimizda:
cout   <<   "Hello, "   <<   userName ;
Bunday holda, cout - bu obyekt, << operatori - bu shu obyektda 
ishlaydigan metod. Kompilyator yuqoridagi parchani quyidagicha ishlaydi:
( cout   <<   "Hello, " )   <<   userName ;
Birinchidan, << operatori konsolga Salomni chop etish uchun cout va 
"Hello" satrini ishlatadi. Biroq, bu ifodaning bir qismi bo'lgani uchun << 
operatori ham qiymatni (yoki bo'shliqni) qaytarishi kerak. Agar << operatori 
bekor qilsa, quyidagilar olinadi:
(void)<< userName;
Bu hech qanday ma'noga ega emas (kompilyator xato qiladi). Biroq, 
buning o'rniga, << operatori * this ko'rsatkichini qaytaradi, bu kontekstda 
shunchaki cout. Shunday qilib, birinchi << operatorini qayta ishlagandan so'ng, 
biz:
Siz hаqiqiy оlаmni sоddаlаshtirаsiz hаmdа uning fаqаt аsоsiy 
elеmеntlаridаn fоydаlаnаsiz. Mаshinа - mоdеlning muhim dеtаli, birоq 
bu Kаdillаkmi yoki bоshqа birоn mаrkаdаgi mаshinаmi, yo‘l hаrаkаti 
mоdеli uchun bu dеtаllаr оrtiqchа.
Аbstrаktsiyaning ikkitа аfzаl jihаti bоr. Birinchidаn, u mаsаlа еchimini 
sоddаlаshtirаdi. Muhimi yanа shundаki, аbstrаktsiya tufаyli dаsturiy tа’minоt 
kоmpоnеntlаridаn tаkrоrаn fоydаlаnish mumkin. Tаkrоrаn qo‘llаnаdigаn 
kоmpоnеntlаrni yarаtishdа ulаr оdаtdа g‘оyat iхtisоslаshаdi. Ya’ni 
kоmpоnеntlаr birоn-bir mа’lum mаsаlа еchimigа mo‘ljаllаngаni, yanа ulаr 
kеrаksiz o‘zаrо bоg‘liqlikdа bo‘lgаni sаbаbli. dаstur frаgmеntining bоshqа 
birоn o‘rindа tаkrоrаn qo‘llаnishi qiyinlаshаdi. Imkоni bоrichа bir qаtоr 
mаsаlаlаrni еchishgа qаrаtilgаn оb’еktlаrni yarаtishgа hаrаkаt qiling. 
Аbstrаktsiya bittа mаsаlа еchimidаn ushbu sоhаdаgi bоshqа mаsаlаlаrni hаm 
еchishdа fоydаlаnish imkоnini bеrаdi .  8 -Topshiriq
14 .  Guruh nomli sinf yarating. Tarkibida metodlar hosil qiling. Sinfga
oid obyektlar yarating va initsializatsiyalashtiring.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include <iostream>
using namespace std;
class Telefon{
private:
string m_name;
int m_prize;
public:
    Telefon(){
    m_name="none";
    m_prize=0;
    }
    Telefon(string name, int prize){
    m_name=name;
    m_prize=prize;
    }
    int getPrize(){
    return m_prize;
    }
    string getMarc(){
    return m_name;
    }
};
int main()   {
    Telefon A("Samsung A71", 5000000);
    cout<<A.getMarc()<<" narxi "<<A.getPrize();
    return 0;
}
Dasturni ishga tshurgandan so’ngi nateja quydagiga teng bo’ladi .  XULOSA
Ma'lumki, C++ standart kutubxonasi bizga qulay bo’lishi uchun yaratilgan
sinflarga to'la. string, vector va array - barchasi sinf turlari! Shuning uchun, siz
ushbu turdagi har qanday obyektni yaratganingizda, siz sinf obyektini yaratasiz
va   agar   siz   ushbu   obyektlar   yordamida   funksiyani   chaqirsangiz,   siz   metodni
chaqirasiz:   C++   da   strukturalar   haqida   eslatma.   C   da   strukturalar   faqat
ma'lumotlarni   saqlashi   mumkin   va   ular   bilan   bog'liq   metodlar   bo'lmasligi
mumkin. C++ da sinflarni loyihalashdan so'ng (class kalit so'zidan foydalangan
holda)   Bjarne   Stroustrup   struktura   (C   dan   meros   bo'lib   o'tgan)   bog'liq
metodlarga   ega   bo'lishi   kerakligi   haqida   o'ylab   ko'rdi.   Biroz   o'ylanib,   nima
kerakligini   hal   qildi.   Shuning   uchun,   yuqoridagi   dasturlarda   biz   sinf   o'rniga
struct kalit so'zidan foydalanishimiz mumkin va hamma narsa ishlaydi!
Ko'pgina ishlab  chiquvchilar  bu noto'g'ri  qaror, deb o'ylashadi,  chunki  bu
muammolarga olib kelishi mumkin, masalan, sinf xotirani o'z -o'zidan tozalaydi
(masalan,   xotira   ajratilgan   sinf)   sinfning   vayron   bo'lishidan   oldin   uni   xalos
qiladi), lekin struktura bilan ishlashda buni taxmin qilish xavfli. Shuning uchun,
faqat  ma'lumotlarni  saqlash  uchun  ishlatiladigan  strukturalar   uchun struct   kalit
so'zidan   foydalanish   hamda   ma'lumotlar   va   funksiyalarni   birlashtirishni   talab
qiladigan   obyektlarni   aniqlash   uchun   class   kalit   so'zidan   foydalanish   tavsiya
etiladi.
 Qoidalar:   faqat   ma'lumotlarni   saqlash   uchun   ishlatiladigan   struktura
uchun   struct   kalit   so'zidan   foydalaning.   Ma'lumot   va   funksiyalarni
birlashtirgan   obyektlar   uchun   class   kalit   so'zidan   foydalaning.   -
Himоyalаngаn   оb’еktdаn   fоydаlаnishdа   оb’еkt   vа   dаsturning   bоshqа
qismi   o‘rtаsidа   birоn-bir   ko‘zdа   tutilmаgаn   o‘zаrо   аlоqаlаr   bo‘lishi
mumkin   emаs.   Аgаr   оb’еkt   bоshqаlаrdаn   аjrаtilgаn   bo‘lsа,   bu   hоldа   u
dаsturning   bоshqа   qismi   bilаn   fаqаt   o‘z   intеrfеysi   оrqаli   аlоqаgа
kirishishi mumkin.
 Shundаy   qilib,   inkаpsulyаlаsh   yordаmidа   mоdulli   dаsturlаrni   yarаtish
mumkin.   Sаmаrаli   inkаpsulyаlаshning   uchtа   o‘zigа   хоs   bеlgisi
qo‘yidаgichа:
 -аbstrаktsiya;
 -jоriy qilishning bеrkitilgаnligi;
 -mаs’uliyatning bo‘lingаnligi.  Asosiy adabiyotlar:
1.  Sh.A.Nazirov, R.V.Qobulov, M.R.Babajanov «C va C++ TILI»
Informatika fanidan o’quv qo’llanma //TATU 489 b. Toshkent, 2012.
2.C/C++. Программирование на языке высокого уровня / Т. А. Павловская.
— СПб.:Питер, 2003. —461 с: ил.
3. Программирование на языке С++ в среде Qt Creator:
/ Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк,О. В. Чеснокова,
А. С. Чмыхало — М. : ALT Linux, 2015. — 448 с.
4. Ж2мин Бланшет, Марк Саммерфилд Qt 4:Программирование GUI на 
C++ 
5. М.Шлее, Qt 5.10. Профессиональное программирование на С++. - СПб.: 
БХВ-Петербург, 2018. - 1072 с.
Qo shimcha  adabiyotlar:ʻ
1.Герберт Шилд. С++. Базовый курс. Москва, Издательский дом 
“Вильямс”. 2010.-621 с.
2.Bjarne Stroustrup. Programming: Principles and Practice using C++ (Second 
Edition)" Addison-Wesley. 2014, 1305 page.
3.Программирование на языке С++ в среде Qt Creator:
Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк,О. В. Чеснокова,
А. С. Чмыхало — М. : ALT Linux, 2015. — 448 с.

1-laboratoriya ish ish Mavzu : Obyektga yunaltirilgan dasturlash tillari va vazifalari 1- Vorislik . 2- Inkapsulyatsiya . 3- Polimorfizim . 4- Konstruktor . 5- Descruktor . 6- Metodlar . 7- Sinf parametrlari class metodlar . Vorislik —bu hosilavey sinfning mavjud asosiy harakteristikalarini merosga olish hususyatidir . Inkapsulyatsiya – bu tizimda ishlaydigan ma’lumotlar va usulllarni sinfda birlashtirishga va foydalanuvchidan amalga oshirish tafselotlarini yashirishga imkon beruvchi tizimning xususyati . Ma’lumotlarni manepulyatsiya qiladigan va kodni birlashtiradigan ,shuningdik birinchi navbatdan ma’lumotlarga to’g’ridan to’g’ri tashqi kirishdan noto’g’ri ishlatishdan ximoya qiluvchi tamoyil . Polimorfezim – bu umumiy muloqot tili . Bir xil enterfeysli obyektlardan oyektning turi va ichki tuzilishi haqida ma’lumotsiz foydalanish xususyatidir . Ikki yoke undan ortiq uxshash ,lekin biroz boshqacha muammolarni yechishda bir xil usul nomidan foydalanadigan mexanezm . Konstruktir – bu bir xil sinfdagi obkekt yaratilganda avtomatik ravishta chaqiriladigan sinf metodining maxsus turi Konstruktorlar ,odatda standart foydalanuvchi tomonidan berilgan qiymatga ega bo’lgan sinf a’zolarining o’zgaruvchilarini ishga tshurish yoke ishlayotgan sinf uchun ,zarur bo’lagan konfeguratsiya bosqichlarini bajarish uchun ishlatiladi . Destruktor — bu sinfning biror obyekti uchun ajratilgan xotira obyekt yuqotilganidan so’ng bo’shatilishi lozimdir . Sinflarning maxsus komponentalari destruktorlar bu,vazefani aftomatik bajarish imkonini yaratadi . Metod – bu sinfga tegishli funksiyalardir ,sinfga tegishli funksiyalrni aniqlash uchun ikki yul mavjud . 1) ichki sinf 2) sinfdan tashqari . Sinf –bu bizning dasturimizda foydalanishimiz mumkin bo’lgan foydalanuvchi belgilaydigan ma’lumot turi va u obyekt tuzuvchisi yoke obketlarni yaratish uchun reja sifatida ishlaydi .

2-laboratoriya ish ish Mavzu : Abstraktlash Abstrakt sinflar. Abstrakt sinf ta’rifi. Hech bo’lmasa bitta sof (bo’sh) virtual funksiyaga ega bo’lgan sinf abstrakt sinf deyiladi.Quyidagi e’longa ega bo’lgan komponentali funksiya sof virtual funksiya deyiladi: virtual <tur> <funksiya_nomi> (<formal_parametrlar_ro’yxati>) = 0; Bu yozuvda « = 0» konstruksiya «sof spesifikator» deyiladi. Sof virtual funksiya ta’rifiga misol: virtual void fpure (void) = 0; Bu atamadan biz OYD ning shunday yondashuvi, degan xulosaga kelishimiz mumkin, bu yerda obyektlar birinchi o'rinda turadi. Bu mavzular biroz murakkabroq tuyilishi mumkin, lekin to’g’ri yo’nalishga tushib olinsa o’rganish oson. Obyektlar bir-biri bilan muloqot qilishlari, o'zaro ta'sir o'tkazishlari, o'zlari o'rtasida biror narsani uzatishi mumkin. Obyekt nimani anglatadi? Buni kompyuter o'yinida ko'rish mumkin. Katta, murakkab o'yinlar va dasturlar odatda obyektga yo'naltirilgan uslubda yoziladi. Bu dasturda mavjud bo'lgan hamma narsa obyekt. Agar siz qandaydir personaj olsangiz, u biror joyga (chapga yoki o'ngga) borishi, hujum qilishi, olib kelishi, qurishi mumkin. Bu personaj qila oladigan barcha vazifalar metodlar deyiladi. Bundan tashqari, OYD obyektlari xossalarga ega. Xossalar qaysi obyekt haqidagi savolga javob beradi. Bizning obyektimiz yashil rangda, qo'llari mavjud, oyoqlari bor, qandaydir o’lchamga ega va boshqalar. Hammasi "obekt qanday " degan savolga javob beradi, bu obyektning xossalari bilan bog'liq. C ++ da strukturalar haqida eslatma . C da strukturalar faqat ma'lumotlarni saqlashi mumkin va ular bilan bog'liq metodlar bo'lmasligi mumkin. C++ da sinflarni loyihalashdan so'ng (class kalit so'zidan foydalangan holda) Bjarne Stroustrup struktura (C dan meros bo'lib o'tgan) bog'liq metodlarga ega bo'lishi kerakligi haqida o'ylab ko'rdi. Biroz o'ylanib, nima kerakligini hal qildi. Shuning uchun, yuqoridagi dasturlarda biz sinf o'rniga struct kalit so'zidan foydalanishimiz mumkin va hamma narsa ishlaydi!

1-Topshiriq 14 . Viloyat nomli sinf yarating , tarkebida ikki xil konstruktir bo’lsin . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include <iostream> using namespace std; class viloyat { private: string m_nom; int m_yil; float m_hudud; public: viloyat() { m_nom="samaraqand"; m_yil=1800; m_hudud=4.600; } viloyat(string nom,int yil,float hudud) { m_nom=nom; m_yil=yil; m_hudud=hudud; } string getNOm() { return m_nom; } }; int main() { viloyat tuman; cout<<tuman.getNOm()<<endl; return 0; }

Dasturni ishga tshurgandan so’ngi nateja quydagiga teng bo’ladi .

3-laboratoriya ish ish Mavzu :Modullik Diagramma - bu elementlar to'plamining grafik tasviri bo'lib, ular ko'pincha graf uchlari (yo'llar) va yo'llar (aloqa) ning bog'langan grafi sifatida tasvirlanadi. UML tili 13 turdagi diagramalarni o'z ichiga oladi, ular orasida birinchi navbatda sinflar diagrammasi bo'lib, biz bu mavzuda shuni muhokama qilamiz. Sinf diagrammalarida sinflar, interfeyslar va ularning aloqalari ko'rsatilgan. Bunday sxemalar ko'pincha ob'ektga yo'naltirilgan tizimlarni modellashtirish uchun ishlatiladi. Ular tizimni statik tarzda ifodalash uchun mo'ljallangan. UML elementlarining ko'pchiligi elementning eng muhim jihatlarini vizual tarzda taqdim etishni ta'minlaydigan o'ziga xos va sodda grafik belgiga ega. Sinf diagrammasini tuzish. Tizim va uning chegaralari uchun funksional talablar aniqlangandan so'ng, sinflar diagrammasini tuzish uchun predmet sohani tahlil qilish kerak. Sinf diagrammasi bo'yicha qisqacha nazariy ma'lumot. Sinf diagrammasi tizimdagi sinflarning turlarini va ular orasidagi turlicha statik munosabatlarni belgilaydi. Sinf diagrammalarida sinflar orasidagi munosabatlarga taalluqli sinf atributlari, sinf metodlari va cheklovlar tasvirlangan. Sinf diagrammasining turi va talqini, asosan, nuqtai nazarga (abstraktsiya darajasi) bog'liq: sinflar predmet sohaning mohiyatini namoyish etadi (tahlil jarayonida) yoki dasturiy ta'minot elementlarini (loyihalash va amalga oshirish jarayonlarida) ifodalashi mumkin. 2-Topshiriq 14- Viloyat nomli sinf yarating. Tarkibida 2 ta metod, 3 ta xossa bo’lsin. Viloyat hokimini getHokim() metodi orqali jo’nating 1 2 3 4 5 6 7 8 9 10 11 12 #include <iostream> using namespace std; class viloyat { private: string m_nom; float m_hudud; string m_hokim; public: viloyat()