Ob'ektga yo'naltirilgan dasturlashtirilgan pasayish xarakterlanadi. Ob'ektga yo'naltirilgan dasturlash (OOP). OOP va kichik sinfning gevşeme printsipi

Hammaga salom.

OVPga bag'ishlangan veb-saytdagi maqolalar haftaligi. Hikoyaning qolgan qismi menda juda ko'p his-tuyg'ularni va afsuski, undan ham chirigan his-tuyg'ularni uyg'otdi. Men endi maqomga loyiq emas edim. Nega? Chunki u har xil salbiy his-tuyg'ularni etkazadi va ORP rivojlanishiga hissa qo'shadi. Tuyg'ular odamlar ORPning to'liq kuchini to'liq tushunmasliklari va ORPning yomonligidan hammani egallashni xohlashlari haqiqatidan mahrum. Eng yomoni shundaki, odamlar tinglashni boshlaydilar va hech qanday foydali narsa bo'lmaydi deb o'ylaydigan ochko'z dalillarni tashlaydilar. Menimcha, bunday statistik ma'lumotlar talabalar uchun men ilgari bergan narsadan ko'ra ko'proq kontrendikedir. :)

Ko'raylikchi.

ORP nima? OOP - bu va GO dasturlash va dizayn. Biri ikkinchisiz, hamma narsadan ko'ra arzimas narsa. Dasturiy mahsulotlarni loyihalash/dasturlash uchun ORP yaratildi. Bu modellashtirish jarayonlari uchun emas. Protokollarni loyihalash uchun emas, balki dasturiy mahsulotlar va ularni amalga oshirish uchun. Tizimni soddalashtirish uchun protokol va biznes jarayonini hozir qanday amalga oshirish kerak.

Agar siz OOPni vikorizatsiya qilishni boshlasangiz, qilishingiz kerak bo'lgan birinchi narsa - fikrlash ob'ektini vikoristlashni boshlashdir. Eng katta muammo OVP ekanligini allaqachon aytgan bo'lsak, ob'ektiv fikrlashni o'rganish yanada qiyinroq. Va oldin yakomaga jarayonini o'qish juda muhim (joy turi, konstruktor, fasadga o'xshashlik bilan GoF ham bunga yordam beradi). Vikorist ob'ekt dizayni bilan siz osongina katlama tizimlarini loyihalashingiz mumkin.Vikoristning fikrlash ob'ekti bilan siz dizaynni osongina loyihalashingiz mumkin (dizayn/dasturlash bir xil bo'lishi muhim, chunki printsipial jihatdan mutlaqo -yaku loyihalash mumkin) ob'ektlar bilan ishlash va ular orasidagi o'zaro ta'sir. Tobto. Ob'ektiv fikrsiz OOP sizga OOPning to'liq quvvatidan foydalanishni boshlashga imkon bermaydi.

Keling, oldinga boraylik. Demak, maqsadlarimizga erishishimiz kerak bo'lgan ob'ektlarning mavhumligini bilish uchun ob'ektiv fikrlash biz uchun muhimdir. Analogiya va abstraktsiyalar olib tashlanganidan so'ng, biz tizimda nima borligini tezda tushunishimizga imkon beruvchi aniqroq rasmga egamiz. Va bu erda biz meros va polimorfizm haqida o'ylashni boshlaymiz. Ushbu ikkita vosita kodni takrorlamasdan tizimni qo'lda masshtablash uchun zarurdir. Ammo bu mexanizmlarning kuchi siz qanchalik mavhumlik va o'xshashliklarga ega bo'lganingizga bog'liq. Agar sizning ob'ekt mentalitetingiz ob'ektlarning qo'lda parchalanishini shakllantirishga imkon bermasa, u holda parchalanish va polimorfizm sizga yordam bermaydi. Tobto. Parchalanish va polimorfizm tizimni masshtablash muammosini hal qiluvchi vositalardan boshqa narsa emas.

Ushbu vositalar qanday ishlaydi? Bu bug'langan sholg'omga qaraganda oddiyroq, chunki hamma narsa bizga tanish bo'lgan nutqlarga asoslanadi. Men hayotdan oddiy misollarni yaxshi ko'raman:

1. Spadkuvannya. Men nonvoyman. Ham elektr, ham gaz. Sizning vazifangiz pishloqni teri pechida novvoy sifatida tayyorlash jarayonini modellashtirishdir. Eng muhimi, bizda kodning ko'p takrorlanishi bo'ladi, chunki uni pechga o'tkazish jarayoni va pechlarning o'zi ikkala pech uchun ham bir xil. Agar biz fikrlash ob'ektini yoqsak va qisqartirish vositasi haqida eslasak, biz uni taxminan boshida olib tashlaymiz (diagramma juda kichik, afsus):
Ê pích (mavhum pích). Xulq-atvor mavjud - haroratni yoqing, yoqing, oshiring va o'zgartiring, nimani, nimani va nimani qo'ying - pechda haroratni yoqing va o'chiring. Bu mavhum ob'ektni inkapsulyatsiya tamoyillariga rioya qilish uchun har qanday usulda muhim qo'llashdir (ularni amalga oshirishda men ularga rioya qilishim kerak). Men novvoyman, aniq novvoy Ivanman. Vin mavhum til bilan ishlashni biladi. Tobto. Haroratni tekshiring, isitgichni yoqing va hokazo. o'zingga kelding. Ishonchning kuchi shundaki, biz Ivanimizni elektr yoki gaz pechlari uchun teri pechlari uchun qayta yozish imkoniyatiga ega bo'lmaymiz. Menimcha, hamma uchun tushunarli, nima uchun? Ma'lum bo'lishicha, ostosovaniye vositasi to'g'ri.
2. Polimorfizm. Hatto pechlar ham turli yo'llar bilan ishlaydi. Gaz gazni, elektr elektrni yoqadi. Vikorist va polimorfizm, biz mavhum pechning zichlagichlarida xatti-harakatlarni osongina o'zgartiramiz.
3. Inkapsulyatsiya. Inkapsulyatsiyaning asosiy afzalligi shundaki, men pechning o'rtasida nima bo'layotganini bilishim shart emas. Aytaylik, men pechkani yoqish usulini emas, balki haqiqiy qiymatga yoqilgan quvvatning o'zgarishini bosmayman. Bu vaqtda unga nima bo'ladi? Muzokaralarsiz inkapsulyatsiya printsipi sifatida men sizga yotoqxonada yashashni boshlashingizni aytaman, chunki Men sizga aytaman. Tobto. Nonvoy nonvoyning yotoqxonada nima qilishini biladi, u nonvoyning qanday ishlashini biladi. Yoki, masalan, pechning haroratini istalgan vaqtda pastroq yoki yuqoriroq o'rnatolmaymiz. Agar biz inkapsulyatsiya printsipiga rioya qilmasak, u holda pechka haroratni tekshirishni aytishimiz kerak edi, nima bo'ladi? Tobto. Nonvoy endi pechlar haqida ko'p narsalarni biladi. Qabul qiluvchilar va sozlagichlar o'zgarishlarni osongina amalga oshirishimizga yordam beradigan xususiyatlardir. Bo'ldi shu. Hetera va setter bo'sh bo'lganligi sababli, bu mening teng abstraktsiyamda talab qilinishini anglatadi. Qabul qiluvchilar va sozlashchilar inkapsulyatsiyani amalga oshirishga ta'sir qila olmaydi; dizayner/dasturchi inkapsulyatsiyani noto'g'ri amalga oshirishi mumkin.

Tanlangan abstraktsiya kimning qo'llanilishida yaxshi. Har kim o'z biznesi bilan shug'ullanadi, FLOning uchta ustuni qo'llaridan kelganini qilmoqdalar. Ale varto meni iflos abstraksiyani tanlang, chunki haqiqiy muammo boshlanadi. Va bu erda siz to'g'ri mavhumlikni tanlaganingizni va parchalanishingiz siz boradigan yo'nalishda to'g'ri yoki yo'qligini tushunishga yordam beradigan farqlash standartlari (SOLID).

Ular, shuningdek, OOP ning yana bir ustuni sifatida mavhumlikni qo'shishni boshladilar. Menimcha, bu shvedcha haqiqat, lekin undan ham ko'proq KEP hidi bor.

Menga yozish haqida allaqachon aytilgan. O'ng tomonda, turg'unlik davrida siz bilan ishlaydigan odam uchun kundalik muammolar yo'q. Mavhumlikning hozirgi darajasida siz uchun syujetni vikorizatsiya qilish muhim bo'lganidek, siz uchun buni qilish muhim emas. Pishirishni to'xtatasizmi? Siz o'z orzularingizni yaratyapsizmi? Bo‘ldi... Nimaga bu dinamik tipifikatsiya meni tushunmayapti, deb qayg‘urasiz. Siz pishirmoqchimisiz? Buni qabul qilish. Sizga elektr kerakmi? Xo'sh, qara, endi benzin olmaysiz.

Menga topshirilgan statistik ma'lumotlarga topshirilgan vazifa doirasida tegishli mavhumlik va o'xshatishsiz kiritilgan boshqa butalar. Spek.

DTO uchun Okremo. DTO - zanjir naqsh. Bu sizga ma'lumotni boshqa to'pga, boshqa tizimga, qisqasi, uni qaerga o'tkazishga imkon beradigan ob'ektni yaratishga imkon beradi. Nega men unga ob'ekt sifatida qaray olmayman, men uchun sir bo'lib qoldi. Ulug'vorlik qayerda? Konteynerda nima bor? Xo'sh?? Bu ob'ekt mavhumlikning ma'lum darajasida men ko'rib chiqqan ob'ekt modeli doirasida, bu erda DTO ob'ekt va parchalanishning bir qismidir.

Til haqida nima deyish ham aniq emas. Men dasturiy ta'minot, dasturiy ta'minot va tildan mustaqil ravishda ob'ektga asoslangan yondashuvni loyihalashtira olaman. Agar u ob'ektlar bilan ishlash uchun asosiy vositalarni amalga oshirmasa, men ishlab chiqqan tizimni amalga oshirish qiyin yoki imkonsiz bo'ladi.

Bundan tashqari, nutq harakatlarini ob'ektlarning tashqi ko'rinishi va ularning o'zaro munosabatlaridan aniqlash mumkin emasdek tuyuladi. Men nima bo'lganiga hayronman. Siz faqat to'g'ri mavhumlikni tanlashingiz kerak. Protokolni amalga oshirish, ma'lumotlar bazasiga kirish to'pi, ulanish plaginlari, vazifalar menejeri, biznes jarayoni, biznes jarayonlarini loyihalash tizimi va boshqalar. ob'ekt sifatida osongina aniqlash mumkin bo'lgan hamma narsa va ularning o'zaro ta'siri. Hamma narsa ob'ektlar va ular orasidagi o'zaro ta'sir sifatida amalga oshirilishi mumkin. Yaxshi va yomon ko'pincha ob'ektiv fikr yuritish uchun ongingizdan tashqarida bo'ladi.

Qisqa bayoni; yakunida. Agar siz ORP kuchini tushunmasangiz, unda hamma narsani ko'rganingizdan so'ng, siz ob'ektiv fikrni rivojlantirishingiz kerak.

P.S. Oxirgi maqola oldidagi izohlarda men haqiqiy odamlarning shafqatsizligida juda uzoqqa bordim. Yana so'rayman.

Nega ko'pgina loyihalarda ob'ektga yo'naltirilgan dasturlash ustunlik qiladi? OOP ushbu murakkablik bilan kurashishning samarali usulini taklif qiladi. Dasturga yozma buyruqlar ketma-ketligi sifatida qarash o'rniga, u maxsus vakolatlarga ega bo'lgan ob'ektlar guruhini ifodalaydi va ular bilan harakatlarni bajaradi. Bu yanada aniq, ishonchli va oson bajariladigan qo'shimchalar yaratishdir.

Asosiy tamoyillar boshqa yondashuvlarda farqlar mavjudligi sababli shakllantirildi. Ular orasida ma'lumotlarga kirishning yo'qligi va o'zgarishlarni amalga oshirishga cheklovlar qo'yadigan ko'plab ulanishlar mavjud. ORP dasturlashtirilgan kabi afzalliklarga ega ekanligini tushunish uchun ularning ushbu sabablarni bilishi muhimdir.

Protsessual filmlar

C, Paskal, FORTRAN va shunga o'xshash tillar protsessualdir. Bu erda operator kompyuterga nima qilishni buyuradi: ma'lumotlarni o'chirish, raqamlarni qo'shish, oltiga bo'lish, natijani ko'rsatish. Mening protsessual qo'shimcham - ko'rsatmalar ro'yxati. Kichkina bo'lgani uchun boshqa tashkiliy tamoyilga (ko'pincha paradigma deb ataladi) ehtiyoj yo'q. Dasturchi ko'rsatmalar ro'yxatini yaratadi va kompyuter ularni saqlaydi.

Funktsiyaga bog'liq

Dasturlar kattalashgani sayin, ro'yxat og'irlashadi. Yuzlab ko'rsatmalarni bir joyga to'plamasdan kam odam tushuna oladi. Shu sababli, funksiya dasturlarni yaratuvchilari uchun yanada aqlliroq qilish usuliga aylandi. Boshqa tillarda xuddi shu tushunchani kichik dasturlar yoki protseduralar deb atash mumkin.

Dastur funktsiyalarga bo'lingan, ularning har biri aniq belgilangan interfeysga ega.

Protseduralarni bo'linish g'oyasi ularni modul deb ataladigan kattaroq ob'ektga guruhlash orqali kengaytirilishi mumkin, ammo printsip shunga o'xshash: ko'rsatmalar ro'yxatini tashkil etuvchi komponentlarni guruhlash.

Funktsiyalar va modullarga e'tibor ORP paydo bo'lishidan bir necha o'n yillar oldin temirdan oldingi paradigma bo'lgan tizimli dasturlashning tashqi toshlaridan biridir.

Strukturaviy dasturlash muammolari

Dasturlarning fragmentlari kattalashdi va tizimli dasturlash qiyinchiliklarga duch kela boshladi. Loyihalar ko'proq katlanadigan bo'ldi. Jadvallar buzilib ketayotgan edi. Ko'proq dasturchilar jalb qilindi. Katlanuvchanlik oshdi. Xarajatlar oshdi, jadval buzildi va qulash boshlandi.

Ushbu nosozliklar sabablarini tahlil qilish protsessual paradigmaning kamchiliklarini ko'rsatadi. Dasturlashda strukturaviy yondashuvlar qanchalik yaxshi amalga oshirilganidan qat'i nazar, ajoyib dasturlar nihoyatda murakkab bo'lib qoladi.

Protsessual til bilan bog'liq bu muammolarning sabablari nimada? Birinchidan, funktsiyalar global ma'lumotlarga kirish imkoniga ega bo'lmasligi mumkin. Boshqacha qilib aytganda, protseduralar va qadriyatlar bir-biriga bog'liq emas va haqiqiy dunyoni yomon modellashtirmaydi.

Ushbu muammolarni inventarizatsiya dasturi kontekstida ko'rib chiqish uchun ma'lumotlarning eng muhim global elementlaridan biri bu inventar birliklarining yig'indisidir. Yangi qiymat kiritish, uni ko'rsatish, o'zgartirish va h.k. uchun ularga turli funksiyalar kengaytirilishi mumkin.

Cheklanmagan kirish

Masalan, C tilida yozilgan dastur ikki turdagi ma'lumotlarga ega. Funktsiya o'rtasida mahalliy qo'ng'iroqlar va boshqa protseduralar ta'sir qilmaydi.

Ikki yoki undan ortiq funksiya bir xil ma'lumotlarga kirishni rad etish uchun javobgar bo'lsa, qolganlari global bo'lishi mumkin. Bu, masalan, sug'urta qilinishi kerak bo'lgan narsalar haqidagi ma'lumotlar. Global ma'lumotlar har qanday protsedura uchun mavjud bo'lishi mumkin.

Ajoyib dasturda ko'plab funktsiyalar va ko'plab global elementlar mavjud. Protsessual paradigma bilan bog'liq muammo shundaki, u ular o'rtasida yanada ko'proq potentsial aloqalarni yaratadi.

Bunday katta miqdordagi ulanishlar bir qator qiyinchiliklarni talab qiladi. Avvalo, bu dastur tuzilmasini murakkablashtiradi. Boshqacha qilib aytganda, o'zgarishlarni qiyinlashtiradi. Global ma'lumotlar elementini o'zgartirish unga kirishi mumkin bo'lgan barcha funktsiyalarni o'zgartirishi mumkin.

Masalan, dastur sug'urta qilinayotgan ob'ektning kodi 5 ta raqamdan emas, balki 12 raqamdan iborat bo'lishi kerakligiga ishonishni istaydi. Shuning uchun siz qisqa raqamdan uzunga o'tishingiz kerak. Endi kod bilan bog'liq funktsiyalar yangi format bilan ishlash uchun o'zgartirilishi mumkin.

Katta dasturda elementlar o'zgarganda, ularga qanday protseduralar kirishi mumkinligini aytish kerak. Biroq, siz tushunganingizdek, bu o'zgarish boshqa global ma'lumotlarning noto'g'ri ishlashiga olib kelishi mumkin. Hamma narsa bir-biriga bog'langan, shuning uchun bir joyda o'zgarish boshqa joyga olib keladi.

Haqiqiy dunyoni modellashtirish

Ikkinchisi protsessual paradigmaning eng muhim muammosi va u ma'lumotlarni qayta ishlash bilan bog'liq bo'lgan muammolar va dunyoda nutqni noto'g'ri modellashtirish funktsiyasidir. Bu erda biz odamlar va mashinalar kabi narsalar bilan shug'ullanishimiz mumkin. Hidlar ma'lumotlarda ham, funktsiyalarda ham o'xshash emas. Murakkab real ob'ektlar atributlari va xatti-harakatlariga ega.

Atributlar

Odamlar uchun atributlarga (ba'zan xarakteristikalar deb ataladi) misollar ko'zlarning rangi va o'rindiqning nomi, avtomobillar uchun - eshiklarning qalinligi va soni. Ma'lum bo'lishicha, real dunyoning atributlari dasturnikiga teng. Hidi ko'k (ko'z rangi) yoki eshiklar soni kabi o'ziga xos ma'nolarga ega.

Povedinka

Xulq-atvor - haqiqiy dunyo ob'ektlari har qanday oqimdan qo'rqadigan narsalar. Agar siz xo'jayiningizdan ish haqi oshishi haqida so'rasangiz, javob bir xil bo'ladi. Tomga bossangiz, mashina urilib keta boshlaydi. Vimovaning tishlari va xatti-harakatlari. Jarayon oldidan xatti-harakatlar o'xshash: ular buni qilishga, keyin buni qilishga chaqiradilar. Shunday qilib, bu funktsiyalar real dunyo ob'ektlarini samarali modellashtirmaydi.

Muammoni hal qilish

OOPdagi ob'ekt ma'lumotlar to'plami va funksiya sifatida taqdim etiladi. Faqat C++ a'zo funktsiyalari deb ataladigan protseduralar qiymatni o'chirishga imkon beradi. Ma'lumotlar olingan va o'zgarishlardan o'g'irlangan. Qiymatlar va funktsiyalar bir butunga jamlangan. Inkapsulyatsiya va saqlash GOMlarning tavsifidagi asosiy atamalardir.

Agar siz ma'lumotlarni o'zgartirishingiz kerak bo'lsa, ular bilan qaysi funktsiyalar o'zaro ta'sir qilishi aniq. Boshqa hech qanday protseduralar ularga kirishni rad eta olmaydi. Bu dasturlarni yozish, takomillashtirish va qo'llab-quvvatlashni osonlashtiradi.

Qo'shimcha bir-biri bilan o'zaro ta'sir qiluvchi bir nechta ob'ektlardan, jumladan, a'zo funktsiyalaridan iborat.

Bugungi kunda eng keng tarqalgan dasturlash C++ (plyus-plus) hisoblanadi. Java-da displeylar, shablonlar va bir nechta kombinatsiyalar kabi turli xil funktsiyalar mavjud bo'lib, ular uni C++ ga qaraganda kamroq qiyinlashtiradi va universal qiladi. C# hali ham C++ ning mashhurligi darajasida.

E'tibor bering, bu C++ a'zo funktsiyalari Smalltalk kabi ko'plab boshqa GOlarda usullar deb ataladi. Ushbu elementlar atributlar deb ataladi. Ogohlantirish uchun ob'ekt usulini bosing.

Analogiya

Siz kompaniya bo'linmalarining ob'ektlarini aniqlashingiz mumkin. Aksariyat tashkilotlarda harbiy xizmatchilar ish haqi tufayli bir kun shtatda ishlamaydi, qolgan qismini esa chakana savdo bilan shug‘ullanadi. Uning barcha xodimlari o'zlarining bog'lovchilariga ehtiyotkorlik bilan joylashtirilishini ta'minlash muhimdir. Bu eng so'nggi ma'lumotlar: ish haqi, sotish, bandlik profillari va boshqalar ko'rsatkichlari. Bo'limlardagi odamlar o'z ma'lumotlari bilan ishlaydi. Kompaniyaning bo'linishi, shu tarzda, uning faoliyatini nazorat qilishni osonlashtiradi va ma'lumotlarning yaxlitligini saqlaydi. Buxgalteriya hisobi shuni tasdiqlaydiki, agar siz hozirgi oilangizga to'lanadigan ish haqining umumiy miqdorini bilishingiz kerak bo'lsa, arxivlarni o'rganishingiz shart emas. Sizga kerak bo'lgan yagona narsa - ishonchli shaxsga eslatma yuborish, u kishi ma'lumotlarga kirish huquqiga ega bo'lguncha tekshiring va kerakli ma'lumotlarning tasdiqlanishini toping. Bu qoidalarga rioya qilishni va uchinchi tomon yetkazib berishning yo'qligini kafolatlaydi. Shunday qilib, FLOdagi ob'ektning o'zi hisobotning tashkil etilishini ta'minlaydi.

Shuni esda tutish kerakki, ob'ektga yo'naltirish robotlashtirilgan dasturning tafsilotlari bilan cheklanmaydi. Ko'pgina C++ iboralari C kabi protsessual bayonotlar bayonotlariga o'xshashdir. Aslida, C++ a'zo funktsiyalari C dagi funksiyalarga juda o'xshashdir. Faqat kengroq kontekst protsessual bayonot nima ekanligini yoki sub'ektga yo'naltirilganligini aniqlashga imkon beradi.

OOPdagi ob'ekt: ma'nosi

GO-mov-dagi standart dasturlashni ko'rib chiqayotganda, elektr ta'minotini boshqa funktsiyalar bilan almashtirganda, ob'ektlarga ulanishda muammo mavjud. OOP dizayni qo'shimchalarni ishlab chiqishni sezilarli darajada osonlashtiradi. Bu dasturiy ta'minot va real ob'ektlar o'rtasidagi o'xshashlik bilan bog'liq.

OVPda qanday nutqlar ob'ektga aylanadi? Quyida odatiy toifalar keltirilgan.

ORPdagi jismoniy ob'ekt:

  • ruhu oqim modellarida tashish;
  • sxemalarni loyihalash dasturlarida elektr elementlari;
  • iqtisodiy modelning qirralari;
  • Bu shamolni boshqarish tizimida ham shunday.

Koristuvach kompyuter yadrosining elementlari:

  • menyu;
  • vikna;
  • grafika (chiziq, to'rtburchak, rangli);
  • klaviatura, sichqoncha, printer, disk drayverlari.
  • pratsívniki;
  • talabalar;
  • mijozlar;
  • Sotuvchilar.
  • kitobning ko'rinishi;
  • o'ngda maxsus ofitser;
  • lug'at;
  • aholi punktlarining kengliklari va uzunliklari jadvali.

Haqiqiy dunyodagi ob'ektlar va ORP o'rtasidagi bog'liqlik birlashtirilgan funktsiyalar va ma'lumotlarning natijasi bo'ldi: hidlar dasturlashda inqilob yaratdi. Protsessual tillarda bunday o'xshashlik yo'q.

Sinf

OVPdagi ob'ektlar sinflar a'zolaridir. Bu qanday ma'nono bildiradi? Sizning dasturlaringiz birlashtirilgan ma'lumotlar turlariga ega bo'lishi mumkin. int turi C++ da butun sondir. Har yili qancha o'zgartirishlar kiritilishi mumkinligini e'lon qilishingiz mumkin.

Xuddi shunday, bir xil sinf ob'ektlari yo'q. Bu shuni anglatadiki, int o'zgarishlar yaratmagani kabi, funktsiyalar va ma'lumotlar ularni yaratmaydigan ob'ektlarga kiradi.

OVPdagi sinf juda o'xshash ob'ektlarning tavsifidir. Shahzoda, Sting va Madonna spivaklar bilan. Bunday ismlarga ega bo'lgan odamlar ko'p emas, lekin odamlarni shunday deb atash mumkin, chunki ular o'xshash xususiyatlarga ega. OOP obyekti sinfning namunasidir.

tinchlantirish

Yashash sinflari kichik sinflarga bo'lingan. Masalan, mavjudotlar amfibiyalar, qushlar, qushlar, koma va boshqalarga bo'linadi.

Ushbu turdagi kichik sinfning printsipi shundaki, teri sinfi bir-biriga o'xshash sinfdan farqli xususiyatlarga ega. Barcha mashinalar g'ildiraklari va dvigatellarini yuvadi. Bular transport vositalarining dastlabki xususiyatlari. Terining o'ziga xos xususiyatlaridan tashqari, pastki sinf o'ziga xos xususiyatlarga ega. Avtobuslarda juda ko'p joy bor va furgonlarda muhim narsalarni tashish uchun joy mavjud.

Xuddi shunday, tayanch sinf ko'plab shunga o'xshash kichik sinflarning otasi bo'lishi mumkin, ular uning xususiyatlarini hokimiyat tomonidan qo'shilganidan ajratib turadigan tarzda aniqlanishi mumkin. Uni funktsiyaga qisqartirish protsessual dasturni soddalashtiradi. Agar siz bir vaqtning o'zida kodning bir nechta qismini sindirishingiz kerak bo'lsa, siz yashirin elementlarni ajratib olishingiz va ularni bitta protseduraga joylashtirishingiz mumkin. Uchta dastur o'z faoliyatini bekor qilish uchun funksiyadan foydalanishi yoki o'z operatsiyalarini bekor qilishi mumkin. Bir guruh sargardonlar uchun yashiringan ma'lumotlardan qasos olish uchun bu asosiy sinfga o'xshaydi. Qisqartirish funktsiyasiga o'xshab, u GO dasturini qisqartiradi va uning elementlarining o'zaro bog'liqligini aniqlaydi.

Qayta-qayta vikoristannya

Bundan tashqari, ijod va imtiyozlar sinfi sifatida ular hukumat qo'shimchalaridan takroran foydalanish uchun boshqa dasturlarga o'tkazilishi mumkin. Bu turli dasturlarga kiritilishi mumkin bo'lgan funktsiyalar kutubxonasiga o'xshaydi.

ORPda pasayish - bu boy vaqtli vikoristikaning kengaytirilgan g'oyasi. Ushbu sinf uchun uni o'zgartirmasdan, qo'shimcha funktsiyalarga ega yangisini yaratishingiz mumkin. Asl PPni qayta amalga oshirish qulayligi OOP ning muhim afzalligi hisoblanadi. Bu dastlabki investitsiyalar bo'yicha rentabellikni oshirishni ta'minlashi muhimdir.

Ma'lumotlarning yangi turlarini yaratish

Ob'ektlar yangi turdagi ma'lumotlarni yaratish uchun qulaydir. Faraz qilaylik, dastur ikki o'lchovli qiymatlarga ega (masalan, koordinatalar yoki kenglik va uzunlik) va ular bilan arifmetik operatsiyalar yordamida ishlash kerak:

pozitsiya1 = pozitsiya + kelib chiqishi,

de í kelib chiqishi - mustaqil raqamli qiymatlar juftlari. Ikki ma'noni o'z ichiga olgan sinfni yaratish va uning o'zgaruvchan ob'ektlarini yo'q qilish yangi turdagi ma'lumotlarni yaratadi.

Polimorfizm, transformatsiya

Pozitsion arifmetikadan foydalanadigan = (teng) va + (plyus) operatorlari int kabi hosila turlari bilan bir xil ishlamaydi. Joylashuv ob'ektlari tayinlanmaydi, lekin dasturiy ta'minot tomonidan o'rnatiladi. Ushbu operatorlar ular bilan qanday kurashishni qanday bilishadi? Dalil shundan iboratki, ularga yangi xulq-atvor namunalari berilishi mumkin. Bu operatsiyalar Position sinfining a'zo funksiyalari bo'ladi.

Operatorlar va protseduralarning nima bilan ishlayotganiga qarab o'zgarishi polimorfizm deyiladi. Agar + yoki = kabi asosiy operator yangi turdagi ma'lumotlar bilan ishlash qobiliyatini olib tashlasa, qaytadan amalga oshirilmaganga o'xshaydi. OOPni qayta tasavvur qilish polimorfizmning bir turidir. Vona bu muhim guruchni eydi.

ORP haqidagi "Dummies uchun ob'ektga yo'naltirilgan dasturlash" kitobi ushbu hisobot mavzusi bilan tanishishni istagan har bir kishiga imkon beradi.

Ob'ektga yo'naltirilganlikning asosiy tamoyillari va bosqichlari

dasturlash

Dasturlash nazariyasida OOP har biri bitta turdagi (sinf) namunaga ega bo'lgan ob'ektlar to'plami va h ierarxiyasini yaratuvchi sinflar ko'rinishidagi berilgan dasturlarga asoslangan murakkab dasturiy ta'minotni yaratish texnologiyasi sifatida tavsiflanadi.

kuchning pasayishi.

Bunday tizimdagi dastur ob'ektlarining o'zaro ta'siri uzatish usuli orqali sodir bo'ladi.

Eslatma. Dasturlarning bunday ko'rinishi birinchi marta 60-yillarda paydo bo'lgan Simula katlama tizimlarini simulyatsiya qilishda paydo bo'ldi.

Bizning modellashtirishning boshqa ixtisoslashgan modellashtirishga ishlanmalarni jalb qilgan holda dasturlar tomonidan taqdim etilishining tabiiy usuli - Smalltalk (70-lar) va keyin

51-dan 2-tomon

PLOning asosiy pistirmalari

Paskal, C++ kabi universal dasturlash tillarining yangi versiyalari uchun sharhlar,

ORP ning asosiy afzalligi- modullararo qo'ng'iroqlar sonini qisqartirish va modullar o'rtasida uzatiladigan ma'lumotlar hajmini o'zgartirish;

modulli dasturlash bilan mos keladi. Bunga ma'lumotlarni ko'proq mahalliylashtirish va ishlov berish tartiblari bilan integratsiya qilish orqali erishiladi,

bu turli qismlarni amalda mustaqil ravishda ajratish imkonini beradi

(maqsadli) dastur.

Bundan tashqari, ob'ektiv yondashuv yangi texnologik rivojlanish usullarini targ'ib qiladi, masalan pasayish, polimorfizm, tarkib, sirt,

bu katlanuvchi ob'ektlarni loyihalashtirishni osonlashtiradi. Natijada, kodlarni qayta tuzatish ko'rsatkichi sezilarli darajada oshadi,

Har xil turg'unlik holatlari uchun ob'ektlar kutubxonalarini yaratish imkoniyati paydo bo'ladi va ishlab chiquvchilar ilg'or katlama tizimlarini yaratishning qo'shimcha imkoniyatlariga umid qilmoqdalar.

OOP ning asosiy kamchiligi - bu dasturiy ta'minot tizimining qo'shimcha katlanadigan tashkiloti bilan tezlik kodini kamaytirish qobiliyati.

OOP quyidagi tamoyillarga asoslanadi: abstraktsiya,

kirishni taqsimlash, modullik, ierarxiya, tiplashtirish, parallellik,

chidamlilik.

Keling, terining printsipi nima ekanligini ko'rib chiqaylik.

A b s t r a g i r o v a n i- ob'ektiv sohada mavhumlikni ko'rish jarayoni. Abstraktsiya - bu ob'ektni boshqa turdagi ob'ektlardan ajratib turadigan haqiqiy xususiyatlarining yig'indisi va

shu tarzda, berilgan ob'ektning o'ziga xos xususiyatlari keyingi qarash va tahlildan aniq aniqlanadi. Ko'rinib turibdiki, haqiqiy ob'ektning mavhumligi ochilmagan vazifa shaklida qolishi kerak: bir holatda biz ob'ektning shaklini aniqlaymiz, boshqa yo'l bilan

uchinchisiga - u bo'lingan materiallar, to'rtinchisiga - vayronagarchilik qonuni

51-dan 3-tomon

PLOning asosiy pistirmalari

mavzu va boshqalar. Hozirgi mavhumlik shoshqaloqligi mavhumlikning barcha kuchlarini birlashtirishni anglatadi (men tahlil qilinadigan ob'ektga aylanganim bilan,

Shunday qilib, biz uning xatti-harakatini) yagona dastur birligiga belgilaymiz

mavhum turi (sinf).

Kirish cheklovlari- mavhumlikni amalga oshirishning turli elementlarini kiritish, bu butunning muhim xususiyatlarini buzmaydi.

Kirishni o'zaro bog'lash zarurati abstraktsiya tavsifining ikki qismini ajratishga olib keladi:

interfeys - abstraksiyani amalga oshirishning mavjud chaqiruv elementlarining yig'indisi (xulq-atvorning asosiy xususiyatlari);

amalga oshirish - abstraktsiyani amalga oshirishning erishib bo'lmaydigan elementlari to'plami (mavhumlikni ichki tashkil etish va xatti-harakatlar mexanizmlari).

OOP ga kirish almashinuvi ishlab chiquvchiga quyidagilarga imkon beradi:

Ishlab chiqilayotgan abstraktsiyalarni amalga oshirishning o'ziga xos xususiyatlariga e'tibor bermasdan, tizim dizaynini bosqichma-bosqich qurish;

Agar to'g'ri tashkil etilgan bo'lsa, boshqa ob'ektlarni o'zgartirishni talab qiladigan ba'zi ob'ektlarni amalga oshirishni o'zgartirish oson.

Ob'ektning barcha vakolatlarini (bu uning xatti-harakatiga aylanadi) yagona mavhumlikka birlashtirish va bu vakolatlarni amalga oshirishga kirishni cheklash inkapsulyatsiya deb ataladi.

M o d u l n o s t- dasturiy ta'minot tizimini ishlab chiqish printsipi;

amalga oshirishni alohida qismlar (modullar) shaklida uzatadi. Tizimni modulga parchalashda, modullar orasidagi tashqi ulanishlar sonini xavfsiz tarzda qisqartirish uchun mantiqiy bog'langan qismlarni birlashtirish muhimdir. Qulaylik printsipi

51-dan 4-tomon

PLOning asosiy pistirmalari

modulli dasturlash, bunga rioya qilish dizaynni soddalashtiradi va

dasturiy ta'minotni ishlab chiqish

Ierarxiya - tartiblangan yoki tartiblangan abstraktsiyalar tizimi.

Ierarxiya printsipi dasturiy ta'minot tizimlarining rivojlanish ierarxiyasining butun tarixi davomida uzatiladi.

OOPda ikki xil ierarxiya mavjud.

Ierarxiya "butun/qism"- Muayyan abstraktsiyalar kiritilganligini bildiradi

Keling, abstraktsiyani uning qismlari sifatida ko'rib chiqaylik, masalan, chiroq taglikka o'ralgan, iplar qovurilgan va lampalar. Ierarxiyaning ushbu versiyasi tizimni loyihalashning turli bosqichlarida ishlab chiqish jarayonida (mantiqiy - ob'ektni ob'ektlarga ajratishda, jismoniy - tizimni modulga ajratishda va ko'p jarayonli tizimda tegishli jarayonlarni kuzatishda) ishlab chiqilgan. ).

Ierarxiya "sahna ortida/xususiy"- bu abstraktsiya boshqa abstraktsiya bilan to'ldirilishini ko'rsatadi, masalan, "umumiy jadval -

stolning o'ziga xos turi" va "stollar - mebelning o'ziga xos turi". Vikorist at

sinflar tuzilmasini kengaytirish, agar murakkab sinflar ularga yangi xususiyatlarni qo'shish va, ehtimol, mavjudlarini aniqlashtirish yo'li bilan oddiyroq sinflarga asoslanadigan bo'lsa.

OVPning eng muhim mexanizmlaridan biri bu maxfiy/xususiy ierarxiyada hokimiyatning pasayishi. Kondensatsiya, shuningdek, abstraktsiyalar o'rtasidagi munosabatdir, agar ulardan biri boshqa yoki bir nechta boshqa abstraktsiyalarning tarkibiy yoki funktsional qismi bo'lsa (ham oddiy, ham ko'paytiriladi)

dam olish).

T i p i z a s i i - predmetlarning kuchiga yuklangan almashinuv va

har xil turdagi abstraktsiyaning almashinish qobiliyatini kesib o'tadi (yoki bunday almashtirish imkoniyati juda kuchli eshitiladi). Teri dasturi ob'ekti (o'zgartirish, kichik dasturlar, parametrlar va boshqalar) qat'iy tipifikatsiyalangan tillarda.

bir noinvaziv operatsiya degan ma'noni anglatadi turi bilan shok bo'ladi

Yon 5 z 51

PLOning asosiy pistirmalari

alohida dasturiy ta'minot ob'ekti sifatida. Paskalga asoslangan yuqorida aytib o'tilgan dasturlash vikoryst bo'lib, C ga asoslangan -

tiplashtirishning o'rta bosqichi.

Matn yozish printsipiga rioya qilish quyidagilarni ta'minlaydi:

dastur ob'ektlarida qabul qilinishi mumkin bo'lmagan operatsiyalar bilan bog'liq nosozliklarni erta aniqlash (dasturiy ta'minot ob'ektida har qanday operatsiyani bajarishga ruxsat etilganligini tekshirishdan oldin dasturni kompilyatsiya qilish bosqichida tanaffuslar aniqlanadi);

soddalashtirilgan hujjatlar;

Samarali kodni yaratish imkoniyati.

Turni dastur ob'ekti bilan statik bog'lash mumkin (ob'ekt turi kompilyatsiya bosqichida aniqlanadi - erta ulanish) va dinamik (ob'ekt turi faqat dastur ishga tushirilgandan keyin aniqlanadi - keyingi ulanish). Bizning dasturlashda kech aloqani amalga oshirish turli sinflarga tegishli ob'ektlar bo'yicha o'zgarishlar - ko'rsatkichlarni yaratishga imkon beradi (polimorf ob'ektlar), bu tilning imkoniyatlarini mohiyatan kengaytiradi.

P a r a l e l i z m- bir qancha abstraksiyalarning kuchi bir vaqtning o'zida faol bosqichga o'tkaziladi, keyin. barcha operatsiyalarni bekor qilish.

Butun past tartib mavjud bo'lib, ularning eng muhimi muayyan harakatlar ketma-ketligini darhol yakunlashdir. Shunday kunlar oldinda,

Masalan, bir qator jarayonlarni avtomatik qayta ishlash vazifasi paydo bo'ladi.

Haqiqiy parallelizmga, agar bir xil protsessor bilan teri jarayonini boshqarish mumkin bo'lsa, ko'p protsessorli tizimlarda ushbu turdagi vazifani amalga oshirishda erishiladi. Bitta protsessorli tizimlar turli jarayonlarni ishga tushirish o'rtasida protsessorning yarim soatini bo'lishish uchun parallelizmga ega. Tanlangan operatsion tizim turiga bog'liq (bitta yoki ko'p dasturli)

Yon 6 z 51

PLOning asosiy pistirmalari

Taxminan bir soat ichida biz parchalanadigan tizim bilan yakunlanishimiz mumkin (xuddi

MS DOS) yoki xususiy OT (Windows tizimlari kabi).

U sh i s t- abstraksiya kuchi berilgan dasturiy ob'ektni vujudga keltiruvchi jarayondan va/yoki manzil fazosidan qaysi turdagi yaratilishga o'tayotgan fazodan mustaqil ravishda yuzaga keladi.

Bo'lmoq:

∙ harakatlarning oraliq natijalarini saqlaydigan vaqtga asoslangan ob'ektlar, masalan, hisoblash;

∙ kichik dasturlarning o'rtasida mavjud bo'lgan mahalliy ob'ektlar, ularning ishlash soati pastki dasturning javobidan u tugaguniga qadar hisoblanadi;

∙ global ob'ektlar, shubhasiz, dastur hali ham sirni hayratda qoldiradi;

∙ saqlangan ob'ektlar, ulardan ma'lumotlar kompyuter dasturi seanslari orasida tashqi xotira fayllarida saqlanadi.

Barcha printsiplar ob'ektga yo'naltirilgan kompyuterlarning turli versiyalarida qanday amalga oshirilgan bo'lsa, xuddi shunday aniqlanadi.

Ob'ektga yo'naltirilgan dasturlash. Til muhim ob'ektga yo'naltirilgan,Yangi tatbiqda bo'lgani kabi, yuqorida muhokama qilingan etti tamoyilning birinchi tamoyillari amalga oshirildi.

Delphi va C++Builder obyekt modellari ayniqsa mashhur. Ushbu modellar MS DOS uchun OOP bilan yangilangan va ba'zi yangi xususiyatlarni o'z ichiga oladi,

katlama tizimlarini samarali yaratishni ta'minlash. Ushbu modellar asosida Windows dasturlarini ishlab chiqish uchun vizual muhit yaratildi.

Windows ostida dasturlashning qulayligi aniq bo'ldi

dasturlash texnologiyasining ko'plab elementlarini "saqlagan" ob'ektlarning maxsus kutubxonalarini yaratish xarajatlarini kamaytirish.

Yon 7 z 51

PLOning asosiy pistirmalari

Wiki-ga asoslangan OOP dan dasturiy ta'minot tizimlarini ishlab chiqish bosqichlari.

ORP ma'lumotlari bilan dasturiy ta'minotni ishlab chiqish jarayoni bir necha bosqichlarni o'z ichiga oladi: tahlil, dizayn, evolyutsiya, modifikatsiya.

Keling, bosqichlarni ko'rib chiqaylik.

A na liz. Meta-tahlil - o'simlikning eng to'liq tavsifi. Ushbu bosqichda fan bilim sohasini tahlil qilish tugaydi, tizimning parchalanadigan ob'ektining parchalanishi va ob'ektlarning xatti-harakatlarining eng muhim xususiyatlari aniqlanadi (abstraksiya tavsifi). Tahlil natijalariga ko'ra, dasturiy mahsulotning strukturaviy diagrammasi bo'linadi, unda asosiy ob'ektlar va ular o'rtasida uzatiladigan ma'lumotlar ko'rsatiladi, shuningdek, abstraktsiya tavsifi bilan yakunlanadi.

Dizayn. Bo'lmoq:

ko'proq mantiqiy dizayn, Har qanday qaror qabul qilinganda, operatsiya (operatsion tizim va uskunalar) haqida yolg'on gapirmaslik amaliydir;

jismoniy dizayn, Kimning birodarlariga hurmat ko'rsatgan bo'lsa, u amaldor etib tayinlanadi.

Ko'proq mantiqiy dizayn sinflar tuzilishining rivojlanishida yotadi:

ombor ob'ektlarini saqlash maydonlari va usullarning algoritmlari aniqlanadi va ob'ektlarning xatti-harakatlarining jihatlari amalga oshiriladi. Bunday holda, biz qaraydigan narsalarga qaraymiz va sinflar bo'linishini qabul qilamiz (kamaytirish,

tarkibi, sirt, polimorfizm va boshqalar). Natijada ierarxiya yoki sinflarning o'zaro bog'liqligini aks ettiruvchi sinf diagrammasi va sinflarning tavsifi.

Jismoniy dizayn modul uchun sinf tavsiflarining kombinatsiyasini, ularning ulanish sxemalarini tanlash (statik yoki dinamik joylashuvi), uskunalar bilan o'zaro ta'sir qilish usullarini tanlash,

operatsion tizim va/yoki boshqa dasturlar (masalan,

ma'lumotlar bazalari, chekka tarmoqli dasturlari), parallel ishlov berish tizimlari uchun jarayonlarni sinxronlashtirishni ta'minlash va boshqalar.

Yon 8 z 51

PLOning asosiy pistirmalari

Evoluts i ular bilan. Bu bosqichma-bosqich amalga oshirish jarayoni va

Sinflarni loyihaga ulash Jarayon yaqinlashib kelayotgan dasturiy mahsulotning asosiy dasturi va loyihasini yaratishdan boshlanadi. Keyin sinflar qo'pol sinf yaratish uchun amalga oshiriladi va ulanadi yoki iloji bo'lsa,

yaqinlashib kelayotgan tizimning ishchi prototipi. U sinovdan o'tkaziladi va takomillashtiriladi.

Masalan, bunday prototip dasturiy mahsulotning asosiy interfeysini amalga oshirishni o'z ichiga olgan tizim bo'lishi mumkin (tizimning bir qismi yakunlanmagan kunni xabardor qilish uchun uzatish). Natijada, biz, masalan, tushuntirish uchun ko'rsatilishi mumkin bo'lgan mahsulot uchun prototipni tanlaymiz. Keyin tizimga sinflar guruhi ulanadi, masalan, asosiy menyu bandini amalga oshirish bilan bog'liq.

Muqobil variant ham sinovdan o'tkaziladi va takomillashtiriladi va tizimning barcha imkoniyatlari amalga oshirilgunga qadar davom etadi.

Ushbu bosqichma-bosqich amalga oshirish dasturiy mahsulotni sinovdan o'tkazish va ishlab chiqishni sezilarli darajada osonlashtiradi.

O'zgartirish. Bu yangi funktsional imkoniyatlarni qo'shish va tizimning asosiy vakolatlarini o'zgartirish jarayonidir. Qoida tariqasida,

O'zgarishlar sinfni amalga oshirishni yakunlaydi, uning interfeysini o'zgartirmasdan qoldiriladi, shuning uchun vikoristan ORP-dan hech qanday maxsus noqulayliklarsiz qochish mumkin, chunki o'zgartirish jarayoni mahalliy hududni o'z ichiga oladi.

Interfeysni o'zgartirish ham qiyin ish emas, aks holda bu yechim dasturlarning boshqa sinflarini o'zgartirishni talab qiladigan ob'ektlarning o'zaro ta'siri jarayonlarini takomillashtirishni talab qilishi mumkin. Biroq, modulli dasturlash bilan mos ravishda interfeys qismidagi bir qator parametrlarni qisqartirish bu jarayonni sezilarli darajada osonlashtiradi.

O'zgartirishning soddaligi dasturiy ta'minot tizimlarini ishlash ongiga osongina moslashtirish imkonini beradi, bu tizimlarning ishlash muddati ko'proq soatlar, chunki ularni ishlab chiqishga katta vaqt va moddiy resurslar sarflanadi.

Yon 9 z 51

PLOning asosiy pistirmalari

OOPning o'ziga xos xususiyatlari va ob'ekt yoki ob'ektlar guruhini alohida ajratish mumkin bo'lgan va ularni loyihalash turli bosqichlarda ham amalga oshirilishi mumkin. Misol uchun, interfeys sinflari allaqachon amalga oshirilgan, ammo domen sinflarining tuzilishi hali ham aniqlanmoqda.

Dizayn mavzu sohasining har qanday bo'lagi tahlil jarayonida to'liq tavsiflanganda boshlanadi.

Ob'ektga asoslangan yondashuvning asosiy usullariga qarash ob'ektning parchalanishi bilan tasvirlangan.

Ob'ektning parchalanishi

Biz allaqachon taxmin qilganimizdek, zamonaviy OOP texnologiyasidan foydalangan holda, yechim ko'rinishdan kelib chiqadi bir nechta funktsional elementlarning o'zaro ta'siri natijasi jarayonlarga ega bo'lgan har qanday tizim,

vazifaning mavzu sohasi nima.

Bunday teri tizimi eng muhim vazifani bajarish jarayonida har qanday kirish oqimini (axborot deb ataladigan) rad etadigan funktsional elementga ega.

qo'shiq harakatini bekor qiladi (masalan, siz quvvat strukturasini o'zgartirishingiz, hisob-kitoblarni bekor qilishingiz, jadval tuzishingiz va boshqa elementlarni kiritishingiz mumkin). Jarayon vazifani hal qiladi Ketma-ketlik haqida ma'lumot. Ma'lumotni elementdan elementga uzatish orqali tizim kerakli harakatlarni tanlaydi.

Parametrlari va xatti-harakatlari mustaqil xatti-harakatlarga olib kelishi mumkin bo'lgan aqliy vazifaga tayinlangan tizimning funktsional elementlari.

(element shaklida yotgan harakatlarni "yakunlash" uchun) ob'ektlarning nomi olib tashlandi.

Ma'lumot almashish uchun ob'ektlar majmuasi sifatida predmet sohasini ifodalash jarayoni deyiladi ob'ektning parchalanishi.

Yon 10 z 51

PLOning asosiy pistirmalari

Har bir aniq holatda yakuniy ob'ektning parchalanishida qanday turdagi ob'ektlar muhokama qilinishini tushunish uchun taqlidni rivojlantirish uchun dastlabki ob'ekt yondashuvini tushunish kerak. Bunday tizimlar ob'ektlari to'plami modellashtirilayotgan jarayonlarni tahlil qilishda aniqlanadi.

dumba. Ob'ektning parchalanishi (simulyatsiya modeli

yoqilg'i quyish shoxobchalari). Yoqilg'i quyish shoxobchalari soni, teriga yoqilg'i quyish shoxobchasiga xizmat ko'rsatish parametrlari va yonilg'i quyish bo'yicha so'rovlar intensivligi (biz yoqilg'ining bir turini ko'rib chiqamiz) tufayli yoqilg'i quyish shoxobchasida qolgan yoqilg'i miqdori haqida tashvishlanishdan to'xtating. ).

Bunday vazifa taqlid modellaridan foydalanishga tayanishi kutilmoqda. Model bir vaqtning o'zida uning xususiyatlarini qayd etish bilan birga, belgilangan parametrlarga ega bo'lgan haqiqiy jarayonni dasturiy jihatdan ifodalaydi. Ilovalarga xizmat ko'rsatish va qabul qilish parametrlarining turli qiymatlari bilan simulyatsiya jarayonini takrorlash orqali tadqiqotchi konlarni tahlil qilish grafiklari bo'ladigan xususiyatlarning o'ziga xos qiymatlarini tanlaydi.

Yoqilg'i quyish shoxobchasini uchta yoqilg'i quyish shoxobchasi bilan ishlash jarayoni quyidagi diagrammalarda ko'rsatilishi mumkin.

Dunyoda murakkab hisoblash texnologiyalari va kompyuterlar murakkabroq vazifalar uchun qo'llanila boshlandi. Ma'lum bo'lishicha, buklama vazifalarining ko'payishi kompyuterlarning hisoblash murakkabligi va katlama dasturlarini yozish samaradorligi tufayli muhim ahamiyatga ega. Ob'ektga yo'naltirilgan dasturlash(OOP) Vinikning o'zi katlama dasturlarini yaratishda yuzaga keladigan qiyinchiliklarni engishning samarali usuli hisoblanadi.

OOPning eng muhim qismi - bu murakkab dasturlash vazifalariga maxsus yondashuv, bu deyiladi ob'ektga yo'naltirilgan tahlil, Va ob'ektga yo'naltirilgan dasturlash bu yondashuvni amalga oshirish uchun oddiygina qulay vositadir.

Tarix

FLO asoschilari mashhur norvegiyaliklar Kristen Nygaard va Ole-Yohan Dahldir. Kema qurish simulyatsiyalari ustida ishlagan Nygaard dasturiy ta'minotning asosiy xususiyatlari bunday murakkab dasturlarni yaratishda samarasiz ekanligini tushundi va shuning uchun Nygaard barni ko'tarishga imkon beradigan yangi dasturlash uchun kontseptsiyalarni ishlab chiqa boshladi. birinchi marta. ob'ektga yo'naltirilgan(Terminning o'zi Java tilining muallifi Alan Kay tomonidan kiritilgan). Ole-Johan Dahl Nygaard bilan birgalikda biz ORP ning asosiy tamoyillarini va ularni amalga oshirishning amaliy mexanizmlarini tahlil qildik, keyinchalik ular birinchi ORP Simula tomonidan ishlab chiqilgan. Ushbu olimlarning xizmatlari jahon ilmiy jamoatchiligi tomonidan yuqori baholandi va 2001 yilda Nygaard va Dahl Alan Tyuring mukofoti laureatlari bo'lishdi - bu kompyuter fanlari bo'yicha Nobel mukofotining o'ziga xos analogi.

Mova Simula ilmiy doiralarda mashhurlikka erishdi, biroq bir qator sabablarga ko'ra tijorat dasturiy ta'minot ishlab chiqaruvchilari orasida mashhurlikka erisha olmadi. Ushbu asosiy g'oyalar va ORP imkoniyatlari dasturchilar uchun juda jozibali bo'lib qoldi. Yillar davomida boshqa OYlar yaratildi: SmallTalk (1980), C++ (1985), Eyfel (1986), Object Pascal (1986) va Delphi (1995), Oberon-2 (1991), Java (1991), Visual Basic. (1991) va boshqalar. Ushbu kompaniyalarning faoliyati dasturda sanoat standartlariga aylandi.

OOP xususiyatlari

OOP ning asosiy g'oyasi shundan iboratki, u xatti-harakatlari va o'zaro ta'siri real dunyodagi ob'ektlarning xatti-harakatlari va o'zaro ta'siriga o'xshash (dastur o'xshash bo'lmagan virtualni yaratishi uchun) dastur tuzilmalarini yaratishdan iborat. haqiqiy mohiyatlar). Ob'ektga yo'naltirilgan dasturlash ushbu yondashuvni qo'lda va tez amalga oshirish uchun qulayliklar yaratish uchun javobgardir.

Kundalik hayotda odamlar "fikr iqtisodi" ning turli usullariga (aytmasak) tayanadilar, bu ularga katlama qutilarini oddiy so'zlar bilan tushunish va ifodalash imkonini beradi. Pulni tejashning odatiy usullari quyidagilarni o'z ichiga oladi:

· Abstraktsiya (tarmoq bo'lmagan tafsilotlarni abstraktsiya qilish);

· Uzgalnennya (turli xil narsalar yoki narsalarda yashirin belgilarni ko'rish);

· Tasniflash (ob'ektlar o'rtasidagi munosabatni va ularning o'xshashlik darajasini tan olish).

Bu shunchaki odamlarga ko'rgan ob'ektlarning murakkabligi bo'ylab harakatlanishga yordam berishning bir usuli. Ob'ektga yo'naltirilgan dasturlash, shuningdek, "dasturning tartibsizliklariga qarshi kurashish" uchun bunday xususiyatlarni taqdim etishi mumkin. Dasturlashda ob'ektga yo'naltirilgan yondashuvni amalga oshirish uchun yangi tushunchalar kiritiladi:

· Ob'ektlar - ma'lumotlar va ularni qayta ishlash algoritmlarini birlashtiradigan maxsus dastur tuzilmalari;

· Inkapsulyatsiya - ob'ektlarning ishlashi tafsilotlarini yozib olish;

· Spudkuvannya - yangi sinflarni yaratishning "yorliq" usuli;

· Polimorfizm - bir funktsiyaning bir nechta amalga oshirilishini birlashtirish imkoniyati.

Ob'ektlar va sinf

Ob'ektlar - bu algoritmlardan tuzilgan maxsus dastur birliklari bir xil ma'lumotlarni qayta ishlash uchun. Ob'ektning omboriga kiradigan ma'lumotlar deyiladi dalalar(Atributlar, vakolatlar, a'zolar). Ob'ektning omboriga kiradigan algoritmlar deyiladi usullari(Xizmatlar, operatsiyalar, a'zo funktsiyalari). Afsuski, OVPda umumiy charchagan atamalar mavjud emas va ularni tushunish uchun turli tillarda turli xil atamalar qo'llaniladi.

Klasi- Bu ma'lumotlarning ob'ektiv turlari. Butun sonlar butun son turiga (masalan, integer yoki bayt) tegishli bo'lgani kabi, ob'ektlar ham ob'ekt tipiga - sinfga tegishli. Xuddi shu sinfning barcha ob'ektlari bir xil maydonlar to'plamiga va bir xil usullar to'plamiga ega.

Umumiy til tillarida (C++, Java) obyektlar chaqiriladi Men nusxalarini saqlayman(holatlar).

Turli sinflar va ob'ektlarning kamchiliklari shundan iboratki, ma'lumotlarni qayta ishlash uchun ma'lumotlar va funktsiyalar o'rtasidagi mantiqiy (semantik) bog'lanishlarni tekshirish ahamiyatsiz ish bo'lib, uni asosan kompilyatorga (kompyuterga) o'tkazish mumkin - endi siz ma'lumotlarning mavjudligini aniqlashingiz mumkin. noto'g'ri tuzatilgan.

Inkapsulyatsiya

Inkapsulyatsiya (so'zma-so'z - "qabul qilish") - sinfning ichki tuzilishi to'g'risidagi ma'lumotlarni nazorat ostida olish. Sinfda ob'ektlar tomonidan qo'llaniladigan, shu jumladan ularning ishlashini ta'minlash uchun ishlatiladigan maydonlar va usullar bo'lishi mumkin (masalan, dinamik xotiradagi bufer, ish ma'lumotlari bo'lgan fayl, ushbu fayl bilan ishlash usullari va boshqalar). Bunday maydonlarni o'zgartirish yoki qo'ng'iroq ob'ektining usullarini bosish xavfsiz emas - bu sizning tizimingizni yo'q qilishi mumkin. Maydonlar kabi ob'ektlarning xavfsizligini ta'minlash uchun bu usul bo'lishi mumkin tutmoq- Ulardan oldin hayvonni himoya qiling.

"Jangovar murakkablik" pozitsiyasidan inkapsulyatsiya ob'ektlar bilan ishlashning to'g'riligini nazorat qilishning bir qismini kompilyatorga (kompyuterga) o'tkazishga imkon beradi.

Biz maydonlarni va usullarini inkapsulyatsiya qilishning turli imkoniyatlarini ko'rsatamiz (barcha maydonlarni avtomatik inkapsulyatsiya qilishgacha har kuni). C++, Java, Delphi, Eyfel va boshqalar kabi obyekt tili industriyasi uchta inkapsulyatsiya sohasi va usullariga ega:

· ommaviy - birinchi marta jamoat maydonlari Ob'ektlarning usullari o'rtasida umumiy almashuvlar mavjud emas;

· himoyalangan - darhol keling, dalalarni o'g'irlaylik Bu sinfning usullari va bolalar sinflari usullaridan boshqa usullar bo'lishi mumkin emas;

· xususiy - to'g'ridan-to'g'ri xususiy maydonlar va usullar bu sinfdagi usullarda ayblanishi mumkin.

tinchlantirish

tinchlantirish- mavjud sinflarga qo'shimcha tafsilotlarni qo'shish orqali yangi sinflarni yaratish, chetlab o'tilgan elementlarning tavsiflarini o'tkazib yuborish. Meros olganida, yangi sinf chaqiriladi sinf bo'yicha(bolalar, kichik sinf) va chiqish sinfi chaqiriladi ajdodlar sinfi(Asosiy, Batkivskiy, super sinf).

Qisqartirish takroriy tavsiflarni o'chirib, dastur hajmini qisqartiradi. Ajdodlar sinfida e'lon qilingan barcha maydonlar va usullar avtomatik ravishda pastki sinflarga o'tkaziladi va ular odatda deyiladi. pasayish(tanishtirilishi kerak).

Otaning usuli nimani talab qilsa, qila olasiz qayta qiymat- tobto. Boshqa algoritm sinf-platforma usuli bilan bir xil tarzda qo'llanilishini tan oling.

Harakatlar rag'batlantiriladi bir nechta pasayish, unda bir sinf bir vaqtning o'zida bir nechta sinflar orasida barcha kuch va usullarni rad etadi. Afsuski, chalkashlikning katta qismi mantiqiy ziddiyatli vaziyatlarda yashiringan, chunki qo'llab-quvvatlash tilni dasturlashni va ayniqsa kompilyatorni murakkablashtiradi. Shu sabablarga ko'ra, ko'p hollarda, pasayishning aksariyati oddiygina bloklanadi, aks holda uni olib tashlash mumkin.

Barcha ajdodlar sinflari va kelib chiqish sinflarining yig'indisi deyiladi Sinflar ierarxiyasi.

Sinf kondensatsiyasi OOPning markaziy kontseptsiyasi bo'lib, u bevosita va bilvosita boshqa tushunchalar va mexanizmlarga asoslangan. ORP mexanizmlarining mutlaq ko'pchiligi afzalliklarini ochib berish uchun sinflar ierarxiyasini talab qiladi.

Polimorfizm

Polimorfizm(So'zma-so'z - "shakllarning xilma-xilligi") - bir xil ahamiyatga ega bo'lishi mumkin bo'lgan bir nechta usullar (yoki funktsiyalar) uchun bitta nomdan foydalanish qobiliyati. Boshqa talqin - bir usul (funktsiya) bir nechta amalga oshirish variantlariga ega bo'lishi mumkin; bu usul (funksiya) deyiladi polimorfik. Boshqa ORP mexanizmlari singari, polimorfizm ham murakkab dasturlarni ishlab chiqishni osonlashtiradi. Aslida, polimorfizm tushunchani mustahkamlaydi nima pul topish kerak, bundan tashqari yak Qo'rqinchli bo'lishning hojati yo'q.

Agar biz real hayotdan o'xshatish qilsak, polimorfizm real hayotga mos keladi. Masalan, "musiqa" so'zi "musiqa asbobini chalish" degan ma'noni anglatadi. Lekin turli musiqa asboblari turlicha ijro etiladi. Faqat bitta atama bor, lekin juda ko'p variantlar mavjud. Shunday qilib, "musiqa" - polimorfik harakat. OOPda "musiqa qilish" tomonidan tasdiqlangan polimorfik usul, bu musiqa asboblari teri sinfi uchun o'z tatbiqiga ega

OOPda polimorfik usullarning ikki turi mavjud revansiyaі virtual.

Qayta tiklash usullari Vikonanni uchun tan olingan Har xil turdagi ma'lumotlardan. Turli nomlar, shuningdek, argumentlarning turli ro'yxatlari va/yoki aylantirilayotgan qiymat turi mavjud.

Virtual usullar Vikonanni uchun tan olingan ammo, almashtirish operatsiya ortida bahsli masalalarda, lekin darslardan qochadi. Virtual usullar turli nomlar va prototiplarga ega. Ularning asosiy xususiyati shundaki, ular doimo ob'ektning haqiqiy sinfiga to'g'ri mos keladi.

Qayta tasavvur qilingan funksiyalarning tipik misoli Paskalning SQR funktsiyasidir. Von sonning kvadratini hisoblab chiqadi va butun argumentlar uchun natija bir xil bo'ladi va nutq argumentlari uchun u gapirish mumkin bo'ladi.

Virtual usullarning afzalliklari faqat sinflarning turli ierarxiyasida namoyon bo'ladi. Virtual usullardan foydalanishning odatiy sxemasi quyidagicha:

· Ierarxiyaning ajdodlar sinfi polimorf metodga ega bo'lib, bu chuqur oqimni bildiradi. Bunday holda, vikorist virtual usuli yoki usulning o'zi virtualdir.

· Qo'nish sinflari uchun mos keladigan virtual usul qayta baholanadi - teri-sinf uchun tegishli harakat o'ziga xos tarzda qayta baholanadi.

· Ota-klassga tegishli ob'ektga qo'ng'iroq qilinganda, polimorf usul aslida ota-klassning virtual usuliga (ajdod sinfiga emas) chaqiriladi.

Virtual usullardan bunday foydalanishning yaxshi namunasi Delphi yoki Visual Basic-ning grafik oyna interfeysi tizimidir: grafik interfeysning ko'rinadigan elementi tugma, tugma va boshqalar. - TControl sinfiga tegishli bo'lishi mumkin. TControl klassi grafik interfeys elementlarini bo'yashning ilg'or polimorfik usullarini taqdim etadi va siz ekranlaringizni qo'lda bo'yashingiz mumkin.

2004 yilgi Rok standartida ob'ektga yo'naltirilgan dasturlashni aniq tanib bo'lmaydi, ammo Obovyazkov Minimumida ixtisoslashgan talabalar uchun (Riven B) axborot fani o'rniga mavzu bo'ladi: Ob'ektga yo'naltirilgan dasturlash: ob'ekt, ob'ektning vakolatlari, ob'ekt ustidagi amallar. U yerda ob'ektga mo'ljallangan dasturlash texnologiyasi ham ixtiro qilingan.

Prote OVP osonlikcha boy maktablarda informatika (dasturlash) amaliyotini rivojlantirmagan, shuningdek, maktab qo'llanmalari sahifalarida ( Ugrinovich N.D. Kompyuter fanlari va axborot texnologiyalari. 10-11-sinflar uchun Pidruchnik, 2005. M: BINOM. Bilimlar laboratoriyasi). Bundan tashqari, boshlang'ich sinflar uchun informatika propedevtik kursi (O. Goryachov rahbarligidagi mualliflik jamoasi tomonidan ishchi tikuvchilik. 1–4-sinflar) ham tushuncha beradi. ob'ekt va yogo hokimiyat organlari.

OOP texnologiyasi (paradigmasi) hozirgi dasturlash usullarini o'zlashtirishdan emas, balki asosiy muammoning ob'ekt modelini ishlab chiqishdan iborat. Buning uchun kelajakda OOP va dasturlashning asosiy tamoyillarini yaxshi bilish kerak va har qanday OOPni bilish shart emas - OOP asoschilari va nazariyotchilari bu haqda bir necha marta yozishgan. Shunday qilib, Grade Buch o'zining "Ob'ektga yo'naltirilgan dizayn va tahlil" kitobida quyidagi maksimni ta'kidlaydi: "Obyektga yo'naltirilgan uslubda dasturlarni yozish har qanday (ob'ektga yo'naltirilmagan) tilda mumkin. gramovannya." OOP texnologiyasi algoritmini ishga tushirish uchun algoritm ishlaydigan ob'ektlar ro'yxatini shakllantirish, teri ob'ektining kuchi haqida o'ylash va ushbu ob'ektlar tavsiflarining o'zaro ta'siri natijasida algoritmni amalga oshirish kerak.

Statistik ma'lumotlarda ta'kidlanganidek, bunday yondashuv murakkab vazifalarning ko'pini soddalashtiradi, ammo maktab doirasida (cheklangan yillar bundan mustasno) boshlang'ich vazifalarni almashtirishni taklif qilish muhimdir. yangi texnologiyalarni qo'llash bilan uzoqqa bormaslik uchun.Tashqi dunyoda ORP.

Darhaqiqat, maktab OVP hozirgi professional dasturlash tizimlarida vizual va komponentli dasturlashning ko'rinmas qismi sifatida qaraladi va ob'ektlar turli darajadagi foydalanishga tayyor ob'ektlar kutubxonalarida - bu va grafik interfeysdan foydalanish uchun kutubxonalarda o'rganilmoqda. Windows qo'shimchalari va boy universal kutubxonalar ma'lumotlar turlari (masalan, STL C++). Ushbu kutubxonalardan qanday foydalanishni o'rganish uchun dasturlash sintaksisining bir nechta oddiy qoidalarini bilish va tushunish kifoya. Biroq, bunday "bilim" talabalarni mening dasturlashimning professional rivojlanishiga yaqinlashtirmaydi va OVPni tushunishga olib kelmaydi. Ale, qo'shiq, bu erda hech qanday dahshatli narsa yo'q. Maktab informatika va ixtisoslashtirilgan maktablarda professional dasturlarni tayyorlashga e'tibor berilmaydi. OOPni qo'llash alohida mavzu bo'lib, ular ko'pincha o'zlarining maxsus mutaxassisliklariga etarlicha e'tibor bermaydilar.

Ba'zi informatika ko'rsatkichlarining pozitsiyasini to'liq inkor etmasdan, ta'lim dasturlari sohasida, shu jumladan maktabda ob'ektga yo'naltirilgan yondashuvni qo'llash muhimdir, ORPni dastur kabi asosiy tamoyillarsiz tushunib bo'lmasligi muhimdir. , vikonavetsya, zminna, umova, tsikl va boshqalar. OOP kontseptsiyasi klassik protsessual dasturlashni ham o'z ichiga oladi (bob " Kichik dasturlar"), Eynshteyn mexanikasi - Nyuton mexanikasi kabi: protsessual dasturni yagona ob'ekt sifatida aniqlash mumkin, biz soddaligi uchun uni e'tiborsiz qoldiramiz. Shunday qilib, maktabda o'quv dasturini boshlashdan oldin, biz asosiy nutqlarni o'rganishimiz kerak. I zamonaviy vizual dasturlash vositalari (Delphi, Visual Basic, Visual C++) bilan ishlash qobiliyati kamroq
h.k.) ob'ektlar va ularning komponentlari tushunchalari bilan tanishish, asosan, sahna ortidagi dasturlashni o'rganish uchun qo'shimcha usullarni qo'llash orqali.

Yashirin ma'lumotlar

OOP - bu 20 asrning 80 yilini o'z ichiga olgan dasturlash uslubi. Ma'lumotlar va ko'rsatmalar qayta ishlanadigan protsessuallardan tashqari, ob'ektga yo'naltirilgan dasturlashda ma'lumotlar yagona ob'ektga birlashtiriladi.

PLOning asosiy pistirmalari

tinchlantirish

ORP ning yana bir tamoyili zaiflashuvdir - bir sinfning boshqasining usullarini amalda qo'llashni takrorlamasdan moslashtirish qobiliyati. Siqilish chiqish kodining ortiqcha bo'lishiga imkon beradi.

Polimorfizm

ORP ning yana bir tamoyili polimorfizmdir. Ushbu kontseptsiya turli darajadagi murakkablikdagi ob'ektlarni manipulyatsiya qilish uchun siz turli xil sharoitlarga javob beradigan bitta interfeys yaratishingiz va vazifani darhol to'g'ri bajarishingiz mumkinligini anglatadi.

Movi OOP

OOP tamoyillari dasturlarning katta qismi bo'lingan C++ va Java kabi eng mashhur dasturlash tillarida qabul qilingan. Ê va eng kam vikorystovuvaní kino OVP - tse Delphi, Object Pascal, Ruby va boshqalar.

OOPni tanqid qilish

Ushbu metodologiyaning ijobiy natijalariga qaramay, ORP tamoyillari ko'pincha tanqidchilar tomonidan tan olinadi. Xuddi OOP ning kamchiliklari borligi kabi.

Avvalo, o'tish silliqdir. ORP tamoyillarini tushunish uchun, ayniqsa, faqat protsessual til dasturlash bilan ishlaydigan odamlar uchun juda ko'p vaqt sarflash kerak.

Aks holda, juda ko'p to'liq hujjatlar mavjud emas, chunki ob'ektlar sinflarini va amalga oshirishning o'ziga xos turlarini tavsiflash kerak.

Uchinchidan, usullarning universalligi chiqish kodi va bo'lingan dasturlarning ushbu alohida holatda talab qilinmaydigan funktsiyalar va imkoniyatlar bilan qayta jihozlanishiga olib kelishi mumkin. Boshqa tomondan, bu xotira nuqtai nazaridan samarasizlikni ko'rsatadi. Biroq, begona odamlarning fikrlaridan qat'i nazar, OOP dasturlari soni barqaror o'sib bormoqda va dasturlarning o'zi tez rivojlanmoqda.

Galmuê