Fan va innovatsiyalar vazirligi toshkent davlat agrar universiteti


Ob'ektga yo'naltirilgan yondashuvning umumiy tushunchalari


Download 340.34 Kb.
bet5/6
Sana21.06.2023
Hajmi340.34 Kb.
#1645657
1   2   3   4   5   6
Bog'liq
Akmaralov Bahrom

2.2. Ob'ektga yo'naltirilgan yondashuvning umumiy tushunchalari

"Ob'ektga yo'naltirilgan" yo'naltirishlar bu erda. Ob'ektga yo'naltirilgan boshqa ma'nolarni ko'rish uchun qarang Ob'ektga yo'naltirish.


"Ob'ektga yo'naltirilgan dasturlash tili" bu erga yo'naltiriladi. Ob'ektga yo'naltirilgan dasturlash tillari ro'yxati uchun qarang Ob'ektga yo'naltirilgan dasturlash tillari ro'yxati.
Ob'ektga yo'naltirilgan dasturlash (OOP) a dasturlash paradigmasi kontseptsiyasi asosida "ob'ektlar "o'z ichiga olishi mumkin ma'lumotlar va kod: shaklidagi ma'lumotlar dalalar (ko'pincha sifatida tanilgan atributlar yoki xususiyatlari) va protseduralar shaklida kod (ko'pincha ma'lum: usullari ).
Ob'ektlarning o'ziga xos xususiyati shundaki, ob'ektning o'zi protseduralari ma'lumot maydonlariga kirishi va ko'pincha ularni o'zgartirishi mumkin (ob'ektlarda bu yoki o'zini o'zi). OOP da kompyuter dasturlari ularni bir-biri bilan o'zaro aloqada bo'lgan narsalardan tuzish orqali ishlab chiqiladi.[1][2] OOP tillari xilma-xil, ammo eng mashhurlari sinfga asoslangan, ob'ektlar degan ma'noni anglatadi misollar ning sinflar, bu ham ularni belgilaydi turlari.
Eng ko'p ishlatiladigan dasturlash tillarining ko'pi (masalan, C ++, Java, Python va boshqalar) ko'p paradigma va ular ob'ektga yo'naltirilgan dasturlashni katta yoki kichik darajada, odatda bilan birgalikda qo'llab-quvvatlaydi majburiy, protsessual dasturlash. Ob'ektga yo'naltirilgan muhim tillarga quyidagilar kiradi: (ro'yxat tartibiga asoslanib TIOBE indeksi )Java,C ++,C #,Python,R,PHP,Visual Basic.NET,JavaScript,Yoqut,Perl,Ob'ekt Paskal,Maqsad-C,Dart,Tez,Scala,Kotlin,Umumiy Lisp,MATLAB vaKichik munozarasi.
Xususiyatlari
Ob'ektga yo'naltirilgan dasturlash moslamalardan foydalanadi, lekin barcha tegishli texnika va tuzilmalar to'g'ridan-to'g'ri OOP-ni qo'llab-quvvatlaydigan da'vo qiladigan tillarda qo'llab-quvvatlanmaydi. Quyida keltirilgan xususiyatlar kuchli sinfiy va ob'ektga yo'naltirilgan (yoki) tillar orasida keng tarqalgan ko'p paradigma OOP ko'magi bilan), qayd etilgan istisnolardan tashqari.[3][4][5][6]
Shuningdek qarang: Dasturlash tillarini taqqoslash (ob'ektga yo'naltirilgan dasturlash) va Ob'ektga yo'naltirilgan dasturlash shartlari ro'yxati
OOP bo'lmagan tillar bilan bo'lishilgan
O'zgaruvchilar ozgina ichki o'rnatilgan formatlangan ma'lumotlarni saqlashi mumkin ma'lumotlar turlari kabi butun sonlar va alfanumerik belgilar. Bunga o'z ichiga olishi mumkin ma'lumotlar tuzilmalari kabi torlar, ro'yxatlar va xash jadvallar ichki o'rnatilgan yoki o'zgaruvchilar yordamida birlashish natijasida hosil bo'lgan xotira ko'rsatkichlari.
Protseduralar - shuningdek, funktsiyalar, usullar, odatiy ishlar yoki subroutines - ma'lumotni qabul qiladigan, chiqadigan va manipulyatsiya qiluvchi. Zamonaviy tillarga quyidagilar kiradi tizimli dasturlash kabi tuzilmalar ko'chadan va shartli.
Modulli dasturlash qo'llab-quvvatlash, protseduralarni tashkiliy maqsadlar uchun fayllar va modullarga guruhlash qobiliyatini ta'minlaydi. Modullar ism oralig'i shuning uchun bitta moduldagi identifikatorlar boshqa fayl yoki modulda bir xil nomdagi protsedura yoki o'zgaruvchiga zid bo'lmaydi.
Ob'ektlar va sinflar
Ob'ektga yo'naltirilgan dasturlashni (OOP) qo'llab-quvvatlovchi tillar odatda foydalanadi meros olish ikkala shaklda kodni qayta ishlatish va kengaytirilishi uchun sinflar yoki prototiplar. Sinflardan foydalanadiganlar ikkita asosiy tushunchani qo'llab-quvvatlaydi:
Sinflar - ma'lumotlar formatining ta'riflari va ob'ektning ma'lum bir turi yoki klassi uchun mavjud protseduralar; ma'lumotlar va protseduralarni o'z ichiga olishi mumkin (sinf usullari deb nomlanadi), ya'ni sinflar ma'lumotlar a'zolari va a'zo funktsiyalarini o'z ichiga oladi
Ob'ektlar - sinflarning misollari
Ob'ektlar ba'zan haqiqiy dunyoda topilgan narsalarga mos keladi. Masalan, grafik dasturda "aylana", "kvadrat", "menyu" kabi ob'ektlar bo'lishi mumkin. Onlayn xarid qilish tizimida "xarid qilish vositasi", "mijoz" va "mahsulot" kabi narsalar bo'lishi mumkin.[7] Ba'zida ob'ektlar ko'proq mavhum shaxslarni, masalan, ochiq faylni ifodalovchi ob'ektni yoki o'lchovlarni AQSh odatidan metrikaga o'tkazish xizmatini ko'rsatadigan ob'ektni anglatadi.
Ob'ektga yo'naltirilgan dasturlash shunchaki sinflar va ob'ektlardan ko'proq; bu atrofida dasturlashning butun paradigmasi [sic] ob'ektlar ma'lumotlar maydonlari va usullarini o'z ichiga olgan (ma'lumotlar tuzilmalari). Buni tushunish juda muhimdir; Bir-biriga bog'liq bo'lmagan bir qator usullarni birgalikda tashkil qilish uchun sinflardan foydalanish ob'ektga yo'naltirilgan emas.
Junade Ali, PHP dizayn naqshlarini o'zlashtirish.
Har bir ob'ekt an misol ma'lum bir sinf (masalan, "Meri" deb nomlangan maydon o'rnatilgan ob'ekt, "Employee" sinfining namunasi bo'lishi mumkin). Ob'ektga yo'naltirilgan dasturlashdagi protseduralar quyidagicha tanilgan usullari; o'zgaruvchilar shuningdek sifatida tanilgan dalalar, a'zolar, atributlar yoki xususiyatlar. Bu quyidagi shartlarga olib keladi:
Sinf o'zgaruvchilari - ga tegishli umuman sinf; har birining faqat bitta nusxasi mavjud.
Instansiya o'zgaruvchilari yoki atributlar - shaxsga tegishli ma'lumotlar ob'ektlar; har bir ob'ekt har birining o'z nusxasiga ega.
Ro'yxatdan o'zgaruvchilar - ma'lum bir sinf tomonidan belgilanadigan sinf va misol o'zgaruvchilariga ishora qiladi.
Sinf usullari - ga tegishli umuman sinf va protsedura chaqiruvidan faqat sinf o'zgaruvchilari va kirishlariga kirish huquqiga ega bo'ling.
Instance usullari - tegishli alohida ob'ektlarva ular chaqirilgan maxsus ob'ekt uchun kirish o'zgaruvchilari, kirish va sinf o'zgaruvchilari uchun kirish huquqiga ega.
Ob'ektlarga biroz murakkab ichki tuzilishga ega o'zgaruvchilar singari kirish mumkin va ko'p tillarda samarali bo'ladi ko'rsatgichlar, uyumdagi yoki uyumdagi xotiradagi ushbu ob'ektning bitta nusxasiga haqiqiy havolalar sifatida xizmat qiladi. Ular qatlamini ta'minlaydi mavhumlik ichki kodni tashqi koddan ajratish uchun ishlatilishi mumkin. Tashqi kod ob'ektdan ma'lum bir kirish parametrlari to'plami bilan ma'lum bir misol usulini chaqirish, misol o'zgaruvchisini o'qish yoki misol o'zgaruvchisiga yozish orqali foydalanishi mumkin. Ob'ektlar sinfda a deb nomlanuvchi maxsus usul turini chaqirish orqali yaratiladi konstruktor. Dastur mustaqil ravishda ishlaydigan bir xil sinfning ko'plab misollarini yaratishi mumkin. Bu turli xil ma'lumotlar to'plamlarida bir xil protseduralardan foydalanishning oson usuli.
Ba'zan sinflardan foydalanadigan ob'ektga yo'naltirilgan dasturlash deyiladi sinfga asoslangan dasturlash, esa prototipga asoslangan dasturlash odatda sinflardan foydalanmaydi. Natijada, tushunchalarini aniqlash uchun bir-biridan farq qiluvchi, ammo o'xshash terminologiyadan foydalaniladi ob'ekt va misol.
Ba'zi tillarda sinflar va ob'ektlar boshqa tushunchalar yordamida tuzilishi mumkin xususiyatlar va aralashmalar.
Sinflarga asoslangan prototipga asoslangan
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.
Polimorfizm
Subtiplash - shakli polimorfizm - bu kodni chaqirish agnostik bo'lishi mumkin, u qo'llab-quvvatlanadigan ierarxiyaning qaysi sinfida ishlaydi - ota-ona yoki uning avlodlaridan biri. Ayni paytda, merosxo'rlik ierarxiyasidagi ob'ektlar orasida bir xil operatsiya nomi boshqacha harakat qilishi mumkin.
Masalan, Circle and Square tipidagi ob'ektlar Shape nomli umumiy sinfdan olingan. Shaklning har bir turi uchun Draw funktsiyasi chizish uchun zarur bo'lgan narsani amalga oshiradi, kodni chaqirish esa o'ziga xos Shape turiga befarq bo'lib qolishi mumkin.
Bu sinf ierarxiyasidan tashqaridagi kodni soddalashtiradigan va kuchli qilishga imkon beradigan abstraktsiyaning yana bir turi tashvishlarni ajratish.
.

XULOSA


MITning yana bir dastlabki namunasi Sketchpad tomonidan yaratilgan Ivan Sutherland 1960–61 yillarda; Sketchpad haqidagi dissertatsiyasi asosida 1963 yil texnik hisobotining lug'atida Sutherland grafik ob'ektlar bilan ishlashga ixtisoslashgan bo'lsa ham, "ob'ekt" va "instansiya" tushunchalarini aniqladi (sinf tushunchasi "master" yoki "ta'rif" bilan qoplangan). Shuningdek, MIT ALGOL versiyasi, AED-0, ma'lumotlar tuzilmalari ("plekslar", shu shevada) va protseduralar o'rtasida to'g'ridan-to'g'ri aloqani o'rnatdi, keyinchalik "xabarlar", "usullar" va "a'zo funktsiyalari" deb nomlangan narsalarning shaklini yaratdi.
1962 yilda, Kristen Nygaard da simulyatsiya tili uchun loyihani boshladi Norvegiya hisoblash markazi, uning oldingi ishlatilishiga asoslanib Monte-Karlo simulyatsiyasi va uning real tizimlarni kontseptuallashtirish bo'yicha ishi. Ole-Yoxan Dal rasmiy ravishda loyihaga qo'shildi va Simula dasturlash tili da ishlashga mo'ljallangan edi Umumjahon avtomatik kompyuter (UNIVAC) 1107. Simula bugungi kunda ob'ektga yo'naltirilgan dasturlashning ajralmas qismi bo'lgan muhim tushunchalarni taqdim etdi sinf va ob'ekt, meros va dinamik majburiy.[16] Simula shuningdek dasturlashni hisobga olish uchun ishlab chiqilgan va ma'lumotlar xavfsizligi. Xavfsizlikni dasturlash maqsadida aniqlash jarayoni amalga oshirildi mos yozuvlar soni so'nggi chora axlat yig'uvchi ichidagi foydalanilmagan ob'ektlarni o'chirib tashladi tezkor xotira (RAM). Ma'lumotlar ob'ekti g'oyasi 1965 yilgacha paydo bo'lgan bo'lsa-da, ma'lumotlar orqali kapsulalash qamrov darajasi uchun o'zgaruvchilar xususiy (-) va public (+) singari Simulada amalga oshirilmadi, chunki u kirish protseduralarini ham yashirishni talab qiladi.[17]
Dastlabki bosqichlarda Simula dasturlash tili uchun protsedura to'plami bo'lishi kerak edi ALGOL 60. ALGOL tomonidan qo'yilgan cheklovlardan norozi bo'lgan tadqiqotchilar Simulani UNIVAC ALGOL 60 kompilyatoridan foydalangan holda to'liq dasturlash tilida ishlab chiqishga qaror qilishdi. Simula 1965 va 1966 yillarda Dahl va Nygaard tomonidan targ'ib qilinib, Shvetsiya, Germaniya va Germaniyada dasturlash tilidan tobora ko'proq foydalanishga olib keldi. Sovet Ittifoqi. 1968 yilda til orqali Burroughs B5500 kompyuterlari, va keyinchalik ham amalga oshirildi URAL-16 kompyuteri. 1966 yilda Dahl va Nygaard Simula yozdilar kompilyator. Ular amaliyotga tatbiq etish bilan ovora bo'lishdi Toni Xare Ingliz tiliga o'xshash umumiy maqsadli simulyatsiya tilida erkin shaklda amalga oshirilgan rekord sinf kontseptsiyasi SIMSCRIPT. Ular yozuvlar sinfining xususiyatlari va prefikslarning ikkinchi qatlami bilan umumlashtirilgan jarayon kontseptsiyasiga qaror qildilar. Prefiks yordamida jarayon avvalgisiga murojaat qilishi va qo'shimcha xususiyatlarga ega bo'lishi mumkin. Shunday qilib Simula sinf va subklass ierarxiyasini va shu sinflardan ob'ektlar yaratish imkoniyatini taqdim etdi.
Uchun Simula 67 kompilyatori ishga tushirildi Tizim / 360 va Tizim / 370 IBM asosiy kompyuterlari 1972 yilda. Xuddi shu yili frantsuzlar uchun Simula 67 kompilyatori bepul ishga tushirildi KII 10070 va CII Iris 80 asosiy kompyuterlar. 1974 yilga kelib, Simula foydalanuvchilari assotsiatsiyasining 23 ta turli mamlakatlardagi a'zolari bor edi. 1975 yil boshida Simula 67 kompilyatori uchun bepul chiqarilgan DECsystem-10 asosiy oila. O'sha yilning avgustiga qadar DECsystem-10 Simula 67 kompilyatori 28 ta saytga o'rnatildi, ulardan 22 tasi Shimoliy Amerikada. Ob'ektga yo'naltirilgan Simula dasturlash tili asosan ishtirok etgan tadqiqotchilar tomonidan ishlatilgan jismoniy modellashtirish, masalan, yuk portlari orqali kemalar harakatini va ularning tarkibini o'rganish va takomillashtirish modellari.
1970-yillarda, ning birinchi versiyasi Kichik munozarasi dasturlash tili da ishlab chiqilgan Xerox PARC tomonidan Alan Kay, Dan Ingalls va Adele Goldberg. Smaltalk-72 dasturiy muhitni o'z ichiga olgan va shunday bo'lgan dinamik ravishda terilgan va dastlab edi talqin qilingan, emas tuzilgan. Smalltalk ob'ektiv yo'nalishni til darajasida qo'llashi va grafik rivojlanish muhiti bilan ajralib turdi. Smalltalk turli xil versiyalardan o'tdi va tilga qiziqish ortdi.[18] Smalltalk-ga Simula 67-da kiritilgan g'oyalar ta'sir qilgan bo'lsa-da, bu sinflar dinamik ravishda o'zgartirilishi va o'zgartirilishi mumkin bo'lgan to'liq dinamik tizim sifatida ishlab chiqilgan.



Download 340.34 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




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