Ob'ektga yo'naltirilgan dasturiy tushunchalarni 6 yoshli bolaga qanday tushuntirish kerak

Bir xil tugmachadagi savollarni ish suhbatlarida qanday qilib qayta-qayta berishlarini payqadingizmi?

Men nimani nazarda tutayotganimni bilasiz.

Masalan:

Besh yildan keyin o'zingizni qaerda ko'rasiz?

yoki undan ham yomoni:

Sizning eng katta zaifligingiz deb nimani hisoblaysiz?

Uf ... menga tanaffus bering. Men bu savolga javob berishni juda zaif deb hisoblayman! Baribir, mening fikrim emas.

Bu kabi muhim savollar qanchalik muhim bo'lmasin, ular juda muhim, chunki ular siz haqingizda ma'lumot berishadi. Sizning hozirgi holatingiz, munosabatingiz, nuqtai nazaringiz.

Javob berayotganda ehtiyot bo'lishingiz kerak, chunki keyinchalik nimadan afsuslanganingizni bilib olishingiz mumkin.

Bugun men dasturlash olamida shunga o'xshash savol haqida gaplashmoqchiman:

Ob'ektga yo'naltirilgan dasturlashning asosiy printsiplari qanday?

Men ushbu savolning ikkala tomonida edim. Bu juda tez-tez so'raladigan mavzulardan biri bo'lib, o'zingizni bilishga imkon berolmaysiz.

Odatda, yosh va kirish darajasidagi dasturchilar bunga javob berishlari kerak. Chunki suhbatdoshga uchta narsani aytib berishning oson yo'li:

  1. Nomzod ushbu suhbatga tayyorgarlik ko'rdimi?
    Agar javobni darhol eshitsangiz, bonus ballari - bu jiddiy yondashuvni ko'rsatadi.
  2. Nomzod mashg'ulot bosqichidan o'tganmi?
    Obyektga yo'naltirilgan dasturlash (OOP) tamoyillarini tushunish, siz nusxa ko'chirish va darslikdan nusxa ko'chirishni boshdan kechirganingizni ko'rsatadi - siz allaqachon narsalarni yuqoriroq nuqtai nazar bilan ko'rasiz.
  3. Nomzodning tushunchasi chuqurmi yoki sayozmi?
    Ushbu savolga berilgan vakolat darajasi ko'pincha boshqa fanlar bo'yicha bilim darajasiga teng keladi. Menga ishoning.
Kirish savollarini ishlab chiquvchisi ushbu savolni yopishgandan keyin qanday ko'rinishga ega!

Ob'ektga yo'naltirilgan dasturlashning to'rtta printsipi - bu inkapsulatsiya, abstraksiya, meros va polimorfizm.

Ushbu so'zlar yosh dasturchi uchun dahshatli tuyulishi mumkin. Va Vikipediyadagi murakkab, haddan tashqari uzoq tushuntirishlar ba'zida chalkashlikni kuchaytiradi.

Shuning uchun men ushbu tushunchalarning har biriga sodda, qisqa va aniq tushuntirish bermoqchiman. Bu siz bolaga tushuntirgan narsangiz kabi ko'rinishi mumkin, ammo men intervyu o'tkazayotganda bu javoblarni eshitishni juda xohlardim.

Enkapsulatsiya

Dasturimiz bor deylik. Dasturda belgilangan qoidalarga muvofiq, bir-biri bilan aloqa qiladigan bir nechta mantiqiy ob'ektlar mavjud.

Har bir ob'ekt o'z holatini sinf ichida saqlab turganda, inkapsulyatsiyaga erishiladi. Boshqa ob'ektlar ushbu holatga bevosita kirish huquqiga ega emas. Buning o'rniga, ular faqat jamoat funktsiyalari ro'yxati - usullar deb atashlari mumkin.

Shunday qilib, ob'ekt o'z holatini usullar bilan boshqaradi - va aniq ruxsat berilmasa, boshqa hech qanday sinf unga tegishi mumkin emas. Agar siz ob'ekt bilan aloqa qilmoqchi bo'lsangiz, taqdim etilgan usullardan foydalanishingiz kerak. Ammo (sukut bo'yicha) siz holatni o'zgartira olmaysiz.

Aytaylik, biz kichkina Sims o'yinini qurmoqdamiz. Odamlar bor va mushuk bor. Ular bir-biri bilan aloqa qilishadi. Biz inkapsulatsiyani qo'llamoqchimiz, shuning uchun barcha "mushuk" mantiqlarini mushuklar sinfiga singdiramiz. Bu quyidagicha ko'rinishi mumkin:

Siz mushukni boqishingiz mumkin. Ammo siz mushukning ochligini to'g'ridan-to'g'ri o'zgartira olmaysiz.

Bu erda mushukning "holati" bu o'zgaruvchan kayfiyat, ochlik va energiya. Bundan tashqari, xususiy usul meow () mavjud. U xohlagan paytda qo'ng'iroq qilishi mumkin, boshqa sinflar qachon mushukni qachon meva qilishini aytolmaydilar.

Ular qila oladigan narsalar umumiy usullarda uxlash (), o'ynash () va oziqlantirish () orqali aniqlanadi. Ularning har biri qandaydir tarzda ichki holatni o'zgartiradi va meow () ni ishlatishi mumkin. Shunday qilib, xususiy davlat va jamoat usullari o'rtasida bog'lanish amalga oshiriladi.

Bu kapsülasyon.

Xulosa

Abstraktsiyani kapsülasyonun tabiiy kengaytmasi deb hisoblash mumkin.

Ob'ektga yo'naltirilgan dizaynda dasturlar ko'pincha juda katta. Va alohida ob'ektlar bir-biri bilan juda ko'p aloqa qilishadi. Shunday qilib, yillar davomida shunday katta kod bazasini saqlab turish juda qiyin.

Abstraktsiya - bu muammoni engillashtirishga qaratilgan tushuncha.

Abstraktsiyani qo'llash har bir ob'ekt faqat yuqori darajadagi mexanizmni ishlatishi kerakligini anglatadi.

Ushbu mexanizm amalga oshirishning ichki tafsilotlarini yashirishi kerak. U faqat boshqa ob'ektlar uchun tegishli bo'lgan operatsiyalarni aniqlashi kerak.

O'ylab ko'ring - qahva mashinasi. U juda ko'p narsalarni qiladi va kaput ostidagi noaniq shovqinlarni keltirib chiqaradi. Buning uchun faqat qahva ichish va bitta tugmani bosish kerak.

Tercihen, ushbu mexanizmni ishlatish oson va vaqt o'tishi bilan kamdan-kam hollarda o'zgarishi kerak. Buni har qanday boshqa sinf qanday ishlashini "bilmasdan" chaqira oladigan ommaviy usullarning kichik to'plami deb o'ylang.

Haqiqiy mavhumlikning yana bir misoli?
Telefoningizdan qanday foydalanayotganingizni o'ylab ko'ring:

Uyali telefonlar juda murakkab. Ammo ulardan foydalanish oddiy.

Siz telefoningiz bilan bir nechta tugmachalardan foydalangan holda o'zaro aloqa o'rnatasiz. Kaput ostida nima bo'lyapti? Bilishingiz shart emas - amalga oshirish tafsilotlari yashiringan. Siz faqat harakatlarning qisqa to'plamini bilishingiz kerak.

Amalga oshirishdagi o'zgarishlar - masalan, dasturiy ta'minotni yangilash - siz foydalanadigan abstraktsiyaga kamdan-kam ta'sir qiladi.

Meros olish

OK, biz kapsülasyon va abstraktsiya bizga katta kodlar bazasini rivojlantirish va saqlashga qanday yordam berishini ko'rdik.

Ammo OOP dizaynidagi yana bir keng tarqalgan muammo nima ekanligini bilasizmi?

Ob'ektlar ko'pincha juda o'xshash. Ular umumiy mantiqqa ega. Ammo ular umuman bir xil emas. Ug…

Xo'sh, qanday qilib umumiy mantiqdan qayta foydalanamiz va noyob mantiqni alohida sinfga ajratamiz? Bunga erishishning bir usuli - bu meros.

Bu siz boshqa (ota-ona) sinfdan kelib chiqib (bola) sinf yaratishingizni anglatadi. Shu tarzda, biz ierarxiyani shakllantiramiz.

Bolalar klassi ota-ona sinfining (umumiy qism) barcha sohalari va usullarini qayta ishlatadi va o'z (noyob qism) ni amalga oshirishi mumkin.

Masalan:

Xususiy o'qituvchi - bu o'qituvchining bir turi. Va har qanday o'qituvchi - bu Shaxsning turi.

Agar bizning dasturimizda davlat va xususiy o'qituvchilarni, shuningdek talabalar kabi boshqa turdagi odamlarni boshqarish kerak bo'lsa, biz ushbu sinf ierarxiyasini amalga oshirishimiz mumkin.

Shunday qilib, har bir sinf ota-onalar sinflari bilan umumiy mantiqdan foydalanishda faqat unga zarur bo'lgan narsalarni qo'shadi.

Polimorfizm

Biz eng murakkab so'zga egamiz! Polimorfizm yunon tilida "ko'plab shakllar" degan ma'noni anglatadi.

Shunday qilib, biz allaqachon merosning kuchini bilamiz va undan xursandchilik bilan foydalanamiz. Ammo bu muammo yuzaga keladi.

Aytaylik, bizda ota-onalar sinfi va undan meros qolgan bir nechta bolalar sinflari bor. Ba'zan biz ushbu sinflarning barcha aralashmasini o'z ichiga olgan to'plamdan foydalanishni xohlaymiz - masalan, ro'yxat. Yoki bizda ota-onalar uchun qo'llaniladigan usul mavjud - ammo biz buni bolalar uchun ham ishlatishni xohlaymiz.

Buni polimorfizm yordamida hal qilish mumkin.

Oddiy qilib aytganda, polimorfizm sinfni xuddi ota-onasiga o'xshab ishlatishga imkon beradi, shuning uchun aralashtirish turlarida chalkashliklar bo'lmaydi. Ammo har bir bolalar sinfi o'z uslublarini ular kabi saqlaydi.

Odatda, bu qayta ishlatiladigan (ota-ona) interfeysni aniqlash orqali ro'y beradi. Unda keng tarqalgan usullar to'plami keltirilgan. Keyin har bir bolalar sinfida ushbu usullarning o'ziga xos versiyasi qo'llaniladi.

To'plam (masalan, ro'yxat) yoki usul har qanday vaqtda ota-onadan (umumiy uslublar bayon qilingan) misolni kutsa, til qaysi bola o'tganidan qat'i nazar, umumiy usulning to'g'ri bajarilishini baholashga g'amxo'rlik qiladi.

Geometrik raqamlarni amalga oshirish rasmlarini ko'rib chiqing. Ular sirt maydoni va perimetrini hisoblash uchun umumiy interfeysdan foydalanadilar:

Uchburchak, aylana va to'rtburchaklar endi bitta to'plamda ishlatilishi mumkin

Ushbu uchta rasmga ota-ona interfeysi meros bo'lib, aralash uchburchaklar, doiralar va to'rtburchaklar ro'yxatini tuzishga imkon beradi. Va ularga xuddi shu turdagi ob'ekt kabi munosabatda bo'ling.

Keyin, agar ushbu ro'yxat element uchun sirtni hisoblashga harakat qilsa, to'g'ri usul topiladi va bajariladi. Agar element uchburchak bo'lsa, uchburchakning CalculateSurface () deyiladi. Agar u aylana bo'lsa, unda cirlce ning CalculateSurface () deb nomlanadi. Va hokazo.

Agar sizda rasm bilan uning parametridan foydalangan holda ishlaydigan funktsiya bo'lsa, uni uch marta - uchburchak, aylana va to'rtburchaklar uchun bir marta belgilashingiz shart emas.

Siz uni bir marta aniqlab, Shaklni dalil sifatida qabul qilishingiz mumkin. Uchburchak, doira yoki to'rtburchaklar kesishmasidan qat'i nazar - ular CalculeParamter () ni ishlatishda ularning turiga ahamiyat berilmaydi.

Bu yordam berdi deb umid qilaman. Siz aynan shu tushuntirishlarni ish joyidagi suhbatlarda ishlatishingiz mumkin.

Agar siz hali ham tushunish qiyin bo'lgan narsani ko'rsangiz - quyidagi izohlarda so'rashdan tortinmang.

Keyingisi nima?

Suhbat savollari klassiklaridan biriga javob berishga tayyor bo'lish juda yaxshi, lekin ba'zida siz hech qachon suhbatga chaqirilmaysiz.

Keyinchalik, ish beruvchilar yosh ishlab chiqaruvchini nimani ko'rishni xohlashlari va ish ovi paytida odamlardan qanday ajralib turishlari haqida to'xtalaman.

Yangiliklarni kuzatib boring, xabardor bo'lib boring; Biz bilan qoling.

Sizga o'qish yoqdimi? Medium mening mamlakatimda sheriklik dasturini taklif qilmaydi ― shuning uchun men odamlardan o'rniga menga qahva sotib olishlarini so'rayman.