Polimorfizm Polimorfizm (yunonchadan olingan bo’lib, “shakllar to’plami” degan ma’noni anglatadi) bir Qator umumiy xossalarga ega bo’lgan bir necha ob’ektlarga bitta interfeysga kirish va unda nazarda tutilgan usullarni amalga tatbiQ etish imkonini beradigan xususiyat hisoblanadi. Oddiy misol sifatida avtomobil rulini ko’rib chiQamiz. Rul (interfeys) rul mexanizmning Qanday xili Qo’llanilishidan Qat’i nazar o’zgarmasdan Qoladi. YA’ni, rulning ishlash prinsipi garchi avtomobilda Qo’lda boshQarish yoki kuchaytirgichli rul boshQaruvi o’rnatilgan bo’lsa ham har doim o’zgarishsiz Qoladi (masalan, rul g’ildiragining chapga burilishi avtomobilni ham chapga burilishiga olib keladi). Unifikatsiyalangan interfeysning afzalligi shundaki, agarda siz bir marta avtomobil boshQarishni o’rgansangiz, u holda har QanaQa tipdagi avtomobilni boshQara olasiz.
Xuddi shu prinsipni dasturlashga ham tatbiQ etsa bo’ladi. Masalan, stek – LIFO (last in, first out) ro’yxat tipi. Siz turli xildagi uchta stek talab Qiladigan (bittasi son bilan ifodalanadigan Qiymatlar uchun, bittasi suzuvchi nuQtali Qiymatlar uchun, va bittasi belgilar uchun) dastur bilan ishlashingiz mumkin. Ushbu holatda har bir stekni tatbiQ etish uchun saQlanayotgan ma’lumotlar har xil bo’lsa ham bitta va o’sha algoritm ishlatiladi. Ob’ektga-yo’naltirilgan tildan tashQarida sizga uchta har bir to’plamga alohida nom bilan turli xil steklar protsedurasi to’plamini yaratish kerak bo’ladi. Shunday yo’l bilan, stekning bir tipidan foydalanish usullarni aniQlash orQali siz uni Qolgan tiplarga Qo’llashingiz mumkin bo’ladi.
Polimorfizm konsepsiyasining umumlashmasini Quyidagi ta’riflash mumkin: “bir interfeys – usullar to’plami”. Bu o’xshash jarayonlar guruhlari uchun unifikatsiyalangan interfeys yaratish mumkinligini anglatadi. Polimorfizm dasturlar murakkabligini umumiy harakat sinflari spesifikayasi uchun yagona interfeysdan foydalanish orQali kamaytirish imkonini beradi. Har bir vaziyatga tatbiQan kompilyatorning o’zi sizni bu harakatlarni Qo’lda Qilish zaruratidan xalos Qilgan holda spesifik harakatlar (ya’ni usul)ni tanlaydi. Siz faQat mazkur interfeysda Qaysi usullar nazarda tutilganligini va ularni amalga tatbiQ etishni esdan chiQarmasligingiz kerak.
Vorislik - ob’ektiv yo’naltirilgan programmalashni uchta fundamental prinsiplaridan biridir, chunki faqat shu bilan birga ierarxik klassifikatsiya tuzish mumkin. Vorislikdan foydalangan holda o’zaro bog’liq elementlarni harakteristikasini belgilovchi umumiy sinf xosil qilish mumkin. Bu sinf o’ziga xos yagona xususiyatga ega tor mutaxassislashtirilgan sinflar qoldirishi mumkin.
S# tilida bu sinf baza sinfi deb ataladi. Baza sinfidan hosila sinfi kelib chiqadi. Binobarin, hosila sinfi – bu baza sinfining maxsus talqinidir. Hosila sinfiga baza sinfidagi mavjud metodlar va indeksatorlardan tashqari o’ziga xos yagona elementlar ham qo’shilishi mumkin.