Obyektga yo’naltirilgan dasturlash (OOP) — dasturlashda tub burilish nuqtasi. Shu paytgacha biz alohida o’zgaruvchilar va funksiyalar bilan ishladik. OOP esa ma’lumot va u ustidagi amallarni bitta yaxlit birlikka — obyektga jamlaydi. Deyarli barcha yirik C++ loyihalari aynan shu yondashuvga asoslanadi.
OOP — dasturni real dunyodagi obyektlar ko’rinishida modellashtiradigan paradigma. Uning to’rt ustuni bor: enkapsulatsiya, meros, polimorfizm va abstraksiya.
OOP nima uchun kerak?
Tasavvur qiling, avtomobilni dasturda ifodalash kerak. Protsedurali yondashuvda uning rangi, tezligi alohida o’zgaruvchilarda, harakati esa alohida funksiyalarda bo’lardi — hammasi sochilib ketadi. OOP esa bularni bitta Avtomobil birligiga jamlaydi: ma’lumot (rang, tezlik) va xatti-harakat (yurish, to’xtash) bir joyda.
To’rt ustun
OOP ni ushlab turadigan to’rt tamoyilni jadvalda ko’rib chiqamiz:
| Ustun | Ma’nosi |
|---|---|
| Enkapsulatsiya | ma’lumot va metodni birlashtirib, ichkisini yashirish |
| Meros | bir sinf boshqasidan xususiyat oladi |
| Polimorfizm | bir nom turli obyektda turlicha ishlaydi |
| Abstraksiya | murakkablikni yashirib, faqat kerakni ko’rsatish |
Bularning har birini keyingi darslarda alohida chuqur o’rganamiz.
Sinf va obyekt tushunchasi
OOP ning markazida ikki tushuncha turadi: sinf — bu andoza (chizma), obyekt — shu andoza asosida yaratilgan aniq nusxa. Keling, birinchi sinfimizni ko’ramiz:
#include <iostream>
#include <string>
using namespace std;
class Foydalanuvchi {
public:
string ism;
int yosh;
};
int main() {
Foydalanuvchi u; // obyekt yaratdik
u.ism = "Master Sherkulov";
u.yosh = 30;
cout << u.ism << ", " << u.yosh << " yosh" << endl;
return 0;
}
Master Sherkulov, 30 yosh
class Foydalanuvchi — andozani belgiladi, Foydalanuvchi u — shu andozadan aniq obyekt yaratdi. Obyekt ichidagi ma’lumotga (ism, yosh) nuqta (.) orqali murojaat qilinadi.
Bir sinf — ko’p obyekt
Sinfning kuchi shundaki, bitta andozadan istagancha mustaqil obyekt yaratsa bo’ladi:
#include <iostream>
#include <string>
using namespace std;
class Foydalanuvchi {
public:
string ism;
};
int main() {
Foydalanuvchi a, b;
a.ism = "Farrux";
b.ism = "Master Sherkulov";
cout << a.ism << endl;
cout << b.ism << endl;
return 0;
}
Farrux
Master Sherkulov
a va b — bir sinfdan yaratilgan, ammo butunlay mustaqil ikki obyekt. Biri o’zgarsa, ikkinchisiga ta’sir qilmaydi.
Xulosa
Bu bo’limda OOP falsafasini, uning to’rt ustunini, sinf (andoza) va obyekt (nusxa) tushunchasini hamda bir sinfdan ko’p obyekt yaratishni ko’rib chiqdik. OOP — bu murakkab dasturni boshqarish san’ati. Keyingi darsda sinflar va obyektlar bilan yanada chuqurroq ishlaymiz.