Polimorfizm
- umumiy muloqot tili. OOPda barcha ob'ektlar
bir -biri bilan ular
tushunadigan tilda muloqot qilishi muhim. Va agar har xil ob'ektlarda "O'chirish"
usuli bo'lsa, u aynan shunday qilishi va hamma joyda xuddi shunday yozilishi kerak.
Bir ob'ektda "O'chirish", ikkinchisida "Yo’qotish" bo'lishi mumkin emas.
Shu bilan birga, ob'ekt ichida usullar turli yo'llar bilan amalga oshirilishi mumkin.
Masalan, biror narsani o'chirish - bu ogohlantirish, keyin ma'lumotlar bazasidagi
elementni o'chirilgan deb belgilash va foydalanuvchini o'chirish uning xaridlarini
bekor
qilishni, pochta ro'yxatidan obunani bekor qilishni va sotib olish tarixini
arxivlashni bildiradi. Voqealar boshqacha, lekin dasturchi uchun bu muhim emas. U
faqat Delete () usuliga ega va unga ishonadi.
2-misol. Polimorfizm
Agar haydashni o'rgangan odam, aytaylik, VAZ 2106 VAZ 2110 yoki BMW X3 ni
boshqarolmasa, haydash bo'yicha har qanday mashg'ulotning ma'nosi bo'lmaydi.
Boshqa tomondan, odatda, gaz pedali tormoz pedalining chap tomonida, rulning
o'rniga joystik bo'lgan mashinani boshqaradigan odamni tasavvur qilish qiyin.
Gap shundaki, mashinaning asosiy boshqaruv elementlari bir xil dizayn va ishlash
tamoyiliga ega.
Haydovchi aniq biladiki, chapga burilish uchun gidravlik
kuchaytirgich bor yoki yo'qligidan qat'i nazar, u rulni burishi kerak.
Agar biror kishi ishdan uyga ketishi kerak bo'lsa, u qanday turdagi mashinadan
foydalanishidan qat'i nazar, u mashina ruliga o'tirib, xuddi shunday harakatlarni
bajaradi.
Aytishimiz mumkinki, hamma mashinalar bir xil interfeysga ega va
Agar siz interfeysni
o'zgartirmasangiz, ob'ekt ichidagi
biror narsani o'zgartirishingiz
mumkin va dastur normal
ishlashda davom etadi.
haydovchi mashinaning mohiyatidan mavhum bo'lib, aynan shu interfeys bilan
ishlaydi. Agar haydovchi nemis avtobanida haydashga to'g'ri kelsa, ehtimol u past
tezlikda harakatlanadigan mashinani tanlaydi va agar yomg'irdan
keyin Gorniy
Oltoydagi uzoq maraldan qaytishi kerak bo'lsa, katta ehtimol bilan qo'shin ko'prigi
bo'lgan UAZ bo'ladi. tanlangan. Ammo, mashinaning harakati va ichki ishlashi
qanday amalga oshirilishidan qat'i nazar, interfeys o'zgarmaydi.
Polimorfizm - bu bir xil interfeysli ob'ektlardan ob'ektning turi va ichki tuzilishi
haqida ma'lumotsiz foydalanish xususiyatidir.
Masalan, agar siz fayldan ma'lumotlarni o'qiyotgan bo'lsangiz, unda, aniqki, fayl
oqimini amalga oshiradigan sinfda quyidagilarga o'xshash usul bo'ladi: bayt []
readBytes (int n);
Aytaylik, xuddi shu ma'lumotlarni rozetkadan o'qish kerak. Soketni amalga
oshiradigan sinfda readBytes usuli ham bo'ladi. Sizning
tizimingizdagi bitta sinf
ob'ektini boshqa sinf ob'ektiga almashtirish kifoya va natijaga erishiladi.
Bunday holda, tizim mantig'i, ma'lumotlarning fayldan o'qilishi yoki tarmoq orqali
qabul qilinishidan qat'i nazar, amalga oshirilishi mumkin. Shunday qilib, biz
ma'lumotlarni qidirishning o'ziga xos ixtisosidan xulosa chiqaramiz va interfeys
darajasida ishlaymiz. Bitta talab shundaki, ishlatiladigan har bir ob'ektda readBytes
usuli bo'lishi kerak.
Inkapsulyatsiya va ma’lumotlarni yashirish
Ob'ektlardan foydalanishning asosiy afzalliklaridan biri shundaki, ob'ektga
uning
barcha atributlari va xatti -harakatlarini ko'rsatish shart emas. Ob'ektga yo'naltirilgan
yaxshi loyihada (hech bo'lmaganda bitta yaxshi deb hisoblanadigan) ob'ekt faqat
boshqa ob'ektlar u bilan o'zaro aloqada bo'lishi kerak bo'lgan interfeyslarni
ko'rsatishi kerak. Ob'ektni ishlatish bilan bog'liq bo'lmagan tafsilotlar boshqa barcha
narsalardan yashirilishi kerak.
Inkapsulyatsiya ob'ektlarning atributlari va xatti -harakatlarini o'z ichiga olishi bilan
belgilanadi. Ma'lumotni yashirish - bu inkapsulyatsiyaning asosiy qismi.
Masalan, raqamlar kvadratini hisoblash uchun ishlatiladigan ob'ekt natijalarni olish
uchun interfeysni ta'minlashi kerak. Biroq, sonlarning kvadratlarini hisoblash uchun
ishlatiladigan atributlar va algoritmlarni so'rovchi ob'ektga taqdim etishga hojat
yo'q. Ishonchli sinflar inkapsulyatsiyani hisobga olgan holda ishlab chiqilgan.
Interfeyslar
Biz allaqachon ko'rdikki, interfeys ob'ektlar o'rtasidagi
asosiy aloqa vositalarini
belgilaydi. Har qanday sinfni loyihalashda ob'ektlarning to'g'ri ishga tushirilishi va
ishlashi uchun interfeyslar ta'minlanadi. Ob'ekt tomonidan taqdim etilgan har
qanday xatti -harakatlar, taqdim etilgan interfeyslardan biri yordamida yuborilgan
xabar orqali chaqirilishi kerak. Agar interfeys bo'lsa, u tegishli sinf
foydalanuvchilari ushbu sinf bilan qanday aloqada bo'lishlari haqida to'liq
tavsif
berishi kerak. Ob'ektga yo'naltirilgan dasturlash tillarining ko'pchiligida
interfeyslarning bir qismi bo'lgan usullar ommaviy deb ta'riflanadi.