Polimorfizm, undan foydalanish mexanizmlari
Interfeyslar va ularga oid misollar
Download 19 Kb.
|
programmalash asoslari fanidan Absalamova tashlagan mustaqil ish mavzulari
- Bu sahifa navigatsiya:
- Funksiya shablonlari va ularni yaratish
- Shablon sinflar
Interfeyslar va ularga oid misollar
C++ tilida interfeys faqat sof virtual funksiyalardan tashkil topgan sinfdir. Interfeys, agar sinf ushbu interfeysni amalga oshirsa, amalga oshirishi kerak bo'lgan usullar to'plamini belgilaydi. Mana interfeysga misol: class Drawable { public: virtual void draw() = 0; // Pure virtual function }; Ushbu misolda Drawable interfeysi boʻlib, uni amalga oshiradigan har qanday sinf draw() usulini qoʻshishni talab qiladi. = 0 kompilyatorga ushbu usul har qanday hosila sinfda amalga oshirilishi kerakligini aytadi va Drawable ni pastki sinfga bo'linishi kerak bo'lgan mavhum sinfga aylantiradi. Mana, Drawable interfeysini amalga oshiradigan sinfga misol: class Circle : public Drawable { public: void draw() { // code to draw a circle } }; class Square : public Drawable { public: void draw() { // code to draw a square } }; Ushbu misolda Circle va Square sinflari ham Drawable< tomonidan talab qilinadigan draw() usulini amalga oshiradi. /kod> interfeysi. Shuning uchun ularning ikkalasi ham Chiziladigan ob'ektlari hisoblanadi va Chiziladigan tipidagi ob'ektlar bilan o'zaro aloqada bo'lgan har qanday boshqa kod bilan ham ularga xuddi shunday munosabatda bo'lish mumkin Funksiya shablonlari va ularni yaratish Funktsiya shablonlari turli xil ma'lumotlar turlari bilan ishlashi mumkin bo'lgan umumiy funktsiyalarni yaratish uchun ishlatiladi. Funksiya shablonlarini template kalit so‘zidan so‘ng biz kutishimiz mumkin bo‘lgan ma’lumotlar turlarini ko‘rsatadigan andoza parametrlari ro‘yxatidan foydalanib yaratamiz. Mana bu yerda har qanday maʼlumot turidagi ikkita elementni qoʻshadigan funksiya shablonini yaratish misoli keltirilgan: template T add(T a, T b) { // Function signature return a + b; } Ushbu misolda shablon T add(T a, T b) qatori funksiya imzosidir. Bu add funksiyasi T ma'lumotlar turidagi ikkita argumentni olishini va T ma'lumotlar turi qiymatini qaytarishini bildiradi. Mana bu funksiya shablonidan qanday foydalanishga misol: int x = add(3, 4); // x is now 7 double y = add(2.5, 1.0); // y is now 3.5 std::string s = add("Hello", " World!"); // s is now "Hello World!" Ushbu misoldagi add funksiyasini chaqirganimizda, kompilyator biz foydalanayotgan ma'lumotlar turlari uchun funksiyaning to'g'ri versiyasini avtomatik ravishda yaratadi. Bu turli xil maʼlumotlar turlari bilan ishlaydigan umumiy kodni yozishni osonlashtiradi. Funksiya shablonlari C++ tilidagi kuchli xususiyat boʻlib, turli turdagi maʼlumotlar bilan ishlay oladigan funksiyalarni yaratish imkonini beradi. Funktsiya shablonini qanday yaratishga misol: template T add(T a, T b) { return a + b; } Ushbu misolda shablon Funktsiyaning o'zi T turidagi ikkita parametrni oladi va ularning yig'indisini qaytaradi. Bu shuni anglatadiki, biz ushbu funksiyadan ikkita butun son, ikkita float yoki hatto maxsus sinfimizning ikkita nusxasini qo‘shish uchun foydalanishimiz mumkin. Funksiya shablonidan foydalanish uchun siz shunchaki shablon argumentlari sifatida kerakli turdagi funksiyani chaqirishingiz kerak, masalan: int x = 5, y = 7; float a = 2.5, b = 1.5; std::cout << add(x, y) << std::endl; // Output: 12 std::cout << add(a, b) << std::endl; // Output: 4.0 Agar xohlasangiz, andoza argumentlarini ham aniq belgilashingiz mumkin, masalan: std::cout << add std::cout << add Bu asosiy misol, lekin funksiya shablonlari yanada rivojlangan usullarda ham ishlatilishi mumkin. Shablon sinflar Shablon sinflari - bu C++ tilidagi xususiyat bo'lib, turli xil ma'lumotlar turlari bilan ishlay oladigan sinflarni yaratish imkonini beradi. Quyida shablon sinfini yaratish misoli keltirilgan: template class MyClass { public: MyClass(T value) : m_value(value) {} T getValue() const { return m_value; } private: T m_value; }; Ushbu misolda shablon Kinfning o'zida T tipidagi bitta a'zo o'zgaruvchisi va T tipidagi argumentni oladigan va a'zo o'zgaruvchini ishga tushiradigan konstruktor mavjud. Shuningdek, u aʼzo oʻzgaruvchining qiymatini qaytaruvchi getValue() umumiy aʼzo funksiyasiga ega. Shablon sinfidan foydalanish uchun siz shunchaki shablon argumenti sifatida kerakli turdagi sinf namunasini yaratishingiz kerak, masalan: MyClass MyClass std::cout << myInt.getValue() << std::endl; // Output: 42 std::cout << myFloat.getValue() << std::endl; // Output: 3.14 Agar xohlasangiz, andoza argumentini ham aniq belgilashingiz mumkin, masalan: MyClass std::cout << myDouble.getValue() << std::endl; // Output: 2.718 Sinf shablonlari std::vector Download 19 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling