14. Class va Object¶
C++ dasturlash tilining eng muhim xususiyatlaridan biri — obyektga yo‘naltirilgan dasturlash.
Bu mavzuda class va object tushunchalarini o‘rganamiz.
Avvaliga bu tushunchalar biroz qiyin ko‘rinishi mumkin, lekin ularni oddiy misol bilan tushunish oson.
Class nima?¶
class — obyekt yaratish uchun qolip yoki reja.
Masalan, mashina haqida o‘ylaylik.
Mashinaning:
rangi
modeli
tezligi
kabi xususiyatlari bo‘lishi mumkin.
Biz class yordamida shu xususiyatlarni tasvirlab beramiz.
Oddiy class¶
Masalan:
class Mashina {
public:
string rang;
string model;
int tezlik;
};
Bu yerda Mashina nomli class yaratildi.
Uning ichida:
rang
model
tezlik
bor.
Object nima?¶
class dan yaratilgan o‘zgaruvchi object deyiladi.
Masalan:
Mashina mashina1;
Bu yerda:
Mashina
class.
mashina1
esa object.
Objectga qiymat berish¶
Masalan:
mashina1.rang = "Qizil";
mashina1.model = "BMW";
mashina1.tezlik = 200;
Keyin:
cout << mashina1.rang << endl;
cout << mashina1.model << endl;
cout << mashina1.tezlik;
Natija:
Qizil
BMW
200
To‘liq misol¶
#include <iostream>
#include <string>
using namespace std;
class Mashina {
public:
string rang;
string model;
int tezlik;
};
int main() {
Mashina mashina1;
mashina1.rang = "Qizil";
mashina1.model = "BMW";
mashina1.tezlik = 200;
cout << "Rang: " << mashina1.rang << endl;
cout << "Model: " << mashina1.model << endl;
cout << "Tezlik: " << mashina1.tezlik;
return 0;
}
Bir nechta object¶
Bitta classdan bir nechta object yaratish mumkin.
Masalan:
Mashina mashina1;
Mashina mashina2;
Har bir object o‘z ma'lumotlariga ega bo‘ladi.
mashina1.rang = "Qizil";
mashina1.model = "BMW";
mashina2.rang = "Oq";
mashina2.model = "Toyota";
Bu yerda ikkita mashina bor.
public¶
Quyidagi kodga qarang:
class Mashina {
public:
string rang;
string model;
};
public dan keyingi ma'lumotlarga class tashqarisidan murojaat qilish mumkin.
Masalan:
Mashina mashina1;
mashina1.rang = "Qizil";
Agar public bo‘lmasa, bunday murojaat qilish mumkin emas.
Class ichidagi funksiyalar¶
Class ichida funksiya ham yaratish mumkin.
Masalan:
class Mashina {
public:
string model;
void signal() {
cout << "Bip bip!";
}
};
Object orqali funksiyani chaqiramiz:
Mashina mashina1;
mashina1.signal();
Natija:
Bip bip!
Class ichidagi funksiya¶
Class ichidagi funksiya ko‘pincha method deb ataladi.
Masalan:
class Talaba {
public:
string ism;
void salomlash() {
cout << "Salom, " << ism;
}
};
Keyin:
Talaba talaba1;
talaba1.ism = "Ali";
talaba1.salomlash();
Natija:
Salom, Ali
Constructor¶
Class ichida object yaratilganda avtomatik ishlaydigan maxsus funksiya bor.
U constructor deyiladi.
Constructor class nomi bilan bir xil bo‘ladi.
Masalan:
class Talaba {
public:
string ism;
Talaba() {
cout << "Talaba yaratildi.";
}
};
Object yaratamiz:
Talaba talaba1;
Natija:
Talaba yaratildi.
Constructor orqali qiymat berish¶
Constructor parametr qabul qilishi mumkin.
Masalan:
class Talaba {
public:
string ism;
int yosh;
Talaba(string ism, int yosh) {
this->ism = ism;
this->yosh = yosh;
}
};
Endi:
Talaba talaba1("Ali", 18);
deb object yaratishimiz mumkin.
Keyin:
cout << talaba1.ism << endl;
cout << talaba1.yosh;
Natija:
Ali
18
this¶
Constructor ichidagi:
this->ism
classning o‘zidagi ism ni bildiradi.
Masalan:
Talaba(string ism, int yosh) {
this->ism = ism;
this->yosh = yosh;
}
Bu yerda chap tomondagi:
this->ism
objectning ism maydoni.
O‘ng tomondagi:
ism
esa constructor parametridir.
Hozircha this ni chuqur o‘rganish shart emas.
Classning oddiy misoli¶
Keling, bank hisobini tasavvur qilamiz.
class BankHisobi {
public:
string egasi;
double balans;
void korsat() {
cout << "Egasi: " << egasi << endl;
cout << "Balans: " << balans;
}
};
Object:
BankHisobi hisob;
hisob.egasi = "Ali";
hisob.balans = 1000;
hisob.korsat();
Natija:
Egasi: Ali
Balans: 1000
Class va struct farqi¶
struct va class bir-biriga o‘xshaydi.
Masalan:
struct Talaba {
string ism;
int yosh;
};
va:
class Talaba {
public:
string ism;
int yosh;
};
Bu yerda ikkalasi ham ma'lumotlarni bir guruhga birlashtiradi.
Asosiy farqlardan biri — class da a'zolar odatda private, struct da esa odatda public bo‘ladi.
Bu mavzuni keyingi boblarda batafsil ko‘ramiz.
Nima uchun class kerak?¶
Katta dasturlarda turli obyektlar bo‘ladi.
Masalan:
Talaba
Mashina
Kitob
BankHisobi
Telefon
Har bir obyektning o‘z:
ma'lumotlari
funksiyalari
bo‘lishi mumkin.
class bu ma'lumot va funksiyalarni bir joyga yig‘ishga yordam beradi.
Amaliy mashqlar¶
1-mashq¶
Telefon nomli class yarating.
Unda:
model
rang
narx
bo‘lsin.
Object yaratib, ma'lumotlarni ekranga chiqaring.
2-mashq¶
Talaba nomli class yarating.
Unda:
ism
yosh
ball
bo‘lsin.
3-mashq¶
Mashina classiga:
signal()
funksiyasini qo‘shing.
U:
Bip bip!
chiqarsin.
4-mashq¶
Kitob nomli class yarating.
Unda:
nom
muallif
yil
bo‘lsin.
Constructor yordamida qiymatlarni bering.
5-mashq¶
BankHisobi nomli class yarating.
Unda:
egasi
balans
bo‘lsin.
Balansni ekranga chiqaradigan method yarating.
Muhim narsalarni eslab qoling¶
class — object yaratish uchun qolip.
Masalan:
class Mashina {
// ma'lumotlar
// funksiyalar
};
object — classdan yaratilgan obyekt.
Mashina mashina1;
public tashqaridan foydalanish mumkin bo‘lgan a'zolarni bildiradi.
Class ichidagi funksiyalar method deb ataladi.
Constructor object yaratilganda avtomatik ishlaydi.
Class C++ da obyektga yo‘naltirilgan dasturlashning eng muhim tushunchalaridan biridir.