Kotlin OOP

OOP nima? (Object Oriented Programming = OOP)

OOP (Object Oriented Programming - Obyektga yo'naltirilgan dasturlash) - bu biron bir maqsadga yo'naltirilgan dasturlash degan ma'noni anglatadi. Obyektga yoʻnaltirilgan dasturlash — bu kompyuter dasturlash modeli boʻlib, bunda maʼlumotlar va obyektlar asosida dasturiy taʼminot dizaynini ishlab chiqiladi. Bu dasturlash paradigmasida bir qator asosiy tushunchalar bor:

  • Klass
  • Obyekt
  • Abstraksiya
  • Inkapsulyatsiya
  • Meros olish
  • Polimorfizm
OOP -Obyektga asoslangan dasturlash, bunda dasturiy ta'minot tuzish jarayonida o'zida attributlar va metodlarni saqlovchi obyektlardan foydalaniladi. OOP katta va murakkab dasturiy taminotlarni ishlab chiqish uchun juda qulay hisoblanadi.

Obyektga yoʻnaltirilgan dasturlashning boshlangʻich asosiy tushunchalari

Obyekt — bu tegishli holat va xatti-harakatlarning jamlanmasidir. Dasturiy taʼminot ob’ektlari koʻpincha kundalik hayotda uchraydigan real dunyo ob’ektlarini modellashtirish uchun ishlatiladi. Yaʼni sodda tilda tushuntiriladigan boʻlsa har bir obyektning xuxsiyati va holati boʻladi. Masalan kundalik hayotdagi insonni bir obyekt sifatida qaraydigan boʻlsak, uning koʻzi yoki sochini rangi, uzunligi bu uning xususiyati va insonning nafas olishi, harakatlanishi, kulishi bu uning xatti-harakati yoki holati deb ataladi. Dasturlashda ham mana shu inson kabi obyektlarni tasvirlash uchun obyekt tushunchasidan foydalaniladi.

Klass — bu obyektlar yaratish uchun prototip yoki shablon. Ushbu tushuncha real dunyo obyektining holati va xatti-harakatlarini modellashtiruvchi anglatadi. Yaʼni obyektlar oʻzlarida maʼlumot saqlasalar, klasslar esa obyektlar qanday maʼlumotlar saqlay olishini belgilab beradi. 

Metod — obyektning harakati ifodalovchi malumot turlari, ular funksiyalarga oʻxshaydi yaʼni amalni bajaradi. Metodlarning foydalanshning afzalligi koddan qayta foydalana olish va optimizatsiya qilishdir. Yaʼni siz maʼlum bir amalni bajaruvchi metodni yozasiz va qachonki siz oʻsha amalni bajarmoqchi boʻlsangiz shunchaki oʻsha metodni chaqirib qoʻysangiz kifoya. Bu sizga kodning takrorlanmasligini taʼminlab beradi. Bu esa, keyinchalik yozgan kodingizda xatolik topilsa, metod ichidagi kodni oʻzini oʻzgartirish orqali xatolik bartaraf etilishi imkonini yaratadi.

Obyektga yoʻnaltirilgan dasturlashning toʻrt ustuni

Abstraktsiya, inkapsulyatsiya, meros olish va polimorfizm — obyektga yoʻnaltirilgan dasturlashning toʻrt muhim ustuni hisoblanadi. Yaʼni obyektga yoʻnaltirilgan dastrulashni bularsiz tassavvur qilish mumkin emas.

Abstraktsiya

Maʼlumotlarni abstraktsiyalash obyektga yoʻnaltirilgan dasturlashning eng muhim va zarur xususiyatlaridan biridir. Maʼlumotlarning abstraktsiyasi tashqi dunyoga faqat muhim maʼlumotlarni taqdim etish, qoʻshimcha tafsilotlarini yoki amalga oshirish jarayonini yashirishni anglatadi. Misol uchun, mashina boshqarayotgan odamning hayotiy misolini koʻrib chiqamiz. Odam faqat gazni bosish mashina tezligini oshirishini yoki tormozni bosish mashinani toʻxtatib qoʻyishini biladi, lekin u gazni bosganda tezlik qanday ortib borayotganini bilmaydi, u mashinaning ichki mexanizmida, motor qanday ishlayotgani haqida bilmaydi va bilishi ham muhim emas. Abstraktsiya ham xuddi shu tamoyilga asoslanadi, yaʼni bizqanday amallar bajara olishimizni bilamiz, lekin bu amallar qanday bajarilishini bilmaymiz.

Enkapsulyatsiya

Inkapsulyatsiya maʼlumotlarni bir butun sifatida yigʻish deb taʼriflanadi. Bu kod va u boshqaradigan maʼlumotlarni birlashtiradigan mexanizm. Inkapsulyatsiyada klassning oʻzgaruvchilari yoki maʼlumotlari har qanday boshqa klassdan yashiriladi va ularga faqat ular eʼlon qilingan klassning metodlari orqali kirish mumkin. Bunda klassdagi maʼlumotlar boshqa klasslardan yashiringani uchun, u maʼlumotlarni yashirish deb ham ataladi.

Meros olish

Meros olish — obyektga yoʻnaltirilgan dasturlash ning muhim ustunidir. Klassning boshqa klassdan xossa va xususiyatlarni olish qobiliyati meros olish deb ataladi. Biz klass yozganimizda, biz boshqa klasslardan xususiyatlarni meros qilib olamiz. Shunday qilib, biz sinf yaratganimizda, barcha xususiyatlar va funktsiyalarni qayta-qayta yozishimiz shart emas, chunki ular unga ega boʻlgan boshqa sinfdan meros boʻlishi mumkin. Meros foydalanuvchiga kodni iloji boricha qayta ishlatish va uning ortiqchaligini kamaytirish imkonini beradi.

Polimorfizm

Polimorfizm soʻzi koʻp shakllarga ega boʻlishni anglatadi. Oddiy soʻzlar bilan aytganda, klassning metodi turli vaziyatlarda turlicha amal bajaradi. Masalan, odam bir vaqtning oʻzida turli xil xususiyatlarga ega boʻlishi mumkin. Odam kabi bir vaqtning oʻzida ota, er, xodim. Shunday qilib, bir odam turli vaziyatlarda turli xil xatti-harakatlarga ega va bunga polimorfizm deyiladi. Polimorifzmni ikki turi bor, birinchisi, bir klassning ichida bir xil nomli va qabul qiluvchi qiymatlari soni va turi boʻyicha farq qiluvchi metodlardan foydalanish. Bu polimorfizm asosan bir xil vazifani bajaruvchi koʻplab turli nomdagi metodlar yaratilishini oldini olish uchun qoʻllaniladi. Yaʼni murakkablikdan qochish uchun. Ikkinchi u turdagi polimorfizmda esa, ota klassdagi metod bola klassda qayta yoziladi.

Obyektga yoʻnaltirilgan dasturlash tillari roʻyhati

Bugungi kunda turli xil obyektga yoʻnaltirilgan dasturlash tillari mavjud. Ammo quyida baʼzi mashhur va keng qoʻllaniladigan OOP tillarini roʻyxatga keltirilgan.

TIOBE indeksiga koʻra, eng yaxshi yigirmata OOP tillari Java, C++, C#, Python, R, PHP, Visual Basic.NET, JavaScript, Ruby, Perl, Object Pascal, Objective-C, Dart, Swift, Scala, Kotlin, Common Lisp, MATLAB va Smalltalk.