Asosiy farq – sinf va interfeys
Ob'ektga yo'n altirilgan dasturlash (OOP) dasturiy ta'minotni ishlab chiqishda keng tarqalgan paradigmadir. Bu sinflar va ob'ektlardan foydalangan holda real dunyo stsenariylarini dasturlashga olib kelishga yordam beradi. Sinf - bu ob'ektni yaratish rejasi. Dasturchi xossalari va usullari bilan sinf yaratishi mumkin. Talaba va o'qituvchi ob'ektlardir. Ob'ektni yaratish instantsiya deb nomlanadi. OOP ham interfeyslardan foydalanadi. Interfeyslar va sinflar o'xshash ko'rinishi mumkin, ammo ularda farq bor. Ushbu maqolada sinf va interfeys o'rtasidagi farq muhokama qilinadi. Sinf va interfeys o'rtasidagi asosiy farq shundaki, sinf mos yozuvlar turi bo'lib, u ob'ektni yaratish uchun loyihadir, interfeys esa ob'ektni yaratish uchun ishlatib bo'lmaydigan mos yozuvlar turidir.
Klass nima?
OOPda hamma narsa ob'ekt sifatida qaraladi. Ob'ektni sinfsiz yaratish mumkin emas. Sinf - bu ob'ektni yaratish rejasi. Uy qurishda me'mor rejani tuzadi. Reja sinfga o'xshaydi. Uy ob'ektga o'xshaydi. Sinf - bu ob'ektni qurish rejasi. Ob'ekt sinf yordamida yaratilgan narsadir.
Sinfda xususiyatlar va usullar mavjud. Talaba ism, sinf, indeks raqami kabi xususiyatlarga ega bo'lishi mumkin. Talaba o'qish, yurish, o'rganish kabi usullarga ega bo'lishi mumkin. Sinf zarur xususiyatlar va usullar bilan yaratilgan.
Koʻpgina dasturlash tillarida sinf yaratish sintaksisi quyidagicha. U class kalit so'zi yordamida yaratilgan.
sinf sinf_nomi {
// xususiyatlar
//usullar
}
C va Java kabi dasturlash tillari sinf yordamida obyekt yaratish uchun oʻxshash sintaksisga amal qiladi. Sinf nomi Talaba deb faraz qiling.
Student s1=yangi Talaba ();
Bu s1 ob'ekt. "Yangi" kalit so'zi xususiyatlar uchun xotira ajratish uchun ishlatiladi. Sinfda xususiyatlar yoki oʻzgaruvchilarni ishga tushirish uchun konstruktor ham mavjud.
Xususiyatlar va usullar kabi sinf a'zolari kirish modifikatorlariga ega. Kirish spetsifikatsiyalari ushbu a'zolarning boshqa sinflarga kirish imkoniyati va ko'rinishini tavsiflaydi. Sinf a'zolari umumiy, shaxsiy va himoyalangan kabi kirish spetsifikatsiyalariga ega bo'lishi mumkin. Jamoat a'zolariga boshqa sinflar kirishlari mumkin. Shaxsiy a'zolar faqat sinfga kirishlari mumkin. Himoyalangan aʼzolarga sinf va tegishli quyi sinflarda kirish mumkin.
Interfeys nima?
Abstraktsiya ob'ektga yo'n altirilgan dasturlashning ustunidir. Bu amalga oshirish tafsilotlarini yashirish va foydalanuvchiga funksionallikni ko'rsatishdir. Abstraktsiyaga mavhum sinflar va interfeyslar yordamida erishiladi. Mavhum usulda amalga oshirish mavjud emas. Kamida bitta abstrakt metodni o'z ichiga olgan sinf mavhum sinf deyiladi.
Ikkita mavhum sinf mavjud bo'lganda, bu sinflarda e'lon qilingan usullar amalga oshirilishi kerak. Ushbu usullarni amalga oshirish uchun yangi sinf ishlatiladi. Agar ikkala sinfda ham bir xil usul bo'lsa, bu noaniqlik muammosiga olib kelishi mumkin. Shuning uchun Java va C kabi dasturlash tillari interfeysga ega.
Interfeyslar faqat usullar deklaratsiyasini o'z ichiga oladi. Amalga oshirish usuli yo'q. Bundan tashqari, interfeyslarni ob'ektlar yaratish uchun ishlatib bo'lmaydi. Ular bir nechta merosni qo‘llab-quvvatlash va kodni himoyalash uchun ishlatiladi.
Interfeys sintaksisi quyidagicha. Interfeys “interfeys” kalit so‘zidan foydalaning.
interfeys interfeysi_nomi{
turi usul1(parametrlar_roʻyxati);
turi usul2(parametrlar_roʻyxati);
}
Yuqoridagiga ko'ra, interfeyslar faqat deklaratsiyaga ega. Hech qanday ta'rif yo'q. Shunday qilib, interfeyslar ob'ektlarni yarata olmaydi. U faqat interfeysning mavhum ko'rinishini beradi. Interfeysda e'lon qilingan usullar bir yoki bir nechta sinflar tomonidan amalga oshirilishi mumkin. Sinf interfeysni amalga oshirish uchun "amalga oshirish" kalit so'zidan foydalanadi. Quyida Java yordamida yozilgan misolga qarang.
01-rasm: Interfeyslar yordamida dastur
Yuqoridagi dasturga muvofiq, A va B interfeyslardir. A interfeysida sum() bo'lgan metod deklaratsiyasi mavjud. B interfeysida sub() metod deklaratsiyasi mavjud. C klassi A va B bo'lgan ikkala interfeysni ham amalga oshiradi. Shuning uchun C klassi ikkala sum() va sub() usullarini belgilaydi. C tipidagi ob'ektni yaratgandan so'ng, sum() va sub() usullarini ham chaqirish mumkin.
Interfeys ichida e'lon qilingan usullar har doim ochiq bo'lishi kerak, chunki amalga oshirish sinflari ularni belgilaydi. Interfeys boshqa interfeysdan ham meros qilib olinishi mumkin.
Klass va interfeys oʻrtasidagi oʻxshashliklar qanday?
- Ikkalasi ham mos yozuvlar turlari.
- Ikkalasi ham obyektga yoʻn altirilgan dasturlashga tegishli.
Klass va interfeys oʻrtasidagi farq nima?
Sinf va interfeys |
|
Sinf - ob'ektni yaratish rejasi bo'lgan mos yozuvlar turi. | Interfeys mos yozuvlar turi boʻlib, uni namuna qilib boʻlmaydi. |
Ob'ektning namunasi | |
Klass ob'ektni yaratish uchun ishlatiladi. | Interfeysni yaratib boʻlmaydi, chunki usullar hech qanday amalni bajara olmaydi. |
Konstruktor | |
Klass oʻzgaruvchilarni ishga tushirish uchun konstruktorni oʻz ichiga oladi. | Interfeysda konstruktor mavjud emas, chunki ular ishga tushirish uchun deyarli hech qanday oʻzgaruvchi emas. |
Kalit soʻz | |
Sinfda “class” kalit soʻzi ishlatiladi. | Interfeys "interfeys" kalit so'zidan foydalanadi. |
Kirish spetsifikatsiyasi | |
Sinf a'zolari shaxsiy, ochiq va himoyalangan bo'lishi mumkin. | Interfeys a'zolari har doim ochiq bo'lishi kerak, chunki ularni amalga oshirish sinflari belgilaydi. |
Xulosa – Sinf va interfeys
Sinflar va interfeyslar ob'ektga yo'n altirilgan dasturlashda keng qo'llaniladi. Sinf va interfeys o'rtasidagi farq shundaki, sinf ob'ektni yaratish uchun loyiha bo'lgan mos yozuvlar turi va interfeys ob'ektni yaratish uchun ishlatib bo'lmaydigan mos yozuvlar turidir. Sinf ko'plab interfeyslarni amalga oshirishi mumkin. Lekin u faqat bitta superklassni kengaytirishi mumkin. Interfeysda ko'plab interfeyslarni meros qilib olish mumkin, ammo amalga oshirish mumkin emas. Ikkalasining ham o'z ahamiyati bor. Dasturchi ulardan ishlab chiqilayotgan dasturiy ta'minotga muvofiq foydalanishi mumkin.
PDF klassini va interfeysni yuklab oling
Siz ushbu maqolaning PDF-versiyasini yuklab olishingiz va iqtibos keltirgan holda oflayn maqsadlarda foydalanishingiz mumkin. Iltimos, PDF versiyasini bu yerdan yuklab oling. Sinf va interfeys o'rtasidagi farq