1.5. Ob’yektlarni qurish va ulardan foydalanish
Key Point. Ob’yekt funksiyalari va ma’lumotlariga ruxsat ob’yekt nomidan so`ng, nuqta (.) operatori orqali olinishi mumkin.
Konstruktor ob’yekt yaratilishida chaqiriladi. Argumentsiz konstruktorni qo`llagan holda ob’yekt yaratish sintaksisi:
ClassName objectName;
Masalan, quyidagi e’lon qilish argumentsiz Circle sinf konstruktorini chaqirish orqali circle1 nomli ob’yekt yaratadi:
Circle circle1;
Argumentga ega konstruktorni qo`llagan holda ob’yekt yaratish sintaksisi:
ClassName objectName(arguments);
Masalan, quyidagi e’lon qilish Circle sinf konstruktorini chaqirish orqali circle2 nomli, 5,5 radiusga ega ob’yekt yaratadi:
Circle circle2(5.5);
OYD tushunchalarida ob’yekt ma’lumotlar maydoni va funksiyalarga bog`liq. Yangidan yaratilgan ob’yekt xotiraga joylashtiriladi. Ob’yekt yaratilganidan so`ng, uning ma’lumotlariga ruxsat olish mumkin, uning funksiyalari esa nuqtali operator (.) orqali chaqiriladi. Shuningdek u, ob’yekt elementiga ruxsat operatori sifatida ham tanilgan:
objectName.dataField ссылается на поле данных в объекте.
objectName.function (arguments) вызывает функцию для объекта.
Masalan, circle1.radius circle1 dagi radiusga bog`laydi, circle1.getArea () esa, circcle1 uchun getArea funksiyasini chaqiradi. Funksiyalar ob’yektosti operatsiyalari sifatida chaqiriladi.
Radius ma’lumotlar maydoni nusxa a’zosi o`zgaruvchisi yoki shunchaki nusxa o`zgaruvchisi deyiladi. Shuning uchun u kkonkret bir nusxaga bog`liq. Shu sababli getArea funksiyasi nusxa a’zosi funksiyasi yoki nusxa funksiyasisi deb tushuniladi. Chunki biz uni faqat konkret nusxada chaqirishimiz mumkin. Chaqirilayotgan nusxa funksiyasi uchun ob’yekt – chaqiriluvchi ob’yekt deb nomlanadi.
Eslatma. Foydalanuvchi sinfini aniqlayotganingizda, sinf nomida har bir so`zning birinchi harfidan foydalaning. Masalan: Circle, Rectangle va Desk – sinf nomlari. C++ kutubxonasidagi sinflar nomlari quyi registrda nomlangan. Ob’yektlar o`zgaruvchi sifatida nomlangan.
Sinflar va ob’yektlar haqidagi quyidagi bandlar diqqatni jamlashga xizmat qiladi:
O`zgaruvchilarni aniqlash uchun sodda ma’lumot turlaridan foydalanish mumkin. Shuningdek, ob’yekt nomini e’lon qilishda sinf nomidan foydalanish ham mumkin. Shu o`rinda, bu borada sinf ma’lumot tipi hisoblanadi.
C++ da biz bir ob’yekt tarkibidan boshqasiga nusxa olish uchun “=” o`zlashtirish operatoridan foydalanishimiz mumkin. Jimlik qoidasiga ko`ra, bitta ob’yektning har bir ma’lumotlar maydoni boshqa bir ob’yektdagi uning analogiga (o`xshashiga) nusxalanadi. Masalan,
circle2 = circle1;
circle1 dan circle2 ga radiusning nusxalanishi.
Ob’yekt nomlari massiv nomlariga o`xshaydi. Faqatgina ob’yekt nomi e’lon qilinganida u ob’yektni taqdim etadi. Boshqa bir ob’yektni taqdim qilish uchun uni qayta tayinlash mumkin emas. Bunda ob’yekt tarkibini o`zgartirish mumkin bo`lgan taqdirda ham, ob’yekt nomi o`zgarmas sanaladi. Ob’yekt tarkibidagi har bir elementni nusxalash mumkin, ammo uning nomini o`zgartirib bo`lmaydi.
Ob’yekt ma’lumotlardan tashkil topgan va funksiyalarnichaqirishi mumkin. Bu sizda ob’yekt anchayin katta ekan degan tasavvur uyg`otishi mumkin. Hech ham unday emas. Ma’lumotlar ob’yektda fizik ko`rinishda saqlanadi, funksiyalar esa – yo`q. Ko`pchilik funksiyalar bitta ob’yektning barcha elementlari uchun umumiy hisoblanadi, kompilyator birgalikda foydalanish uchun faqatgina bitta nusxani yaratadi. sizeof funksiyasidan foydalangan holda, ob’yektning fizik o`lchamini aniqlash mumkin. Masalan keyingi kod circle1 va circle2 ob’yektlarning o`lchamlarinni ko`rsatadi. Ularning o`lchami 8 ga teng va shuning uchun xotiradan 8 bayt olish maqsadida radius maydon tipi –
Do'stlaringiz bilan baham: |