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:
class MyClass { // Sinf
public: // Kirish spetsifikatori
int myNum; // Atribut (int o'zgaruvchi)
string myString; // Atribut (string o'zgaruvchi)
};TUSHUNTIRISH
classkalit so'ziMyClassnomli sinfni yaratish uchun ishlatiladi.publickalit 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
myNumbutun son o'zgaruvchisi vamyStringmatn 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:
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
// 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
#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;
}