Mavhum sinf va beton sinf
Java va C kabi mashhur zamonaviy ob'ektga yo'n altirilgan dasturlash tillarining aksariyati sinfga asoslangan. Ular sinflardan foydalanish orqali inkapsulyatsiya, meros va polimorfizm kabi ob'ektga yo'n altirilgan tushunchalarga erishadilar. Sinflar real dunyo ob'ektlarining mavhum tasviridir. Sinflar metod funksiyalarini amalga oshirish darajasiga qarab aniq yoki mavhum bo'lishi mumkin. Beton sinf o'zining barcha usullarini to'liq amalga oshiradi. Mavhum sinfni oddiy (konkret) sinfning cheklangan versiyasi deb hisoblash mumkin, unda qisman amalga oshirilgan usullar bo'lishi mumkin. Odatda, aniq sinflar (shunchaki) sinflar deb ataladi.
Beton klassi nima?
Birlamchi sinf aniq sinfdir. Class kalit so'zi sinflarni aniqlash uchun ishlatiladi (masalan, Java-da). Va odatda ular oddiygina sinflar deb ataladi (beton sifatsiz). Konkret sinflar real dunyo ob'ektlarining kontseptual tasvirini tasvirlaydi. Sinflar atributlar deb ataladigan xususiyatlarga ega. Atributlar global va misol o'zgaruvchilari sifatida amalga oshiriladi. Sinflardagi usullar ushbu sinflarning xatti-harakatlarini ifodalaydi yoki belgilaydi. Sinflarning usullari va atributlari sinf a'zolari deb ataladi. Odatda, inkapsulyatsiya atributlarni shaxsiy qilish va shu atributlarga kirish uchun ishlatilishi mumkin bo'lgan umumiy usullarni yaratish orqali erishiladi. Ob'ekt - bu sinfning namunasi. Meros foydalanuvchiga sinflarni (sub sinflar deb ataladi) boshqa sinflardan (super sinflar deb ataladi) kengaytirish imkonini beradi. Polimorfizm dasturchiga sinf ob'ektini super sinf ob'ekti o'rniga almashtirishga imkon beradi. Odatda, muammo ta'rifida topilgan otlar to'g'ridan-to'g'ri dasturda sinflarga aylanadi. Va shunga o'xshab, fe'llar usullarga aylanadi. Umumiy, shaxsiy va himoyalanganlar sinflar uchun odatiy kirish modifikatorlaridir.
Mavhum sinf nima?
Mavhum sinflar Abstract kalit soʻzi yordamida eʼlon qilinadi (masalan, Java,). Odatda, Abstract Base Classes (ABC) nomi bilan ham tanilgan Abstrakt sinflarni namuna qilib bo'lmaydi (bu sinfning namunasini yaratib bo'lmaydi). Shunday qilib, mavhum sinflar faqat dasturlash tili merosni qo'llab-quvvatlasa (sinfni kengaytirishdan kichik sinflarni yaratish qobiliyati) mazmunli bo'ladi. Mavhum sinflar odatda qisman yoki umuman amalga oshirilmagan mavhum tushuncha yoki ob'ektni ifodalaydi. Shu sababli, abstrakt sinflar ota-sinflar vazifasini bajaradi, ulardan bolalar sinflari olinadi, shunda bolalar sinf ota-sinfning toʻliq boʻlmagan xususiyatlarini baham koʻradi va ularni bajarish uchun funksiyalar qoʻshilishi mumkin.
Mavhum sinflar abstrakt usullarni oʻz ichiga olishi mumkin. Mavhum sinfni kengaytiruvchi kichik sinflar ushbu (meroslangan) Abstrakt usullarni amalga oshirishi mumkin. Agar bolalar sinfi barcha mavhum usullarni amalga oshirsa, u konkret sinfga aylanadi. Agar shunday bo'lmasa, bolalar sinfi ham Abstrakt sinfga aylanadi. Bularning barchasi shuni anglatadiki, dasturchi sinfni Abstrakt sifatida tayinlaganida, u sinf to'liq bo'lmasligini va unda meros qilib olingan kichik sinflar tomonidan to'ldirilishi kerak bo'lgan elementlar bo'lishini aytadi. Bu ikkita dasturchi o'rtasida shartnoma tuzishning yaxshi usuli bo'lib, u dasturiy ta'minotni ishlab chiqishdagi vazifalarni soddalashtiradi. Meros olish uchun kod yozuvchi dasturchi usul taʼriflariga toʻliq amal qilishi kerak (lekin, albatta, oʻz amaliyotiga ega boʻlishi mumkin).
Mavhum sinf va konkret sinf oʻrtasidagi farq nima?
Mavhum sinflar odatda qisman yoki umuman bajarilmaydi. Boshqa tomondan, aniq sinflar har doim o'z xatti-harakatlarini to'liq amalga oshiradilar. Aniq sinflardan farqli o'laroq, mavhum sinflarni yaratib bo'lmaydi. Shuning uchun mavhum sinflarni foydali qilish uchun ularni kengaytirish kerak. Mavhum sinflar mavhum usullarni o'z ichiga olishi mumkin, ammo aniq sinflar mumkin emas. Mavhum sinf kengaytirilganda, barcha usullar (ham mavhum, ham aniq) meros qilib olinadi. Meroslangan sinf har qanday yoki barcha usullarni amalga oshirishi mumkin. Agar barcha mavhum usullar amalga oshirilmasa, u holda bu sinf ham mavhum sinfga aylanadi.