Polimorfizm, undan foydalanish mexanizmlari


Interfeyslar va ularga oid misollar


Download 19 Kb.
bet3/5
Sana15.06.2023
Hajmi19 Kb.
#1480720
1   2   3   4   5
Bog'liq
programmalash asoslari fanidan Absalamova tashlagan mustaqil ish mavzulari

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 // Template header
T add(T a, T b) { // Function signature
return a + b;
}
Ushbu misolda shablon qatori shablon sarlavhasidir. U kompilyatorga bu funksiya shablon funksiyasi ekanligini va T umumiy ma'lumotlar turi ekanligini aytadi.
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 qatori kompilyatorga funksiya shablonini yaratayotganimizni va funksiya biz deb ataydigan tur bilan ishlashini bildiradi. T. T to'ldiruvchisi int, float yoki o'zingizning shaxsiy sinfingiz kabi har qanday ma'lumot turi bilan almashtirilishi mumkin.
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(x, y) << std::endl; // Output: 12
std::cout << add(a, b) << std::endl; // Output: 4.0
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 qatori kompilyatorga biz sinf shablonini yaratayotganimizni va sinf biz deb ataydigan tur bilan ishlashini bildiradi. T. T to'ldiruvchisi int, float yoki o'zingizning shaxsiy sinfingiz kabi har qanday ma'lumot turi bilan almashtirilishi mumkin.
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 myInt(42);
MyClass myFloat(3.14);
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 myDouble(2.718);
std::cout << myDouble.getValue() << std::endl; // Output: 2.718
Sinf shablonlari std::vector va std::map kabi shablon konteynerlari kabi murakkab tuzilmalarni yaratish uchun ham ishlatilishi mumkin. kod>. Shablon sinflari C++ tilining kuchli xususiyati bo‘lib, ulardan juda umumiy va qayta foydalanish mumkin bo‘lgan kod yozish uchun foydalanish mumkin.

Download 19 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling