Abstrakt sinflar
Download 89.02 Kb.
|
d 17
Abstrakt sinflar Oddiy darslardan tashqari C# da ham abstrakt sinflar mavjud. Ular nima uchun kerak? Sinflar odatda qandaydir ob'ekt yoki ob'ekt uchun qandaydir rejani ifodalaydi. Masalan, avtomobillarni ifodalash uchun Car sinfini yoki odamlarni ifodalash uchun Person sinfini ushbu sinflarga ushbu ob'ektlarni tavsiflovchi tegishli xususiyatlar, maydonlar va usullarni joylashtirish orqali belgilashimiz mumkin. B iroq, biz dasturlash tilidan foydalangan holda ifodalamoqchi bo'lgan ba'zi ob'ektlar o'ziga xos dasturga ega bo'lmasligi mumkin. Masalan, aslida bunday geometrik shakl yo'q. Doira, to'rtburchak, kvadrat bor, lekin oddiygina raqam yo'q. Biroq, aylana ham, to'rtburchak ham umumiy narsaga ega va ular raqamlardir. Va aniq amalga oshirishga ega bo'lmagan bunday ob'ektlarni tavsiflash uchun mavhum sinflar mo'ljallangan. Abstrakt sinf oddiy sinfga o'xshaydi. Bundan tashqari, o'zgaruvchilar, usullar, konstruktorlar, xususiyatlar bo'lishi mumkin. Yagona narsa shundaki, mavhum sinflarni belgilashda mavhum kalit so'z ishlatiladi. Masalan, transport vositasini ifodalovchi mavhum sinfni aniqlaymiz: Avtomobil ma'lum bir amalga oshirishga ega bo'lmagan ba'zi bir mavhumlikni ifodalaydi. Ya'ni, mashinalar va yuk mashinalari, samolyotlar, kemalar bor, kimdir kosmik kemaga minishni yaxshi ko'radi, ammo bunday transport vositasi yo'q. Biroq, barcha transport vositalarining umumiy jihati bor - ular harakatlana oladi. Va buning uchun sinfda harakatga taqlid qiluvchi Move usuli aniqlanadi. A Biroq, mavhum sinflar olingan sinflar meros qilib olishi va foydalanishi mumkin bo'lgan ba'zi umumiy funktsiyalarni tavsiflash uchun foydalidir: Bunday holda, Transport klassi har xil turdagi transport vositalarini ifodalovchi uchta sinfni meros qilib oladi. Biroq, ularning bir umumiy tomoni bor - ular Move() usuli yordamida ko'chirilishi mumkin. Yuqorida mavhum sinfning konstruktoridan foydalanib, ushbu sinfning namunasini yaratish mumkin emasligi haqida yozilgan edi. Biroq, bunday sinf konstruktorlarni ham belgilashi mumkin: Bunday holda, konstruktor mavhum Transport sinfida aniqlanadi - parametrdan foydalanib, u avtomobil nomini saqlaydigan Name xususiyatining qiymatini o'rnatadi. Va bu holda, hosila sinflar o'zlarining konstruktorlarida ushbu konstruktorni chaqirishlari kerak. Abstrakt sinf a'zolari Odatdagi xossalar va usullardan tashqari, mavhum sinf abstrakt kalit so'z yordamida aniqlangan va hech qanday funksionallikka ega bo'lmagan mavhum sinf a'zolariga ega bo'lishi mumkin. Xususan, mavhum bo'lishi mumkin: Usullari Xususiyatlari Indekslovchilar Ishlanmalar Abstrakt sinf a'zolari shaxsiy modifikatorga ega bo'lmasligi kerak. Bunday holda, olingan sinf asosiy abstrakt sinfdagi barcha mavhum usullar va xususiyatlarni bekor qilishi va amalga oshirishi kerak. Olingan sinfda bekor qilinganda, bunday usul yoki xususiyat bekor qilish modifikatori bilan ham e'lon qilinadi (virtual usullar va xususiyatlarning normal bekor qilinishi kabi). Shuni ham ta'kidlash kerakki, agar sinfda kamida bitta abstrakt usul (yoki mavhum xususiyat, indeksator, hodisa) bo'lsa, u holda bu sinf mavhum sifatida belgilanishi kerak. Mavhum a'zolar, virtual a'zolar kabi, polimorf interfeysning bir qismidir. Ammo virtual usullarda biz merosxo'r klassi amalga oshirishni meros qilib oladi desak, mavhum usullarda ushbu mavhum usullar bilan ifodalangan interfeys meros qilib olinadi. Abstrakt usullar Masalan, yuqoridagi avtomobil misolida Move usuli transport vositasining harakatini tasvirlaydi. Biroq, har xil turdagi transport vositalari har xil harakat qiladi - ular erda ovqatlanadilar, havoda uchadilar, suvda suzib yuradilar va hokazo. Bunday holda, biz Move usulini mavhum qilishimiz va uni hosil qilingan sinflarga amalga oshirishni kechiktirishimiz mumkin:
Ilova sinflari:
Abstrakt xususiyatlar Mavhum xususiyatlardan foydalanishga e'tibor bering. Ularning ta'rifi avtoxususiyatlarning ta'rifiga o'xshaydi. Masalan:
Transport klassi avtomobil tezligini saqlashi kerak bo'lgan Tezlik mavhum xususiyatini belgilaydi. Bu avtoxususiyatga o'xshaydi, lekin bu avtoxususiyat emas. Bu xususiyat amalga oshirishga ega bo'lishi shart emasligi sababli, unda faqat bo'sh olish va o'rnatish bloklari mavjud. Olingan sinflarda biz bu xususiyatni to'liq huquqli xususiyatga aylantirish (Kema sinfidagi kabi) yoki uni avtomatik (Samolyot sinfidagi kabi) qilish orqali bekor qilishimiz mumkin. Mavhum sinflar umumiy tushunchalar sifatida ishlatiladi, ulardan aniqroq hosila sinflarni olish mumkin. Sinfning mavhum tipidagi ob'ektni yaratish mumkin emas. Biroq, mavhum sinf turlariga ko'rsatgichlar va havolalardan foydalanishingiz mumkin. Download 89.02 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling