Sinflar uchun inline funksiyalarni yaratishning boshqa yo’li ham mavjud. Inline funksiyalarni sinf implementatsiyasida ham aniqlash mumkin. Misol uchun, f2 funksiyani inline kalit so’zi yordamida quyidagicha inline funksiyaga aylantiramiz:
inline double A::f2()
{
//Son qaytarish
}
4. Ma’lumot maydoni inkapsulyatsiyasi
Ma’lumot maydonini yopish (private) ma’lumotni himoyalaydi va sinfga qo’shimchalar kiritishni osonlashtiradi.
Inkapsulyatsiyalashning muhimligiga ikki sabab:
Ma’lumotlarni o’zgarib qolishidan himoya qilish;
Sinfga qo’shimchalar qo’shish va xatoliklarni bartaraf qilishni osonlashtirish.
4. Ma’lumot maydoni inkapsulyatsiyasi
Ma’lumot maydonini yopib qo’yish uchun private kalit so’zidan foydalaniladi. Bu jarayon ma’lumot maydoni inkapsulyatsiyasi deyiladi. Circle sinfida ma’lumot maydonini yopish uchun quyidagicha o’zgarish kiritiladi:
4. Ma’lumot maydoni inkapsulyatsiyasi
Yopiq ma’lumot maydoniga sinfdan tashqarida ob’yektlar orqali murojaat qilishniing imkoni yo’q. Ammo tez-tez mijoz uchun ma’lumot maydonini o’zgartirib turishga to’g’ri keladi. Yopiq ma’lumot maydoniga murojaat qilish uchun get funksiyadan foydalanish maqsadga muvofiq. get funksiya maydon qiymatini qaytaradi. Maydonning qiymatini o’zgartirish uchun esa set funksiyadan foydalanish lozim. set funksiya maydonga yangi qiymat o’rnatib beradi.
Get funksiya aksessor(accessor), set funksiya esa mutetor(mutator) deyiladi.
4. Ma’lumot maydoni inkapsulyatsiyasi
get funksiya quyidagicha aniqlanadi:
qaytuvchiTur getMaydonNomi()
Agar qaytuvchiTur bool turida bo’lsa, u holda get funksiya quyidagicha aniqlanish lozim:
bool isMaydonNomi()
set funksiya esa quyidagicha aniqlanadi:
void setMaydonNomi(malumotTuri maydonQiymati)
Listing 9.9 CircleWithPrivateDataFields.h
Listing 9.10 CircleWithPrivateDataFields.cpp
Listing 9.11 TestCircleWithPrivateDataFields.cpp
O’zgaruvchilar joylashuvi
a, b va c holatlar bir xil.
Sinf abstraksiyasi va inkapsulyatsiya
Sinf abstraksiyasi bu – sinf foydalanilishidan sinf implementatsiyasini ajratishdir. Implementatsiya jarayonlari foydalanuvchidan inkapsulyatsiyalanadi va yashiriladi. Bu jarayon sinf inkapsulyatsiyasi deyiladi.
Olingan xulosalar
Sinf aniqlanishi va uning implementatsiyasini alohida fayllarga yozish mumkin.
#ifndef direktivasi qo’shish himoyasi deyiladi.
Funksiya sinf aniqlanishida implementatsiya qilib ketilsa, u inline funksiya hisoblanadi.
public funksiya yoki ma’lumot kodning ixtiyoriy qismida ko’rinarli bo’ladi.
private funksiya yoki ma’lumot faqat sinfning ichida mavjud bo’ladi.
get yoki set funksiyalari orqali mijozlarga ma’lumotni ko’rishlariga imkon yaratib berishingiz mumkin.
Olingan xulosalar
7. O’z navbatida, get funksiya getter( yoki accessor) va set funksiya setter( yoki mutator) deb ham yuritiladi.
8. get funksiyaning ko’rinishi
qaytuvchiTur getMaydonNomi()
9. Agar qaytuvchiTur bool turida bo’lsa, u holda get funksiya quyidagicha aniqlanadi: