logo

Programmalash asoslari lab2

Yuklangan vaqt:

08.08.2023

Ko'chirishlar soni:

0

Hajmi:

1388.52734375 KB
Samarqand davlat unversetiti
Raqamli texnalogiyalar fakulteti
Amaliy matematika yo’nalishi kechki
ta’lim talabasi 
Programmalash asoslari fanidan tayyorlagan
Laboratoriya ishlari jamlanmasi
Tekshirdi : Ximmatov I.
Samarqand 2021-y  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
 20  1.   Telefon nomli sinf yarating. Tarkibida ikki xil konstruktor bo’lsin .

// 1-topshiriq 20-misol.  
//1-topshiriq, 20-masala.
#include <iostream>
using namespace std;
class Telefon{
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 main()
{
    
    return 0;}  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   20 .   Kafedra nomli sinf yarating. Tarkibida uchta metod, uchta xossa bo’lsin. Kafedra nomini 
getKafedra() metodi orqali jo’nating.

// 2-topshiriq 20-misol
//  2-topshiriq 20-misol.
#include <iostream>
using namespace std;
class Kafedra{
    string m_name;
    int m_teacher;
    string m_manager;
Kafedra(string name, string manager, int teacher){
    m_name=name;
    m_manager=manager;
    m_teacher=teacher;
}
string getKafedra(){
    return m_name;
}
string getManager(){
    return m_manager;
}
int getTeacher(){
    return m_teacher;
}
};
int main()
{
  
    return 0;
}    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
/ /    3-topshiriq 20- misol.
#include <iostream>
using namespace std;
class Shahar {
string m_nom;
string m_hokim;
int m_aholi;
public :
    Shahar(){
    }
    Shahar(string a, string b, int aholi)
    {
        m_nom = a;
        m_hokim = b;
        m_aholi=aholi;
    }
    string getSh(){
    return m_nom;
    }
    string getH(){
    return m_hokim;
    }
    int getAholi(){
    return m_aholi;
    }
~Shahar(){
}
};
int main()
{
    return 0;
}
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
//  4-topshiriq 20-misol.
#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;
}
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
 5.  O’qituvchining nafaqa daftarchasida qayd etilgan dastlabki summa 1000 
so’m. 30 yil ishlagan o’qituvchi qancha miqdordagi pensiya bilan nafaqaga 
chiqadi. (Eslatma: jamg’arib boriladigan pensiya miqdori 1%) .
//  5-topshiriq 20-misol.
#include <iostream>
using namespace std;
class Nafaqa{
private:
string m_name;
public:
    Nafaqa(){
    m_name="none";
    }
    Nafaqa(string name){
    m_name=name;
    }
    double getPul(){
    double s=1000;
    for(int i=0; i<36; i++){
        s=s*1.01;      }
    return s;
    }
};
int main()
{
    Nafaqa A("Kimdir");
    cout<<A.getPul()<<" so'm";
    return 0;
}  
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
6.Talaba nomli sinf e’lon qilib, uning nechanchi kursda o’qishini aniqlash 
metodini yozing
// 6-laboratoriya 2-misol
#include<iostream>
using namespace std;
class Student{
   string m_name;
   string m_direction;
   int m_group;
   public:
       Student(){
       m_name="";         m_direction="";
       m_group=0;
       }
       Student(string name, string direction, int group){
       m_name=name;
       m_direction=direction;
       m_group=group;
       }
    string getName(){
    return m_name;
    }
    string getDir(){
    return m_direction;
    }
    int getGroup(){
    return m_group;
    }
   int getCourse(){
    return m_group/100;
    }
};
int main(){
    string name, dir;
    int group;
    cout<<"Talaba ismi: ";getline(cin, name);
    cout<<"Yo'nalisi: ";getline(cin, dir);
    cout<<"Guruhi: " ;cin>> group;
    Student A(name, dir, group);
    cout<<"Talaba "<<A.getName()<<" "<<A.getDir();
    cout<<" yo'nalishning "<<A.getGroup()<<"-guruhida o'qiydi.";
    cout<<endl<<"U "<<A.getCourse()<<"-kurs."<<endl;
    getline(cin, name);
    getline(cin, dir);
    cin>> group;
    Student B(name, dir, group);
    cout<<"Talaba "<<B.getName()<<" "<<B.getDir();
    cout<<" yo'nalishning "<<B.getGroup()<<"-guruhida o'qiydi.";
    cout<<endl<<"U "<<B.getCourse()<<"-kurs.";
return 0;
}
   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
 7.   Dekanat nomli sinf yarating. Tarkibida getterlar va setterlar hosil qiling    // 7-laboratoriya 2-misol
#include <iostream>
using namespace std;
class Dekanat{
    string m_name;
    int m_students;
public:
    Dekanat(string name, int students){
    m_name=name;
    m_students=students;
    }
    void setInfo(string name, int students){
    m_name=name;
    m_students=students;
    }
    void setName(string name){
    m_name=name;
    }
    string getName(){
    return m_name;
    }
};
int main()
{
    Dekanat A("Amaliy Matematika", 1200);
    A.setName("Raqamli Texnologiya");
    cout<<A.getName();
    return 0;
}
                                                                     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:  8 -Topshiriq
 8.  Futbol komandasi nomli sinf yarating. Tarkibida metodlar hosil qiling. Sinfga
oid obyektlar yarating va initsializatsiyalashtiring .
 
//  8-topshiriq 20- misol.
#include <iostream>
using namespace std;
class FK{
    string m_name;
    string m_coach;
    int m_pts;
    public:
    FK(){
    m_name="";
    m_coach="";
    m_pts=0;
    }
    FK(string name, string coach, int pts){
    m_name=name;
    m_coach=coach;
    m_pts=pts;
    }      void getgol(){
    if(m_pts>29)
        cout<<"Legaga utdi!";
    else
        cout<<"O'tolmaadi!";
    }
    void setter(string name){
    m_coach= name;
    cout<<m_name<<" komandasi murabboyi endi 
"<<m_coach;
    }
    ~FK(){
    }
};
int main()
{
    string name;
    cout<<"Yanngi murabbiy: ";cin>>name;
    FK A("Just Play", "Kamina", 64545485548510);
    A.setter(name);
    return 0;
}  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.  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. Жасмин Бланшет, Марк Саммерфилд 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 с.

Samarqand davlat unversetiti Raqamli texnalogiyalar fakulteti Amaliy matematika yo’nalishi kechki ta’lim talabasi Programmalash asoslari fanidan tayyorlagan Laboratoriya ishlari jamlanmasi Tekshirdi : Ximmatov I. Samarqand 2021-y

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  20 1. Telefon nomli sinf yarating. Tarkibida ikki xil konstruktor bo’lsin .  // 1-topshiriq 20-misol. //1-topshiriq, 20-masala. #include <iostream> using namespace std; class Telefon{ 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 main() { return 0;}

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