Programmalash asoslari lab2
![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](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_1.png)
![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 .](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_2.png)
![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!](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_3.png)
![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;}](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_4.png)
![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](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_5.png)
![ 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;
}](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_6.png)
![](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_7.png)
![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
/ /](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_8.png)
![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;](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_9.png)
![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;
}](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_10.png)
![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? }](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_11.png)
![](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_12.png)
![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;](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_13.png)
![}
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:](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_14.png)
![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="";](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_15.png)
![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;
}](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_16.png)
![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](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_17.png)
![// 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;
}](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_18.png)
![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:](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_19.png)
![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;
}](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_20.png)
![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;
}](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_21.png)
![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.](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_22.png)
![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 с.](/data/documents/88f247e5-b53b-4737-b9eb-b41d6822dd01/page_23.png)
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