# 2. Klasslar / obyektlar

{% hint style="info" %}

#### C ++ - bu obyektga yo'naltirilgan dasturlash tili.

{% endhint %}

C ++ da hamma narsa attributlari va usullari bilan birga klasslar va obyektlar bilan bog'liq.&#x20;

***Masalan:*** Haqiqiy hayotda mashina - bu obyekt. Mashinada vazn va rang kabi xususiyatlar, haydash va tormoz kabi usullar mavjud.

Attributlar va usullar, asosan, sinfga tegishli bo'lgan o'zgaruvchilar va funksiyalardir. Ularni ko'pincha "sinf a'zolari" deb atashadi.

Sinf - bu dasturda foydalanishimiz mumkin bo'lgan foydalanuvchi tomonidan belgilanadigan ma'lumotlar turi va u obyekt tuzuvchi yoki obyektlarni yaratish uchun "reja" sifatida ishlaydi.

### Klass yaratish

Klass yaratish uchun class kalit so'zidan foydalaning:

```cpp
class MyClass {       // Bu Klass
  public:             // Kirish spetsifikatori
    int myNum;        // Atribut (int o'zgaruvchisi)
    string myString;  // Atribut (satr o'zgaruvchisi)
};
```

* **Class** kalit so'zi **MyClass** deb nomlangan sinf yaratish uchun ishlatiladi.&#x20;
* Umumiy kalit so'z - bu klass a'zolari (atributlari va usullari) ga sinfdan tashqaridan kirish mumkinligini ko'rsatadigan kirish spetsifikatori.&#x20;
* Kirish spesifikatorlari haqida keyinroq bilib olasiz. Klass ichida **myNum** tamsayıli o'zgaruvchi va **myString** mag'lubiyatli o'zgaruvchi mavjud.&#x20;
* Agar o'zgaruvchilar klass ichida e'lon qilinsa, ular attributlar deb ataladi. Nihoyat, sinf ta'rifini nuqta -vergul bilan tugating ( **;** ).

### Obyekt yaratish

C ++ da obyekt klassdan yaratiladi. Biz allaqachon **MyClass** nomli klass yaratganmiz, shuning uchun endi biz bundan obyektlar yaratish uchun foydalanishimiz mumkin.

**MyClass** obyektini yaratish uchun klass nomini, so'ngra obyekt nomini ko'rsating. Klass attributlariga (**myNum** va **myString**) kirish uchun obyektdagi nuqta sintaksisidan ( **.** ) foydalaning:

**Malasa**: "MyObj" nomli obyekt yarating va attributlarga kiring:

```cpp
class MyClass {       // Bu Klass
  public:             // Kirish spetsifikatori
    int myNum;        // Atribut (int o'zgaruvchisi)
    string myString;  // Atribut (satr o'zgaruvchisi)
};

int main() {
  MyClass myObj;  // MyClass ob'ektini yarating

  // Atributlarga kirish va qiymatlarni o'rnatish
  myObj.myNum = 15; 
  myObj.myString = "Some text";

  // Atribut qiymatlarini chop etish
  cout << myObj.myNum << "\n";
  cout << myObj.myString;
  return 0;
}
```

###

### Bir nechta obyektlar

Siz bitta klassning bir nechta obyektlarini yaratishingiz mumkin:

```cpp
// Ba'zi atributlarga ega avtomobil sinfini yarating
class Car {
  public:
    string brand;   
    string model;
    int year;
};

int main() {

  // Avtomobil ob'ektini yarating
  Car carObj1;
  carObj1.brand = "BMW";
  carObj1.model = "X5";
  carObj1.year = 1999;

  // Mashinaning boshqa ob'ektini yarating
  Car carObj2;
  carObj2.brand = "Ford";
  carObj2.model = "Mustang";
  carObj2.year = 1969;

  // Atribut qiymatlarini chop etish
  cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
  cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
  return 0;
}
```
