Skip to content

Sinflar va Obyektlar (Classes and Objects)

C++ Sinflar/Obyektlar

C++ — obyektga yo'naltirilgan dasturlash tilidir.

C++ da hamma narsa sinflar va obyektlar bilan bog'liq, ular o'z atributlari va metodlariga ega. Masalan: hayotda mashina — bu obyekt. Mashinaning atributlari bor, masalan, og'irlik va rang, va metodlari bor, masalan, haydash va tormozlash.

Atributlar va metodlar aslida sinfga tegishli o'zgaruvchilar va funksiyalardir. Ular ko'pincha "sinf a'zolari" deb ataladi.

Sinf — bu dasturimizda foydalanishimiz mumkin bo'lgan foydalanuvchi tomonidan aniqlangan ma'lumot turi bo'lib, u obyektlar yaratish uchun "loyiha" yoki "shablon" vazifasini bajaradi.


Sinf yaratish

Sinf yaratish uchun class kalit so'zidan foydalaning:

MISOL

MyClass nomli sinf yarating:

cpp
class MyClass {       // Sinf
  public:             // Kirish spetsifikatori
    int myNum;        // Atribut (int o'zgaruvchi)
    string myString;  // Atribut (string o'zgaruvchi)
};

TUSHUNTIRISH

  • class kalit so'zi MyClass nomli sinfni yaratish uchun ishlatiladi.
  • public kalit so'zi — kirish spetsifikatori bo'lib, sinf a'zolari (atributlar va metodlar) sinfdan tashqaridan ham foydalanish mumkinligini bildiradi. Kirish spetsifikatorlari haqida keyinroq o'rganasiz.
  • Sinf ichida myNum butun son o'zgaruvchisi va myString matn o'zgaruvchisi mavjud. Sinf ichida e'lon qilingan o'zgaruvchilar atributlar deyiladi.
  • Sinf ta'rifini nuqtali vergul ; bilan yakunlang.

Obyekt yaratish

C++ da obyekt sinfdan yaratiladi. Biz MyClass nomli sinfni allaqachon yaratganmiz, endi undan obyektlar yaratishimiz mumkin.

MyClass sinfining obyektini yaratish uchun sinf nomini yozing, keyin obyekt nomini belgilang.

Sinf atributlariga (myNum va myString) obyektda nuqta sintaksisi (.) yordamida kirish mumkin:

MISOL

myObj nomli obyekt yarating va atributlarga kiring:

cpp
class MyClass {       // Sinf
  public:             // Kirish spetsifikatori
    int myNum;        // Atribut (int o'zgaruvchi)
    string myString;  // Atribut (string o'zgaruvchi)
};

int main() {
  MyClass myObj;  // MyClass sinfining obyektini yaratish

  // Atributlarga kirish va qiymatlarni belgilash
  myObj.myNum = 15;
  myObj.myString = "Biror matn";

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

Bir nechta obyektlar

Bitta sinfdan bir nechta obyekt yaratish mumkin:

MISOL

cpp
// Atributlari bor Car sinfini yaratish
class Car {
  public:
    string brand;
    string model;
    int year;
};

int main() {
  // Car sinfining birinchi obyektini yaratish
  Car carObj1;
  carObj1.brand = "BMW";
  carObj1.model = "X5";
  carObj1.year = 1999;

  // Car sinfining ikkinchi obyektini yaratish
  Car carObj2;
  carObj2.brand = "Ford";
  carObj2.model = "Mustang";
  carObj2.year = 1969;

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

Amaliy topshiriq

Quyidagi atributlarga ega Book sinfini yarating:

  • title (string)
  • author (string)
  • year (int)

Keyin sinfning ikkita obyektini yarating va ularning atribut qiymatlarini chiqaring.

Yechimni ko'rish
cpp
#include <iostream>
#include <string>
using namespace std;

class Book {
  public:
    string title;
    string author;
    int year;
};

int main() {
  Book book1;
  book1.title = "Matilda";
  book1.author = "Roald Dahl";
  book1.year = 1988;

  Book book2;
  book2.title = "The Giving Tree";
  book2.author = "Shel Silverstein";
  book2.year = 1964;

  cout << book1.title << ", " << book1.author << ", " << book1.year << "\n";
  cout << book2.title << ", " << book2.author << ", " << book2.year;
  return 0;
}