logo

Obyektga yo'naltirilgan dasturlash. C++ OOP

Yuklangan vaqt:

12.08.2023

Ko'chirishlar soni:

0

Hajmi:

307.658203125 KB
Mavzu:   Obyektga yo'naltirilgan
dasturlash .  C++ OOP.
Reja:
1.Kirish.
2.  C ++ OOP nima? (Object Oriented Programming = OOP)
3.  C++ sinflar va ob’ektlar
4. C++ Method (Sinf/Class)
5. C++ Enkapsulatsiya.
6. C++ Polimorfizm.
7. C++ Merosxurlik
9.Xulosa.
10.Foydalanilgan adabiyotlar.
KIRISH Obyekt   nima?
                Obyekt   Obyektga  yo'naltirilgan  dasturlash(OYD)   texnologiyasining  eng  asosiy
kalit   tushunchasidir.   Atrofga   qarang,   haqiqiy   hayotdagi   bir   necha   obyektlarni
ko'rishingiz mumkin: stol, uy, it, mushuk, televizor va h.k.
                  Ularning   barchasining   albatta   hususiyatlari   va   bajaradigan   vazifalari
(funktsiyalari) bor. Masalan, Mushuk hususiyatlari: rangi, qorni to'qligi, yoshi, jinsi;
funktsiyalari:   ovqat   yeyishi,   myovlashi,   yurishi,   sichqon   tutishi.   Mashina,
hususiyatlari:   tezligi,   rangi,   nomi,   narxi;   funktsiyalari:   yurishi,   to'xtashi,   oyna
artgichlarining   ishlashi,   eshiklarning   ochilib   yopilishi   v.h.k.
       Bir daqiqaga to'xtang va hozirda atrofingizdagi biror narsalarni analiz qiling. Har
bir   obyekt   uchun   o'zingizdan   so'rang:   "Bu   obyektning   qanday   hususiyatlari   bor?"   ,
"Qanday vazifalarni  bajaradi?" kabi. Va kuzatish natijalaringizni yozib oling, sezgan
bo'lsangiz   tuziladigan   ro'yxat   obyektning   murakkabligiga   qarab   ko'payib   boradi.
Kompyuter   indikatorining   2   ta   hususiyati   bor   o'chiq   va   yoniq;   funktsiyalari   esa
yonish va o'chish.  Bu barcha kuzatishlar OYD dunyosiga o'tkazish mumkin.
 
        Dasturlashdagi obyekt(bundan keyin oddiygina   obyekt   deb ketiladi) ham haqiqiy
hayotdagi   obyektlarga   o'xshash:   Ular   ham   qandaydir   hususiyatlar   va   bajaradigan
funktsiyalardan   iborat   bo'ladi.   Obyektning   hususiyatlari   har   xil
dasturiy   o'zgaruvchilardan   iborat   bo'ladi   va   ularning   o'zgartirish   uchun
qandaydir   funktsiyalar   bajariladi.   Bunday   funktsiyalar   bilan   o'zgaruvchilarning
holatini   berkitish  mumkin  ya'ni  aynan  o'sha o'zgaruvchini   tashqaridan  o'zgartirish
uchun   albatta   maxsus   funktsiyadan   foydalanish   kerak   bo'ladi.   Bu   jarayon
" Enkapsulatsiya "   deb   atalib,   OYDning   eng   muxim   tushunchalaradian   biridir.   Hech
e'tibor   berganmisiz   dorilarda   ham   shu   termin   ishalitladi   ya'ni   kapsula(ustidan
maxsus   modda   bilan   o'ralgan   dorilar),   buni   misolni   Enkapsulatsiya   jarayoni   esda
yaxshi qolishi va tushunarli bo'lishi uchun keltirdim.
        Mashinani tasavvur qiling, Uni dasturlash obyekit sifatida modellashtiramiz:
Uning   o'zgaruvchilari(   hozirgi   tezligi,   qolgan   benzini,   va   h.k)   va   uning
funktsiyalari(to'xtatish,   tezlikni   oshirish,   rulni   burish,   va   h.k.).   Bu   yerda   uning
bakidagi benzini yurishi tufayli kamayib boradi demak uning qiymatining o'zgarishi
0dan   bakning   sig'imigacha   bo'ladi,   yoki   uning   tezligi   ham   shu   kabi   aynan   qaysidir
funktsiyalarning   amalga   oshirilishi   orqali   u   ham   0   dan   maksimal   tezligigacha
o'zgarishi mumkin. 
Mavzu :   Obyektga  yo'na ltirilgan  dasturlash .  C++ OOP
C ++ OOP nima? (Object Oriented Programming = OOP) OOP (O bj e ct   O ri e nt e d   P r og ra mm i n g   -   Oby e k t ga   y o' na lt i r i l ga n   dast ur la sh )
-  bu  bi ro n  bi r  ma qs ad ga  y o' na lt i ri lg an   dast ur la sh  de ga n  ma' no ni  a ng lat adi .
P r ot s e du ra vi y   da st u rl as h   -   b u   ma' lu mo t la rg a   i sh l ov   be r ad i g an
pr ot se d ur al ar   y ok i   f unk t si ya la rn i   y oz i s h ,   o b' e k t g a   yo 'n al t i ri lg an   da st u rl as h
e sa  ma 'l um ot  va  f unk t si ya la rn i   o' z  i ch i ga  o lg an  o b' e k t l ar ni  y ar at i sh   h aq i da .
Ob' e k t g a   y o' na lt i r i l ga n   da st u rl as h   p ro t se ss ua l   da st u rl as h d an   b i r   qat or
afz al li k l ar ga  e ga :
 O O P   t e z r o q   v a   b a j a r i l i s h i   o s o n r o q
 O O P   d a s t u r l a r n i n g   a n i q   t u z i l i s h i n i   t a ' m i n l a y d i
 O O P   C   + +   k o d i n i   D R Y   " D o n ' t   R e p e a t   Y o u r s e l f "   s a q l a s h g a   y o r d a m   b e r a d i
v a   k o d n i   s a q l a s h ,   o ' z g a r t i r i s h   v a   d i s k   r a s k a d r o v k a   q i l i s h n i
o s o n l a s h t i r a d i .
 O O P   k o d n i   k a m   v a   i s h l a b   c h i q a r i s h   v a q t i n i   q i s q a r t i r g a n   h o l d a   t o ' l i q
q a y t a   i s h l a t i l a d i g a n   i l o v a l a r n i   y a r a t i s h g a   i m k o n   b e r a d i .
C   + +   -   b u   o b' e k t g a   y o' na lt i r i l ga n   da st u rl as h   t i l i .   C + +   d ast u rl as h   t i li da
h amm a   nar sa   u ni ng   x u su si ya t la ri   v a   u su ll ar i   bi la n   bi r   q at o rd a   si nf lla r   va
ob ye k t la r  bi lan  b og 'l i q .
Sinf   -   bu   bizning   dasturimizda   foydalanishimiz   mumkin   bo'lgan   foydalanuvchi
belgilaydigan   ma'lumot   turi   va   u   ob'ekt   tuzuvchisi   yoki   ob'ektlarni   yaratish   uchun
"reja" sifatida ishlaydi.
Sinf yarating.
Si nf   ya ra t i s h   uc h u n   cl a s s   k ali t   so 'z dan   fo yd al an i n g.   "   My Cl a ss "   No mli   si n f
ya ra t a mi z .
class   MyClass  {              // class
    public :                          // ochiqlik siyosati
        int  myNum;                // Attribute (int tipiga tegishli)
        string  myString;    // Attribute (string tipiga tegishli)
};
Misolni tushuntirish.
 c l a s s   K a l i t   s o ' z   M y C l a s s   d e b   a t a l g a n   b i r   s i n f   y a r a t i s h   u c h u n
i s h l a t i l a d i   .
 p u b l i c K a l i t   s o ' z   b i r   b o ' l i b   k i r i s h   b e l g i s i   i f o d a l a y d i .   B u   d e g a n i   c l a s s
d a n   t a s h q a r i d a   h a m   a t t r i b u t l a r d a n   f o y d a l a n i s h   m u m k i n   .  S i n f   i c h i d a   b u t u n   s o n   m y N u m   v a   s a t r   o ' z g a r u v c h i s i
m a v j u d   m y S t r i n g .   O ' z g a r u v c h i l a r   s i n f   i c h i d a   e ' l o n   q i l i n g a n i d a ,
u l a r   a t r i b u t l a r   d e b   n o m l a n a d i   .
 N i h o y a t ,   s i n f   t a ' r i f i n i   n u q t a - v e r g u l   b i l a n   t u g a t i n g   ; .
Ob'ektni yaratish.
C + +   d ast ur la sh   t i li da   bi z   si nf   y ar at di k ,   My Cl a ss   no ml i   c las s   ya ra t di k ,
sh u ni ng   u ch un   bu nd an   fo yd al an i b   o by e k t   y ar at ami z.   O b' e k t ni   ya ra t i s h
uc h u n   My Cl a ss si n f  no mi ni ,  so 'n gr a   ob 'e k t   no mi ni   k o' rs at i n g.
# include   <iostream>
# include   <string>
using   namespace  std;
class  MyClass {       
    public :                         
        int  myNum;               
        string myString;   
};
int   main () {
    MyClass myObj; 
    myObj.myNum =  15 ;
    myObj.myString =  "Some text" ;
    cout << myObj.myNum <<  "\n" ; 
    cout << myObj.myString; 
    return   0 ;
}
15
Some text
Bir nechta ob'ektlar.
Si z  bi t t a  si nf ni n g  bi r  ne ch t a  ob 'e k t la ri ni  ya ra t i sh i n gi z  mu mk i n:
Me t h od   si n fg a   t e gi s h li   fu nk s i y al ar di r.   Si nf ga   t e gi sh l i   fu nk si y al ar ni
ani ql ash  u ch un  i k k i  y o' l  m avj ud .
 I c h k i   s i n f   t a ' r i f i  S i n f d a n   t a s h q a r i   t a ' r i f
Si nf   t ash qa ri da   f un k si ya ni   ani ql ash   uc h u n   s i nf   i ch i da   e 'l on   qi li sh   k e r ak
va   k e yi n   u ni   si n fd an   t a sh q ar i d a   e ' lo n   q i li sh   k e rak .   ::   si n f   n om i ni   k o' rs at i sh
uc h u n  i sh lat i lad i .
# include   <iostream>
using   namespace  std;
class  MyClass {                 
    public :                           
        void   myMethod ();       
};
void   MyClass::myMethod () {
    cout <<  "Hello World!" ;
}
int   main () {
    MyClass myObj;         
    myObj. myMethod (); 
    return   0 ;
}
Hello World!
Parametrlar.
Si z  sh u ni ng de k  pa ra me t rl ar ni  q o' sh i sh i ng i z  m umk i n :
# include   <iostream>
using   namespace  std; class  Car {
    public :
        int   speed ( int  maxSpeed);
};
int   Car::speed ( int  maxSpeed) {
    return  maxSpeed;
}
int   main () {
    Car myObj;
    cout << myObj. speed ( 913 );
    return   0 ;
}
913
C + +   K i r i s h   m a’ l u m o t i .   ( S i n f / C l a s s )
Ho zi rd a,   si z   pu b l i c bi z ni ng   ba rc h a   si nf   mi s ol la ri mi z da   pa yd o   bo 'l ga n
k ali t  s o' z   bi l an  j uda  y ax s h i   t ani sh s i z :
pu b l i c Ka li t   s o' z   bi r   bo 'li b   ki r i sh   m a 'l um ot i.   Ki ri sh   sp e t si fi k at or la ri   si nf
a' zo la ri ga   (a t r i b ut l ar   va   u su ll ar ga )   qa nda y   k i r i sh   mu mk i n li gi ni
be l gi la yd i .   Yu qo ri da gi   mi so lda ,   a' zo la r   pu b l i c -   b u   k o dn i   t ash qa ri da n   k i ri sh
va  o' zg ar t i ri sh   mu mk i nli gi ni  an gl at a di .
D ast ur la sh   x a vfs i z li k   bi ri nch i   o 'r i n da   t u ra di .   Bi z   ay na n   t a sh q i   k i r i sh ni
t o' x t at i sh   k e r ak   b o' ls a   ni m a   q i l ami z?   b un i n g   j av obi   q uy i d ag i   ma 'l um ot
t u rl ar i  bi l an  i z oh l an adi .
C  + +   da  uc h t a  k i r i sh  sp e t si fi k at or la ri   mavj ud :
 p u b l i c   -   A ' z o l a r g a   s i n f d a n   t a s h q a r i   k i r i s h   m u m k i n .
 p r i v a t e   -   A ' z o l a r g a   s i n f d a n   t a s h q a r i d a   k i r i s h   ( y o k i   k o ' r i s h )   m u m k i n
e m a s .
 p r o t e c t e d -   A ' z o l a r g a   s i n f d a n   t a s h q a r i g a   k i r i s h   m u m k i n   e m a s ,   a m m o
u l a r g a   m e r o s   q o l g a n   s i n f l a r d a   k i r i s h
m u m k i n .   K e y i n c h a l i k   m e r o s x o ' r l i k   h a q i d a   k o ' p r o q   b i l i b   o l a s i z   .
Qu yi da gi   mi so ld a   bi z   pu b l i c va   pr iv a t e a' zo la r   o' rt as i da gi   fa rq ni
k o' rs at ami z   : # include   <iostream>
using   namespace  std;
class  MyClass {
    public :   
        int  x; 
    private : 
        int  y; 
};
int   main () {
    MyClass myObj;
    myObj.x =  25 ; 
    myObj.y =  50 ;   
    return   0 ;
}
In function 'int main()':
Line 8: error: 'int MyClass::y' is private
Line 14: error: within this context
error: y is private
Eslatma: private   Agar   kirish   spetsifikatsiyasini   ko'rsatmasangiz,   avtomatik
tarizda private bo'ladi.
class   MyClass  {
    int  x;      // Private attribute
    int  y;      // Private attribute
};
C + +   E n k a p s u l a t s iya .   ( S i n f / C l a s s )
Ass al om u   a la yk um   bu gu ng i   da rs i mi z   ma 'l um ot lar   x av fsi zl i g i ni
t a' mi n la sh   h aqi da   ga pl ash a mi z .   Ko 'p ch i li k   ma' lu mo t l ar ni   f oy da la nu vch i da n
ya sh i ri sh   k e rak   bo 'l i b   q ol adi .   B un da   bi zd a   C+ +   dast ur la sh   t i li da
bi z ga   En ka ps ul a ts iy a   yo rd am   be ra di .   Bu   at a ma   b o' yi ch a   qu yi da gi ch a
t u sh u nc h a ga  e g a  bo 'li sh i ni ng i z  mu mk i n.
Encapsulation( Enkapsulatsiya )-   ning   ma'nosi   ,   "sezgir"   ma'lumotlar
foydalanuvchilardan  yashirilganligiga ishonch  hosil qilishdir.   Bunga  erishish   uchun
siz   sinf   o'zgaruvchilari   /   atributlarini   e'lon   qilishingiz   kerak     private   (sinf
tashqarisidan kirish mumkin emas).
Enkapsulatsiya   Uchun Maxsus.
#include <iostream>
using   namespace   std ; class   Employee  {
    private :
        int  salary;
    public :
        void   setSalary ( int  s) {
            salary = s;
      }
        int   getSalary () {
            return  salary;
      }
};
int   main () {
    Employee myObj;
    myObj.setSalary( 50000 );
    cout << myObj.getSalary();
    return   0 ;
}
50000
Yuqoridagi misolni tushuntirish.
Ki ri sh   ch e k l an ga n   sa l a r y   o' zg ar uv ch i  h i s ob lan adi  ch un k i   pr iv a t e   de b  
e ' lo n  qi li n ga n.
Um um i y   se tS a l a r y () us ul   (   s )   par am e t r ni  o la di   va  un i  
at r i b ut ga   sa l a r y (i sh  h aq i   =  s)   t ay i n la yd i   .
Um um i y   ge tS a l a r y () us ul   x u su si y   sa l a r y at r i b ut ni n g   qi ym at i ni  
qa yt ar adi   .
Ich k ar i da   m a in () bi z   Em pl oye e si n f   ob 'e k t i ni  y ar at ami z   .   E nd i  
bi z   se tS a l a r y () x u su si y  u su ln i n g  q i y mat i ni  
be l gi las h   uc h u n   us ul da n   fo yd al an i sh i mi z  m umk i n   50 0 0 0 .   Ke yi n  
bi z   ge tS a l a r y () ob 'e k t ni  qi ym at i ni  qa yt ar i sh  u ch un  u su li   ya 'n i  fu nk si y a  
h i s obl an adi .
Nima uchun enkapsulatsiya?  X a v f s i z l i k   u c h u n   j u d a   m u h i m .   Y a s h i r i n   m a ' l u m o t l a r n i   s a q l a s h   v a
u n d a n   f o y d a l a n u v c h i l a r n i   c h e k l a s h .
 C l a s s   n i   i c h i d a   x a v f s i z l i k g a   e g a   b o ' l g a n   a t t r i b u t g a   b i z   m u r o j a a t   q i l a
o l a m i z
C + +   M e ro s xu r l i k   ( S i n f / C l a s s )
Ass al om u   a la yk um   bu gu n   si z   bi l an   me r os x u rl i k   h aqi da   g ap la sh am i z.
C la ss   i ch i d a   va   u nd an   t ash qa ri   fo yd al an i sh   v a   un i n g   qu la yl i k la ri   h aqi da
ga pla sh i b o la mi z .
Meros olish
 d e r i v e d   c l a s s     ( b o l a )   -   b o s h q a   s i n f d a n   m e r o s   q o l g a n   s i n f .
 b a s e   c l a s s   ( o t a - o n a )   -   m e r o s   b o ' l i b   o ' t g a n   s i n f .
Si nf da n   me ro s   o li sh   u ch u n   : be l gi dan   fo yd an i l adi .   Qu yi da gi
mi s ol da,   Ca r si n f   ( bo la )   at r i b ut l ar   va   us ul la rn i   Ve hi cl e   si n fd an   ( ot a-
on ad an )   me r os   qi li b  ol adi   :
# include   <iostream>
# include   <string>
using   namespace  std;
// Base class
class  Vehicle {
    public : 
        string brand =  "Ford" ;
        void   honk () {
            cout <<  "Tuut, tuut! \n"  ;
      }
};
// Derived class
class  Car:  public  Vehicle {
    public : 
        string model =  "Mustang" ;
};
int   main () {
    Car myCar;     myCar. honk ();
    cout << myCar.brand +  " "  + myCar.model;
    return   0 ;
}
Tuut, tuut!
Ford Mustang
"Meros" dan qachon va qanday vaqtda foydalanish kerak?
"Meros"   - bu odatda bitta class dan qayta qayta foydalanish imkoniyatini beradi.
Yangi sinf yaratishda sinf attributlaridan foydalanish imkoniyati.
Ko'p meros.
Si nf   sh un i n gd e k ,   v er g ul   b il a n   a j r a t il ga n   r o' yx a t   yo rd am i d a   bi r   n e ch t a
as osi y  si nf la rd an  o li n i sh i  m umk i n   :
# include   <iostream>
using   namespace  std;
class  MyClass {
    public :
        void   myFunction () {
            cout <<  "Hello World. MasterSherkulov.\n"  ;
      }
};
class  MyOtherClass {
    public :
        void   myOtherFunction () {
            cout <<  "Hello World. MasterSherkulov.\n"  ;
      }
};
class  MyChildClass:  public  MyClass,  public  MyOtherClass {
};
int   main () {
    MyChildClass myObj;
    myObj. myFunction ();
    myObj. myOtherFunction ();
    return   0 ;
}
Hello World. MasterSherkulov. Hello World. MasterSherkulov.
Meros Huquqi.
Si z   Ki r i sh   x u su si yat la ri ni   ani ql ash   b o' li mi d an   C   + +   d a   uc h t a   ani ql ov ch i
mavj ud li gi ni   bi l i b   ol di n gi z   .   H oz i r ga ch a   bi z   fa qat
fo yd al an ga nm i z   pu b l i c (s i n f   a' zo la ri ga   si nf   t ash qa ri si dan   k i ri sh   mu mk i n )
va   pr iv a t e   (a 'z ol ar ga   f aq at   si nf   i ch i d a   k i r i sh   mu mk i n ).   Uch i n ch i
spe t si f i k at o rg a     pr ot ec ted   o' x sh ash   pr iv a t e ,   am mo   u ng a   m er o s   q il i b
ol i n ga n   k las sd a   k i r i sh  m umk i n   :
# include   <iostream>
using   namespace  std;
class  Employee  {
    protected :    // Protected access specifier
        int  salary;
};
class  Programmer:  public  Employee {
    public :
        int  bonus;
        void   setSalary ( int  s) {
            salary = s;
    }
        int   getSalary () {
            return  salary;
      }
};
int   main () {
    Programmer myObj;
    myObj. setSalary ( 50000 );
    myObj.bonus =  15000 ;
    cout <<  "Salary: "  << myObj. getSalary () <<  "\n" ;
    cout <<  "Bonus: "  << myObj.bonus <<  "\n" ;
    return   0 ;
}
Salary: 50000
Bonus: 15000 C + +   Po l i m o r f i z m .   ( S i n f / C l a s s )
P ol i m or fi zm   b u   "k o' p   sh ak l lar "   de g an   ma' no ni   an gl at a di .
Bi z   Me r o s   or qa li   bi r- b i r i   bi la n   bo g' li q   bo 'l ga n   k o 'p lab   si nf lar ga   e g a
bo 'l ga ni mi z da   pay do   bo 'l adi .   Pol im or f iz m   t u rl i   x i l   vaz i fa lar ni   bi t t a
h ar ak at da  t u rl i   yo 'l la rn i  ba j ar i s h i mi z  i mk o ni ya t i g a  e g a b o' la mi z .
Oby e k t ga   abst rak t   dar aj ada   qa ra sh   x us us i y at i .   M asa la n,   t ur li   x i l   o yn al ar
mavj ud :   de ra za   oy na si ,   e sh i k   o yn as i ,   mash i n a   o yn as i ,   t e l e fo n   o yn as i .
Bu la rn i n g   ba rc h as i   bi r   bi ri da n  i sh lat i li sh   soh asi ,   t u zu li sh i ,   sh ak l i   bi l an   far q
qi lad i .   L e k i n   bar ch asi ni   um um i y   q i li b   oy na   de b   q ar ash   mu mk i n .
P ol i m or fi zm   t u rl i   x i l   ob ye k t la r   bi l an   bi r   x i l   u ni fo rm ad a   i sh la sh
i mk o ni ya t i n i   be r ad i .
P ol i m or fi zm   o rq al i   bi r   j ar ay on ni   t ur li   yo 'l la r   bi l an   t ash k i lla sh t i ri sh i m i z
mu mk i n.   P oli mo rf i z m   so 'z i   y un on ch a   i k k i   so 'z ni ng   bi ri k mas i da n   t as h k i l
t op ga n   « po ly »   —   Ko 'p   va   « mo rp h s»   —   fo rm al ar .   P o li m or fi zm   h am   ko ' p
f o r mal ar   de g an  m a' no ni  a ng lat a di .
Am a l iy  q is m .
1 - t ops h i r i q .
1 4- ma sal a.   Shape   (Shakllar)   va   Triangle,   Rectangle,   Circle   sinflari   hosil   qiling.
Avlod   sinflar   ajdod   sinfidan   meros   olgan   olgan   holda   qo’shimcha   metodlar   hosil
qiling.
#include <iostream> 
#include <math.h> using  namespace std; class 
Shape 
{ protected: 
double m_a, m_b, m_c; public: 
Shape(double a = 0, double b = 0 ,double c = 0) 
{     m_a = a;
m_b = b;     
m_c = c; 
} 
virtual double area() 
{ return 
0; 
} }; 
class Triangle: public Shape 
{ public: 
Triangle(double a = 0, double b = 0, double c = 0) : Shape(a, b, c) 
{ }; 
double area() 
{ 
 if((m_a+m_b>m_c) && (m_c+m_b>m_a) && (m_a+m_c>m_b)) 
 {double p = (m_a + m_b + m_c)/2; 
 
return (sqrt(p*(p-m_a)*(p-m_b)*(p-m_c)));} else 
return 0; 
} 
double ich_radius() 
{ 
    double p = (m_a + m_b + m_c)/2;     return 
(sqrt(p*(p-m_a)*(p-m_b)*(p-m_c))/p); } }; 
class Rectangle : public Shape 
{ public: 
Rectangle(double a = 0, double b = 0) : Shape(a, b, 0) 
{ }; double 
area() { 
return(m_a*m_b); 
} 
double i_aylana() 
{    return (m_a*m_b)/(2*(m_a+m_b)); 
} }; 
class Circle : public Shape  { public: 
Circle(double a = 0) : Shape(a, 0, 0) {}; double 
area() 
{ 
return M_PI*m_a*m_a; 
} double 
radius() 
{ 
    return m_a;} 
 
}; int main() 
{     double 
a,b,c,d,e,f; Shape 
*shakl[3]; 
cout<<"Uchburchak tomonlarini kiriting: \n"; cin>>a>>b>>c; 
cout<<"Turtburchak tomonlarini kiriting: \n"; cin>>d>>e; 
cout<<"Aylana radiusini kiriting: \n"; cin>>f; 
Triangle uchburchak(a, b, c); 
Rectangle tugriTurtbuchak(d, e); 
Circle doira(f); 
shakl[0] = &uchburchak; 
shakl[1] = &tugriTurtbuchak; shakl[2] = &doira; 
cout<<"Uchburchak yuzasi:"<< shakl[0]->area()<<endl; 
cout<<"To'g'ri tortburchak yuzasi:"<< shakl[1]->area()<<endl; 
cout<<"Doira yuzasi:"<< shakl[2]->area()<<endl; 
cout<<"Uchburchakka  ichki  chizilgan  aylana 
"<<uchburchak.ich_radius()<<endl; double
r=tugriTurtbuchak.i_aylana(); double 
h=doira.radius();  radius: 
cout<<"Turtburchakka  ichki  chizilgan  aylana 
"<<tugriTurtbuchak.i_aylana()<<endl; if
(r==h){ 
    cout<<"Aylana turtburchakka ichki chizilgan bo'ladi";} else 
{cout<<"Aylana turtburchakka ichki chizilgan bo'lmaydi";} 
return 0; 
}  radiusi:
Dastur natijasi :    
 
2- t op sh i ri q .
3 2- ma sal a . Hotel   (Mehmonxona)   ajdod   sinfini   hosil   qiling.   Uning   nomi,   manzili,
rahbari kabi xossalari mavjud bo’lsin. RegistanPlaza avlod sinfida mehmonxona yillik
daromadini aniqlash metodini hosil qiling.
#include <iostream> 
 using namespace std; 
class Hotel 
{ protected: 
    string m_name, m_address, m_leader;     
double m_daromad; 
    double m_soliq, m_maosh, m_boshqa; 
public: 
    Hotel(string name="", string address="", 
string leader="",
int daromad=0,
int soliq=0,
int maosh=0,
int boshqa=0) 
    { 
        m_name = name;         
m_address = address;         
m_leader = leader;         
m_daromad = daromad;         
m_soliq = soliq;         m_maosh =
maosh; 
        m_boshqa = boshqa; 
 } 
   /* virtual double yil_daromad()      { 
        return 0; 
    }*/ 
}; 
class RegistanPlaza: public Hotel 
{ public: 
        RegistanPlaza(string   name="",   string   address="",   string   leader="",int
daromad=0,int   soliq=0,int   maosh=0,int   boshqa=0):Hotel(name,   address,
leader,daromad,soliq,maosh,   boshqa){};           string   getName(){return   m_name;}
string getAddress(){return m_address;}       string getLeader(){return m_leader;} 
 
    double yil_daromad() 
    { 
       double s = m_daromad * (m_soliq/100),
 o = m_daromad * (m_maosh/100), 
b = m_daromad * (m_boshqa/100); 
       return m_daromad-s-o-b; 
    }     }
; 
int main() 
{ 
   string nomi, manzili, egasi;   
 double daromadi, soliq, oylik, boshqa; 
   cout<<"Mehmonxona nomi: "; getline(cin,nomi);  
  cout<<endl; 
    cout<<"Mehmonxona manzili: "; getline(cin,manzili); 
   cout<<endl; 
    cout<<"Mehmonxona egasi: "; getline(cin,egasi);   
 cout<<endl; 
   cout<<"Mehmonxona daromadi(dollarda): "; cin>>daromadi;    
cout<<endl; 
   cout<<"Soliq stavkasini kiriting: "; cin>>soliq;   
 cout<<endl; 
   cout<<"Daromadning necha foizi oylik berishga sarflanayotganini kiriting: "; 
cin>>oylik;   
 cout<<endl; 
     cout<<"Daromadning necha foizi boshqa xarajatlarga sarflanayotganini kiriting: ";
cin>>boshqa;   
 cout<<endl;   
  Hotel hostel;     RegistanPlaza hostel1(nomi,manzili,egasi,daromadi,soliq,oylik,boshqa);    
cout<<hostel1.getName()<<"  mehmonxonasi  "<<hostel1.getAddress()<<"da 
joylashgan."<<endl;  
  cout<<"Uning rahbari: "<<hostel1.getLeader()<<endl;    cout<<"Yillik sof foydasi: 
"<<hostel1.yil_daromad()<<" $";    
 return 0; 
}   
    Dastur natijasi: 
 
3-topshiriq.
66-masala . FootballClub (Futbol klubi) nomli sinf  hosil qiling. Jamoa o’yinchilarining
oylik maoshlari, yoshlari, gollari soni ma’lum. Jamoaning o’rtacha maoshini, o’rtacha
yoshini, o’rtacha gollari sonini aniqlash metodini hosil qiling. “Gollari soni eng yuqori
bo’lgan sportchi, eng ko’p maosh oladimi yoki yo’qmi”, aniqlash metodini hosil qiling.
Sinf shablonidan foydalaning.
#include <bits/stdc++.h>
 using namespace std; 
template <typename T> class 
FootballClub 
{     vector <T> m_salary;    
vector <T> m_age;     
vector <T> m_goal;      vector <int> ::iterator a; 
public: 
    FootballClub( vector <T> age, vector <T> goal, vector <T> salary) 
    { 
        m_salary = salary;         
m_age = age; 
        m_goal = goal; 
    } 
    T getIndex(vector<T> v, T K) 
{ 
    auto it = find(v.begin(), v.end(), K); 
    if (it != v.end()) 
    { 
        T index = it - v.begin();         
return index; 
    }     else {       
return -1; 
    } 
} 
    T av_goal() 
    { 
        T s=0, n=0; 
        for(a=m_goal.begin();a!=m_goal.end();a++) 
            {               
  s += *a;                 
n++;             } 
            return s/n; 
    } 
    T av_salary() 
    { 
        T s=0, n=0; 
        for(a=m_salary.begin();a!=m_salary.end();a++) 
            
{                 s+= *a;  
n++;             } 
            return s/n; 
    } 
    T av_age() 
    { 
        T s=0, n=0;          for(a=m_age.begin();a!=m_age.end();a++) 
            
{                 s+= *a;  
n++;             } 
           return s/n; 
    } 
    void katta_maosh() 
    { 
        T s1=0, n1=0,mx1=0; 
        for(a=m_goal.begin();a!=m_goal.end();a++) 
            { 
         if(*a>mx1)                  
mx1 = *a;   
  s1 += *a;                
 n1++; 
            } 
        T s2=0, n2=0,mx2=0; 
        for(a=m_salary.begin();a!=m_salary.end();a++) 
            { 
        if(*a>mx2)                 
mx2=*a;                
 s2 += *a;               
  n2++; 
            } 
        if(getIndex(m_goal,mx1)== getIndex(m_salary,mx2)) 
            cout<<"Gollari soni eng yuqori bo`lgan sportchi, eng ko`p maosh oladi \n";         
else 
            cout<<"Gollari soni eng yuqori bo`lgan sportchi, eng ko`p maosh olmaydi \n"; 
    } }; 
int main() 
{   vector <int> V1;     
vector <int> V2;     
vector <int> V3;     int 
n,a,b,c; 
  cout << "Jamoa o'yinchilari sonini kiriting: \n"; 
cin >>n; 
    cout << "Jamoa o'yinchilari yoshini kiriting: \n";    
 for(int i=0; i<n; i++) 
    {   cin>>a; 
        V1.push_back(a);}      cout << "Jamoa o'yinchilari golini kiriting: \n";   
for(int i=0; i<n; i++)        
 {   cin>>b; 
        V2.push_back(b);} 
     cout << "Jamoa o'yinchilari maoshini kiriting: \n";   
for(int i=0; i<n; i++)        
{   cin>>c; 
        V3.push_back(c);} 
    FootballClub <int> club(V1,V2,V3); 
 cout<<"Jamoa o`rtacha yoshi: "<<club.av_age()<<endl;  
cout<<"Jamoa urgan o`rtacha gollar soni: "<<club.av_goal()<<endl;  
cout<<"Jamoaning o`rtacha maoshi: "<<club.av_salary()<<endl;  
club.katta_maosh();   
  return 0;} 
Dastur natijasi: 
 
 
 
4-topshiriq.
86-masala.   Navbat   sinfi   shablonini   yarating.   Bo’sh   joy   o’chirilganda   yoki   to’la
navbatga element qo’shishga urinilganda istisno generatsiya qiling.
#include <iostream> 
using namespace std; class 
Queue {    
 static const int SIZE=10;     
int *queue;     int frnt, rear;  
public :     
Queue () ;      void push ( int num ) ;     
void out();     int size();     
void pop();     int front();     
int back();   
  int getrear(){return rear;}   
int getfrnt(){return frnt;} 
} ; 
//Konstruktor 
Queue::Queue() {   queue 
= new int[SIZE];   
frnt = rear = 0 ; 
} 
//Navbat elementlarini chop etish
void Queue::out() { 
  for(int i=frnt+1;i<rear+1;i++)    
 cout<<" "<<queue[i]; 
} 
//Navbatga element qushish 
void Queue::push ( int num ) { 
    try{ 
  if ( rear+1 == frnt || ( rear + 1 ==SIZE && !frnt ))
 {     throw "Navbat tuldi" ; 
    return ;   }} 
  catch(const char*exception){ 
  cerr << "\nXatolik: " << exception; 
  }   rear++;   if ( rear==SIZE ) 
rear = 0 ;   queue [ rear ] = 
num; 
} 
// Navbatdan element uchirish 
void Queue::pop() { 
   try{   if(frnt==rear){ 
    throw " Navbatdan element o'chirib bo'lmaydi"; 
  }   } 
    catch(const char*exception) 
  { 
     cerr << "\n Xattolik : " << exception ; 
  }    frnt++;
  if ( frnt==SIZE ) frnt = 0 ; 
  }  //Navbat ulchamini aniqlash
int Queue::size() {  
 int s=0; 
  for(int i=frnt; i<rear; i++)     
s++; 
  return s; 
} 
// Navbatning oxirgi elementi 
int Queue::back() { return 
queue[rear]; } // Navbatning 
birinchi elementi int 
Queue::front() 
{ return queue[frnt+1]; }
 int main()
 {   Queue queue1; 
  int i, a, n; 
  cout<<"Navbat ulchami:"; cin>>n;   
cout<<n<<" ta element kiriting" << endl; 
  for (i = 1 ; i <= n; i++ )     {
cin>>a;      
   queue1.push (a);}   
cout<<"Navbatquyidagi<<endl; 
  queue1.out(); 
  /*cout<<endl <<"Navbatning oxirgi elementi:"<< endl;   
cout<<queue1.back(); 
  cout<<endl<<"Navbatning birinchi elementi"<<endl;  
 cout<<queue1.front();*/ 
  cout<<endl <<"Navbatdan element uchirish"; 
  queue1.pop();   //queue1.pop();   
cout<<endl <<"Qolgan elementlar"; 
  queue1.out();   
cout<<endl;   
cin.get();   
return 0; 
} 
  Dastur natijasi 1:   
Dastur natijasi 2: 
 
5-topshiriq.
102-masala.N ta element iborat ro’yxat hosil qiling. Boshlang’ich elementini o’chiring,
Oxirgi   elementini   o’chiring,   boshidan   element   qo’shing,   oxiridan   element   qo’shing,
birinchi   elementiga   murojaat   qiling,   oxirgi   elementiga   murojaat   qiling,   ko’rsatilgan
joyga element qo'shing, barcha dublikatlarni o’chiring.
#include <iostream> 
#include <list>
 #include <iterator> 
using namespace std; 
class List { 
    list <int> lst;    
 int m_size;    
 list<int>:: iterator b; 
public: 
    List(list <int> lst1, int a) 
    {         lst=lst1;  
m_size = a; 
    } 
    List()     {     
lst={0};          m_size=0; 
    } 
    void remove_back() 
    { 
        lst.pop_back(); 
    } 
     void remove_front() 
    { 
        lst.pop_front(); 
    } 
    void add_back(int c) 
    { 
        lst.push_back(c); 
    } 
     void add_front(int c) 
    { 
        lst.push_front(c); 
    } 
    void get_unique() 
    { 
        lst.unique(); 
    } 
    void print() 
    { 
        for(b=lst.begin(); b!=lst.end();  b++) 
cout<<*b<<" ";         
cout<<endl; 
    } 
    int get_front() 
    { 
        return lst.front(); 
    } 
     int get_back() 
    { 
       return lst.back(); 
    } }; int 
main() 
{     int 
n,c,b; 
    cout<<"Elementlar sonini kiriting: n="; cin>>n;      list <int> lst1; 
    cout<<"Ro`yxat elementlarini kiriting:"<<endl;     
List object1(lst1,n); 
    for(int i=0; i<n; i++) 
    {         cin>>c;         
object1.add_front(c); 
    } 
    cout<<"Ro`yxatning elementlari: "<<endl;     
object1.print(); 
    cout<<"Ro`yxatdan dublikat  elementlar o`chirildi!"<<endl;   
object1.get_unique();    
 object1.remove_back();     
object1.remove_front(); 
    cout<<"Ro`yxatning boshlang`ich va oxirgi elementi o`chirildi \nYangi ro`yxat: \n";   
object1.print(); 
    cout<<"Ro`yxatning oxiriga element qo`shish uchun son kiriting: b="; 
    cin>>b;     
object1.add_back(b);     
cout<<endl;     object1.print(); 
        cout<<"Ro`yxatning   boshlang`ich   elementi:   "<<object1.get_front()<<endl;
cout<<"Ro`yxatning oxirgi elementi: "<<object1.get_back()<<endl; } 
Dastur natijasi: 
 
                                                                Xulosa                      Men 203-guruh talabasi   Salimova Dilyora     tayorlagan mustaqil ish davomida
obyektga yo’naltirilgan dasturlash haqida juda ko’p ma’lumotga ega bo’ldim va shuni
xulosa   qildmki,   dasturlashdagi   obyekt(bundan   keyin   oddiygina   obyekt   deb   ketiladi)
ham   haqiqiy   hayotdagi   obyektlarga   o'xshash:   Ular   ham   qandaydir   hususiyatlar   va
bajaradigan   funktsiyalardan   iborat   bo'ladi.   Obyektning   hususiyatlari   har   xil
dasturiy   o'zgaruvchilardan   iborat   bo'ladi   va   ularning   o'zgartirish   uchun
qandaydir   funktsiyalar   bajariladi.   Bunday   funktsiyalar   bilan   o'zgaruvchilarning
holatini   berkitish  mumkin  ya'ni  aynan  o'sha o'zgaruvchini   tashqaridan  o'zgartirish
uchun   albatta   maxsus   funktsiyadan   foydalanish   kerak   bo'ladi.   Bu   jarayon
" Enkapsulatsiya "   deb   atalib,   OYDning   eng   muxim   tushunchalaradian   biridir.   Hech
e'tibor   berganmisiz   dorilarda   ham   shu   termin   ishalitladi   ya'ni   kapsula(ustidan
maxsus   modda   bilan   o'ralgan   dorilar),   buni   misolni   Enkapsulatsiya   jarayoni   esda
yaxshi qolishi va tushunarli bo'lishi uchun keltirdim.  
        Uning   o'zgaruvchilari(   hozirgi   tezligi,   qolgan   benzini,   va   h.k)   va   uning
funktsiyalari(to'xtatish,   tezlikni   oshirish,   rulni   burish,   va   h.k.).   Bu   yerda   uning
bakidagi benzini yurishi tufayli kamayib boradi demak uning qiymatining o'zgarishi
0dan   bakning   sig'imigacha   bo'ladi,   yoki   uning   tezligi   ham   shu   kabi   aynan   qaysidir
funktsiyalarning   amalga   oshirilishi   orqali   u   ham   0   dan   maksimal   tezligigacha
o'zgarishi   mumkin.   Bulardan   tashqari   mashinaning   ba'zi   hususiyatlari   borki   ular
o'zgarmasligi mumkin, masalan, rangi.
                  Demak,   ko'rinib   turiptiki   mashina   ham   o'z   navbatida   bir   necha   mayda
obyeklardan   iborat   bo'ladi.   Bir   daqiqaga   to'xtang   va   hozirda   atrofingizdagi   biror
narsalarni   analiz   qiling.   Har   bir   obyekt   uchun   o'zingizdan   so'rang:   "Bu   obyektning
qanday   hususiyatlari   bor?"   ,   "Qanday   vazifalarni   bajaradi?"   kabi.   Va   kuzatish
natijalaringizni   yozib   oling,   sezgan   bo'lsangiz   tuziladigan   ro'yxat   obyektning
murakkabligiga qarab ko'payib boradi. Kompyuter indikatorining 2 ta   hususiyati   bor
o'chiq   va   yoniq;   funktsiyalari   esa   yonish   va   o'chish.   Bu   barcha   kuzatishlar   OYD
dunyosiga o'tkazish mumkin.
         Ob ye k t g a y o' na lt i r i l ga n  da st u rl as h  -  b u  bi ro n  bi r  ma qsa dg a 
yo 'n al t i ri lg an  da st u rl as h   de g an  m a' no ni  a ng lat a di .   P r ot s e du ra vi y  
dast ur la sh  -  b u  ma' lu mo t l ar ga   i sh l ov  be ra di g an  p ro t s e du ra la r   yo k i  
fu nk t si y al ar ni  y oz i s h ,   ob 'e k t ga  y o' na lt i r i l ga n  dast ur la sh  e s a m a' lu mo t  v a 
fu nk t si y al ar ni  o 'z   i ch i ga  ol ga n  o b'e k t la rn i   ya ra t i sh  h a qi da.
                           Foydalanilgan a dabiyotlar 1. Gradi Buch. Obektno –oriyentirovannoy analiz i  proyektirovaniye s 
primerami prilojeniy na S++.  Nevskiy dialekt, 560 str, 2001 g. 
2. Grexem I. Obektno oriyentirovann ы ye metod ы . Prinsip ы  i praktika. 
Vilyams. 879 str, 2004 g.
3. Ivanova G.S. Obektno oriyentirovannoye programmirovaniye. Uchebnik. 
MGTU im Baumana. 320 str, 2003 g.
4. Fauler M., Skott K. UML v kratkom izlojenii. Primeneniye standartnogo 
yaz ы ka obektnogo modelirovaniya.  M., Mir, 1999.
5. Buch G., Rambo D., Djekobson A. Yaz ы k UML: rukovodstvo polzovatelya.
M., DMK, 2000. 
6. Pol Ayra. Obektno-oriyentirovannoye programmirovaniye na S++.  Vtoroye
izdaniye.    M.: Binom, 1999.
7. Podbelskiy V.V. Yaz ы k S++    M.: Finans ы  i statistika, 1996.
8. Straustrup B. Yaz ы k programmirovaniya S++.  Trete izdaniye, M.: Binom, 
1999.
9. Liberti D. Osvoy samostoyatelno S++: 10 minut na urok. Per s angl. 
Vilyams, 374 str,2004 g.
10. Shmidskiy Ya.K. Prorammirovaniye na yaz ы ke S++: Samouchitel. 
Uchebnoye posobiye. Dialektika. 361 str, 2004 g.
11. Krupnik A.B. Izuchayem S++.  Piter. 251 str, 2003 g.
12. Meyers S. Naiboleye yeffektivnoye ispolzovaniye S++. 35 nov ы x 
rekomendasiy.  DMK-Press, 304 str, 2000 g.
13. Feyson T. Obektno-oriyentirovannoye programmirovaniye na S++ 4.5.    
Kiyev: Dialektika, 1996.
14.  Shildt G. Samouchitel S++. Vtoroye izdaniye.     SPb.: BHV, 1998.

Mavzu: Obyektga yo'naltirilgan dasturlash . C++ OOP. Reja: 1.Kirish. 2. C ++ OOP nima? (Object Oriented Programming = OOP) 3. C++ sinflar va ob’ektlar 4. C++ Method (Sinf/Class) 5. C++ Enkapsulatsiya. 6. C++ Polimorfizm. 7. C++ Merosxurlik 9.Xulosa. 10.Foydalanilgan adabiyotlar. KIRISH

Obyekt   nima? Obyekt Obyektga yo'naltirilgan dasturlash(OYD) texnologiyasining eng asosiy kalit tushunchasidir. Atrofga qarang, haqiqiy hayotdagi bir necha obyektlarni ko'rishingiz mumkin: stol, uy, it, mushuk, televizor va h.k. Ularning barchasining albatta hususiyatlari va bajaradigan vazifalari (funktsiyalari) bor. Masalan, Mushuk hususiyatlari: rangi, qorni to'qligi, yoshi, jinsi; funktsiyalari: ovqat yeyishi, myovlashi, yurishi, sichqon tutishi. Mashina, hususiyatlari: tezligi, rangi, nomi, narxi; funktsiyalari: yurishi, to'xtashi, oyna artgichlarining ishlashi, eshiklarning ochilib yopilishi v.h.k. Bir daqiqaga to'xtang va hozirda atrofingizdagi biror narsalarni analiz qiling. Har bir obyekt uchun o'zingizdan so'rang: "Bu obyektning qanday hususiyatlari bor?" , "Qanday vazifalarni bajaradi?" kabi. Va kuzatish natijalaringizni yozib oling, sezgan bo'lsangiz tuziladigan ro'yxat obyektning murakkabligiga qarab ko'payib boradi. Kompyuter indikatorining 2 ta   hususiyati   bor o'chiq va yoniq;   funktsiyalari   esa yonish va o'chish. Bu barcha kuzatishlar OYD dunyosiga o'tkazish mumkin. Dasturlashdagi obyekt(bundan keyin oddiygina   obyekt   deb ketiladi) ham haqiqiy hayotdagi obyektlarga o'xshash: Ular ham qandaydir hususiyatlar va bajaradigan funktsiyalardan iborat bo'ladi. Obyektning hususiyatlari har xil dasturiy   o'zgaruvchilardan   iborat bo'ladi va ularning o'zgartirish uchun qandaydir   funktsiyalar   bajariladi. Bunday   funktsiyalar   bilan o'zgaruvchilarning holatini berkitish mumkin ya'ni aynan o'sha o'zgaruvchini tashqaridan o'zgartirish uchun albatta maxsus funktsiyadan foydalanish kerak bo'ladi. Bu jarayon " Enkapsulatsiya " deb atalib, OYDning eng muxim tushunchalaradian biridir. Hech e'tibor berganmisiz dorilarda ham shu termin ishalitladi ya'ni kapsula(ustidan maxsus modda bilan o'ralgan dorilar), buni misolni   Enkapsulatsiya   jarayoni esda yaxshi qolishi va tushunarli bo'lishi uchun keltirdim. Mashinani tasavvur qiling, Uni dasturlash obyekit sifatida modellashtiramiz: Uning o'zgaruvchilari( hozirgi tezligi, qolgan benzini, va h.k) va uning funktsiyalari(to'xtatish, tezlikni oshirish, rulni burish, va h.k.). Bu yerda uning bakidagi benzini yurishi tufayli kamayib boradi demak uning qiymatining o'zgarishi 0dan bakning sig'imigacha bo'ladi, yoki uning tezligi ham shu kabi aynan qaysidir funktsiyalarning amalga oshirilishi orqali u ham 0 dan maksimal tezligigacha o'zgarishi mumkin. Mavzu : Obyektga yo'na ltirilgan dasturlash . C++ OOP C ++ OOP nima? (Object Oriented Programming = OOP)

OOP (O bj e ct O ri e nt e d P r og ra mm i n g - Oby e k t ga y o' na lt i r i l ga n dast ur la sh ) - bu bi ro n bi r ma qs ad ga y o' na lt i ri lg an dast ur la sh de ga n ma' no ni a ng lat adi . P r ot s e du ra vi y da st u rl as h - b u ma' lu mo t la rg a i sh l ov be r ad i g an pr ot se d ur al ar y ok i f unk t si ya la rn i y oz i s h , o b' e k t g a yo 'n al t i ri lg an da st u rl as h e sa ma 'l um ot va f unk t si ya la rn i o' z i ch i ga o lg an o b' e k t l ar ni y ar at i sh h aq i da . Ob' e k t g a y o' na lt i r i l ga n da st u rl as h p ro t se ss ua l da st u rl as h d an b i r qat or afz al li k l ar ga e ga :  O O P t e z r o q v a b a j a r i l i s h i o s o n r o q  O O P d a s t u r l a r n i n g a n i q t u z i l i s h i n i t a ' m i n l a y d i  O O P C + + k o d i n i D R Y " D o n ' t R e p e a t Y o u r s e l f " s a q l a s h g a y o r d a m b e r a d i v a k o d n i s a q l a s h , o ' z g a r t i r i s h v a d i s k r a s k a d r o v k a q i l i s h n i o s o n l a s h t i r a d i .  O O P k o d n i k a m v a i s h l a b c h i q a r i s h v a q t i n i q i s q a r t i r g a n h o l d a t o ' l i q q a y t a i s h l a t i l a d i g a n i l o v a l a r n i y a r a t i s h g a i m k o n b e r a d i . C + + - b u o b' e k t g a y o' na lt i r i l ga n da st u rl as h t i l i . C + + d ast u rl as h t i li da h amm a nar sa u ni ng x u su si ya t la ri v a u su ll ar i bi la n bi r q at o rd a si nf lla r va ob ye k t la r bi lan b og 'l i q . Sinf   - bu bizning dasturimizda foydalanishimiz mumkin bo'lgan foydalanuvchi belgilaydigan ma'lumot turi va u ob'ekt tuzuvchisi yoki ob'ektlarni yaratish uchun "reja" sifatida ishlaydi. Sinf yarating. Si nf ya ra t i s h uc h u n   cl a s s   k ali t so 'z dan   fo yd al an i n g. "   My Cl a ss "   No mli si n f ya ra t a mi z . class MyClass {       // class   public :             // ochiqlik siyosati     int myNum;         // Attribute (int tipiga tegishli)     string myString;   // Attribute (string tipiga tegishli) }; Misolni tushuntirish.  c l a s s   K a l i t s o ' z   M y C l a s s   d e b a t a l g a n b i r s i n f y a r a t i s h u c h u n i s h l a t i l a d i   .  p u b l i c K a l i t s o ' z b i r b o ' l i b   k i r i s h b e l g i s i   i f o d a l a y d i . B u d e g a n i c l a s s d a n t a s h q a r i d a h a m a t t r i b u t l a r d a n f o y d a l a n i s h m u m k i n   .

 S i n f i c h i d a b u t u n s o n   m y N u m   v a s a t r o ' z g a r u v c h i s i m a v j u d   m y S t r i n g .   O ' z g a r u v c h i l a r s i n f i c h i d a e ' l o n q i l i n g a n i d a , u l a r   a t r i b u t l a r   d e b n o m l a n a d i   .  N i h o y a t , s i n f t a ' r i f i n i n u q t a - v e r g u l b i l a n t u g a t i n g   ; . Ob'ektni yaratish. C + + d ast ur la sh t i li da bi z si nf y ar at di k ,   My Cl a ss   no ml i c las s ya ra t di k , sh u ni ng u ch un bu nd an fo yd al an i b o by e k t y ar at ami z. O b' e k t ni ya ra t i s h uc h u n   My Cl a ss si n f no mi ni , so 'n gr a ob 'e k t no mi ni k o' rs at i n g. # include <iostream> # include <string> using namespace std; class MyClass {       public :                 int myNum;             string myString;   }; int main () {   MyClass myObj;   myObj.myNum = 15 ;   myObj.myString = "Some text" ;   cout << myObj.myNum << "\n" ;   cout << myObj.myString;   return 0 ; } 15 Some text Bir nechta ob'ektlar. Si z bi t t a si nf ni n g bi r ne ch t a ob 'e k t la ri ni ya ra t i sh i n gi z mu mk i n: Me t h od si n fg a t e gi s h li fu nk s i y al ar di r. Si nf ga t e gi sh l i fu nk si y al ar ni ani ql ash u ch un i k k i y o' l m avj ud .  I c h k i s i n f t a ' r i f i

 S i n f d a n t a s h q a r i t a ' r i f Si nf t ash qa ri da f un k si ya ni ani ql ash uc h u n s i nf i ch i da e 'l on qi li sh k e r ak va k e yi n u ni si n fd an t a sh q ar i d a e ' lo n q i li sh k e rak .   ::   si n f n om i ni k o' rs at i sh uc h u n i sh lat i lad i . # include <iostream> using namespace std; class MyClass {           public :                   void myMethod ();     }; void MyClass::myMethod () {   cout << "Hello World!" ; } int main () {   MyClass myObj;       myObj. myMethod ();   return 0 ; } Hello World! Parametrlar. Si z sh u ni ng de k pa ra me t rl ar ni q o' sh i sh i ng i z m umk i n : # include <iostream> using namespace std;