Obyektga yo’naltirilgan dasturlash (OOP - Obyekt Oriented Programming) dasturni sinf va obyektga asoslanib yaratishni anglatadigan metodologiya hisoblanadi. U dasturni hayotiy tushunchalar, masalan, obyekt, sinf kabilar bilan tushuntirishga asoslanadi va quyidagi konsepsiyalarni o’z ichiga oladi:
- Obyekt (object)
- Sinf (class)
- Merosxo’rlik (inheritance)
- Polimorfizm (polymorphism)
- Abstraksiya (abstraction)
- Enkapsulatsiya (encapsulation)
OOP ning konsepsiyalarni quyidagi rasmdan tushunishga harakat qiling.
Endi ularni bilan qisqacha tanishib chiqamiz. Keyinchalik bu konsepsiyalarning har birini alohida dars sifatida o’rganamiz.
Obyekt – bu holat va xususiyatga ega jism. Masalan, stul, ruchka, mushuk, avtomobil va hokazo. Obyekt fizik yoki mantiqiy shaklda bo’lishi mumkin. Dasturlashda obyekt biror sinfning namunasi sifatida ifodalanadi. Obyekt xotirada biror joyni egallaydi va manzilga ega bo’ladi. Obyektlar boshqa sinflarning obyektlari bilan aloqa qilishi mumkin. Masalan, kuchukni obyekt sifatida qarasak, uning holatlari rangi, ismi, va xususiyatlari yugura olishi, vovullay olishi hisoblanadi.
Sinf – bu obyektlarning to’plami yoki manbayi sifatida qaralishi mumkin. U faqat mantiqiy mavjud bo’ladi. Sinf bu biror shakldagi obyekt yaratish mumkin bo’lgan shablon. Sinf xotiradan umuman joy egallamaydi.
Merosxo’rlik – bu biror obyektning barcha holat va xususiyatlarini boshqa bir obyekt o’zlashtirishi hisoblanadi. Bu koddan qayta-qayta foydalanish imkoniyatini beradi.
Polimorfizm – bu biror vazifa yoki ishni turli usullar bilan bajarish hisoblanadi. Java dasturlash tilida polimorfizm “method overloading” va “method overriding” kabi usullar bilan tashkillashtiriladi. Ular haqida keyinroq batafsil o’rganamiz.
Abstraksiya – vazifaning qanday bajarilishini yashirish va faqat natijasini ko’rsatishga aytiladi. Java dasturlash tilida abstract sinf va interface kabilar abstraksiyani tashkil etish uchun ishlatiladi.
Enkapsulatsiya – ma’lumot yoki o’zgaruvchilarni va ularga murojaat qiluvchi funksiyalarni bitta qismda saqlash hisoblanadi. Masalan, Java sinfi enkapsulatsiyaga yaqqol misol bo’la oladi, chunki classdagi maydonlar private bo’ladi ya’ni yopiq, va ularga murojaatlar getter/setterlar orqali amalga oshiriladi.
Obyektga yo’naltirilgan dasturlashning afzalliklari:
- Modullilik – enkapsulatsiya obyektlarni mustaqil bo’lishiga imkon beradi, bu esa xatoliklarni oson hal qilish va hamkorlikda ishlash imkonini osonlashtiradi.
- Qayta foydalanish – merosxo’rlik yozilgan koddan qayta-qayta foydalanish imkonini yaratadi va natijada samaradorlik oshadi.
- Samaradorlik – OOPning ko’plab konsepsiyalari ish samaradorligini oshirish imkoniyatlariga ega.
- Oson yangilanadigan – enkapsulatsiya natijasida dasturchilar kodlarni oson va mustaqil o’zgartirish imkoniyatiga egalar.
- Xavfsizlik – abstraksiya va enkapsulatsiya xavfsizlikni yuqori darajada ta’minlaydi.
- Moslashuvchanlik – polimorfizm vaziyatga qarab muammolarni turli usullarda hal qilish imkonini yaratadi.