Tarkibi, merosxo'rligi va topshirilishi
Ob'ektlar o'zlarining o'zgaruvchan nusxalarida boshqa moslamalarni o'z ichiga olishi mumkin; bu sifatida tanilgan ob'ekt tarkibi. Masalan, "Employee" sinfidagi ob'ekt "first_name" va "position" kabi o'zlarining instansiya o'zgaruvchilaridan tashqari (to'g'ridan-to'g'ri yoki ko'rsatgich orqali) manzil sinfidagi ob'ektni o'z ichiga olishi mumkin. Ob'ekt tarkibi "bor-a" munosabatlarini ifodalash uchun ishlatiladi: har bir xodimning manzili bor, shuning uchun har bir Xodim ob'ekti manzil ob'ektini saqlash joyiga (to'g'ridan-to'g'ri o'z ichiga joylashtirilgan yoki ko'rsatgich orqali murojaat qilingan alohida joyda) kirish huquqiga ega. .
Sinflarni qo'llab-quvvatlovchi tillar deyarli har doim qo'llab-quvvatlaydi meros olish. Bu sinflarni "tip-tip" munosabatlarini ifodalovchi ierarxiya bo'yicha joylashtirishga imkon beradi. Masalan, sinf xodimi sinf shaxsidan meros qilib olishi mumkin. Ota-onalar uchun mavjud bo'lgan barcha ma'lumotlar va usullar xuddi shu nomlar bilan bolalar sinfida paydo bo'ladi. Masalan, Person Person "first_name" va "last_name" o'zgaruvchilarini "make_full_name ()" usuli bilan belgilashi mumkin. Ular "Xodimlar" sinfida mavjud bo'lib, ular "lavozim" va "ish haqi" o'zgaruvchilarini qo'shishi mumkin. Ushbu uslub haqiqiy dunyoviy munosabatlarni intuitiv tarzda aks ettirishdan tashqari, xuddi shu protsedura va ma'lumotlar ta'riflarini osonlikcha qayta ishlatishga imkon beradi. Ma'lumotlar bazasi jadvallari va dasturiy dasturlardan foydalanish o'rniga, ishlab chiquvchi foydalanuvchi ko'proq tanish bo'lgan ob'ektlardan foydalanadi: ularning amaliy domenidagi ob'ektlar.[9]
Subklasslar superklasslar tomonidan belgilangan usullarni bekor qilishi mumkin. Ko'p meros ba'zi tillarda ruxsat berilgan, ammo bu bekor qilishni bekor qilishni murakkablashtirishi mumkin. Ba'zi tillar uchun maxsus yordam mavjud aralashmalar, ammo bir nechta merosga ega bo'lgan har qanday tilda, mixin shunchaki, bu turdagi munosabatlarni anglatmaydigan sinfdir. Aralashmalar odatda bir xil usullarni bir nechta sinflarga qo'shish uchun ishlatiladi. Masalan, UnicodeConversionMixin sinfi FileReader sinfiga va WebPageScraper sinfiga qo'shilganda unicode_to_ascii () usulini taqdim etishi mumkin, bu umumiy ota-onani o'z ichiga olmaydi.
Mavhum darslar ob'ektlarga asoslanib bo'lmaydi; ular faqatgina boshqa "konkret" sinflarga meros qilib olish uchun mavjuddir. Java-da final kalit so'z yordamida sinfning subklassga tushishini oldini olish uchun foydalanish mumkin.
Ta'limoti meros ustida tarkibi meros o'rniga kompozitsiyadan foydalangan holda munosabatlarga ega bo'lgan advokatlar. Misol uchun, Class Person-dan meros olish o'rniga, Class Employee har bir Employee ob'ektiga ichki Person ob'ektini berishi mumkin edi, agar u Person Person sinfida ko'plab ommaviy atributlar yoki usullar mavjud bo'lsa ham tashqi koddan yashirish imkoniyati mavjud. Ba'zi tillar, masalan Boring merosni umuman qo'llab-quvvatlamang.
"ochiq / yopiq printsip"sinflar va funktsiyalar" kengaytirilishi uchun ochiq bo'lishi kerak, ammo o'zgartirish uchun yopiq bo'lishi kerak ".
Delegatsiya merosga alternativa sifatida ishlatilishi mumkin bo'lgan yana bir til xususiyati.
Do'stlaringiz bilan baham: |