Funksiyasi kabi, get funksiyasi


Download 446.14 Kb.
bet11/23
Sana09.01.2023
Hajmi446.14 Kb.
#1085802
1   ...   7   8   9   10   11   12   13   14   ...   23
Bog'liq
Dasturlash Yakuniy javoblari (2)

friend funksiyalar va friend sinflar. (boshqa sinfdan private boʻlimiga murojaat);

Eng muhim, lekin ayni paytda siz uchun eng chalkash narsa bu do'st funktsiyasining ta'rifidir. Doʻst funksiyasi sinf aʼzosi boʻlmagan, lekin yoki maydonlarida eʼlon qilingan sinf aʼzolariga kirish huquqiga ega funksiyadir privateprotected. Ushbu ta'rifning mohiyatini uzoq vaqt davomida o'rganmang, balki keyingi xatboshiga o'ting. Va'da qilamanki, maqolani o'qib chiqqandan so'ng siz ushbu ta'rifga qaytasiz va sizga quyidagi fikr keladi: "Ha, shunday! Bu erda hamma narsa aniq!
Keling, dasturchining asosiy mashg'ulotiga - amaliyotga tushaylik! Misolda biz quyidagilarni dasturlaymiz: Woman25do'stona funktsiyalar va oddiy sinf usullaridan foydalangan holda ob'ekt (nomi va vazni) haqidagi ma'lumotlarni oladigan va ularni ekranda ko'rsatadigan sinf yaratamiz. Usullar va friendfunktsiyalar shunga o'xshash harakatlarni bajaradi. Bu misol ayniqsa foydalidir - do'st funktsiyalarini e'lon qilish va ta'riflashdagi farqlarni oddiy sinf usullaridan ko'rishingiz mumkin. Qabul qilingan ma'lumotlarga asoslanib, dastur foydalanuvchiga uning vaznini qanday sozlash bo'yicha maslahat beradi. 
Do'st-funksiyalari ham, sinf usullari ham o'z vazifalarini bajara oldilar va biz ularning e'lonlari va ta'riflaridagi farqlarni ko'rdik. Shuningdek, biz sinf destruktori kutilganidek 3 marta ishlaganini ko'rdik (ya'ni har bir yaratilgan ob'ekt yo'q qilinganda). Agar sizda savol bo'lsa: "Aslida, sinf usullari baribir yaxshi ishlasa, bularning barchasi nima uchun?" - bu yaxshi! Javob: “Tasavvur qiling-a, bizda yana o'nlab sinflar bor. Masalan Girl6_7, Girl8_9, va hokazo, do'stona funktsiyalardan foydalangan holda, biz har bir sinf uchun va Man25belgilashimiz shart emas setget- usullari. Bu bizning dasturimizda ular qisqa! Va agar ular 20-30 qatorni olishsa? Aks holda, sinflardan birida metodni belgilash yoki hatto global funktsiyani belgilash va uning prototipini boshqa sinflarga do'stona funktsiya sifatida yozish (so'zdan foydalanish friend) kifoya qiladi. Biz ko'p vaqtni tejaymiz va kodimiz ancha qisqaradi."
Endi, har doimgidek, materialni birlashtirish uchun bir oz nazariya: 

  • Do'st funksiyasi sinfning istalgan maydonida joylashgan bo'lishi mumkin - private, publicyoki protected. U har qanday sharoitda privatesinfning -elementlariga kirish huquqiga ega bo'ladi va hatto o'zi bu sohada bo'lsa ham private(bizning misolimizda bo'lgani kabi), unga sinfdan tashqarida maxsus usullardan foydalanmasdan kirish mumkin.

  • Do'st funktsiyasini aniqlaganimizda, sinf a'zolari unga funktsiya parametrlari sifatida aniq o'tkazilishi kerak. U sinf a'zosi bo'lmagani uchun uthis .

  • Parametr sifatida ko'rsatgich yoki sinf ob'ektiga havola ham do'st funktsiyasiga uzatilishi kerak. Aks holda, u qaysi sinf ma'lumotlarini qabul qilishi va qayta ishlashi kerakligini ko'rmaydi.

  • Funktsiyadan bir nechta sinflarning do'sti sifatida foydalanish mumkin.

  • Do'st funktsiyalari oddiy funktsiyalar kabi deyiladi. Ya'ni, bu usul qo'llanilmaydi - Объект_класса.функция(). Chaqirilganda unga barcha kerakli parametrlarni kiritgandan so'ng, qaysi sinf va ob'ekt elementlari bilan ishlash kerakligini o'zi ko'radi.


  • Download 446.14 Kb.

    Do'stlaringiz bilan baham:
1   ...   7   8   9   10   11   12   13   14   ...   23




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