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.