Mavzu: Turli muhitlarda yaratilgan dastur ob’ektlarini bog‘lash Bajardi: Tekshirdi: reja: I- bob. Kirish


Download 416.5 Kb.
bet10/10
Sana17.02.2023
Hajmi416.5 Kb.
#1205695
1   2   3   4   5   6   7   8   9   10
Bog'liq
Kurs ishi

Alan Kay
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'zgaruvchilarxususiy (-) 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 XareIngliz 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.[16] 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.[16]
1970-yillarda, ning birinchi versiyasi Kichik munozarasi dasturlash tili da ishlab chiqilgan Xerox PARC tomonidan Alan KayDan Ingalls va Adele Goldberg. Smaltalk-72 dasturiy muhitni o'z ichiga olgan va shunday bo'lgan dinamik ravishda terilganva 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.[19]
1970-yillarda Smalltalk ta'sir ko'rsatdi Lisp jamoasi qo'shmoq ob'ektga asoslangan texnikalar orqali ishlab chiquvchilarga tanishtirildi Lisp mashinasi. Lispgacha bo'lgan turli xil kengaytmalar bilan tajriba (masalan, LOOPS va Tatlar tanishtirish ko'p meros va aralashmalar) oxir-oqibat Umumiy Lisp ob'ekti tizimi, funktsional dasturlash va ob'ektga yo'naltirilgan dasturlashni birlashtiradigan va a orqali kengaytirish imkoniyatini beruvchi Meta-ob'ekt protokoli. 1980-yillarda protsessor arxitekturalarini loyihalashtirishga bir nechta urinishlar bo'lgan, ular xotiradagi ob'ektlar uchun apparat ta'minotini o'z ichiga olgan, ammo bu muvaffaqiyatsiz tugagan. Bunga misollar Intel iAPX 432 va Linn Smart Rekursiv.
1981 yilda Goldberg 1981 yil avgust sonini tahrir qildi Bayt jurnali, Smalltalk va ob'ektga yo'naltirilgan dasturlashni kengroq auditoriyaga tanishtirish. 1986 yilda Hisoblash texnikasi assotsiatsiyasi birinchisini tashkil qildi Ob'ektga yo'naltirilgan dasturlash, tizimlar, tillar va ilovalar bo'yicha konferentsiya (OOPSLA), unda kutilmaganda 1000 kishi ishtirok etdi. 1980-yillarning o'rtalarida Maqsad-C tomonidan ishlab chiqilgan Bred Koks, Smalltalk-dan kim foydalangan ITT Inc.va Bjarne StroustrupDoktorlik dissertatsiyasi uchun Simuladan foydalangan, oxir-oqibat ob'ektga yo'naltirilgan yaratishga kirishdi C ++.[18] 1985 yilda, Bertran Meyer ning birinchi dizayni ham ishlab chiqarilgan Eyfel tili. Dasturiy ta'minot sifatiga e'tibor qaratgan Eyfel bu faqat ob'ektga yo'naltirilgan dasturlash tili va butun dasturiy ta'minotni qo'llab-quvvatlovchi belgi. Meyer dasturiy ta'minot muhandisligi va kompyuter fanining oz sonli asosiy g'oyalariga asoslangan Eyfel dasturiy ta'minotini ishlab chiqish uslubini tasvirlab berdi Ob'ektga yo'naltirilgan dasturiy ta'minotni qurish. Eyfelning diqqat markazida Meyerning ishonchliligi mexanizmi muhim ahamiyatga ega. Shartnoma bo'yicha loyihalash, bu usulning ham, tilning ham ajralmas qismi.

The TIOBE dasturlash tilining mashhurlik ko'rsatkichi 2002 yildan 2018 yilgacha bo'lgan grafik. 2000 yillarda ob'ektga yo'naltirilgan Java (ko'k) va protsessual C (qora) yuqori o'rin uchun kurashdi.
1990-yillarning boshlarida va o'rtalarida ob'ektiv yo'naltirilgan dasturlash dominant dasturlash sifatida rivojlandi paradigma texnikani qo'llab-quvvatlaydigan dasturlash tillari keng tarqalganda. Ular orasida ingl FoxPro 3.0,[20][21][22] C ++,[23] va Delphi[iqtibos kerak]. Uning ustunligi tobora ommalashib borayotganligi tufayli yanada yaxshilandi grafik foydalanuvchi interfeyslari, bu asosan ob'ektga yo'naltirilgan dasturlash texnikasiga tayanadi. Yaqindan bog'liq bo'lgan dinamik GUI kutubxonasi va OOP tilining namunasini Kakao ramkalar yoqilgan Mac OS X, yozilgan Maqsad-C, ob'ektga yo'naltirilgan, Smalltalk asosida C ga kengaytirilgan dinamik xabar almashish. OOP asboblar to'plamlari ham mashhurligini oshirdi voqealarga asoslangan dasturlash (garchi bu kontseptsiya OOP bilan cheklanmasa ham).
Da ETH TsyurixNiklaus Virt va uning hamkasblari kabi mavzularni o'rganib chiqishgan ma'lumotlar abstraktsiyasi va modulli dasturlash (garchi bu 1960-yillarda yoki undan oldingi yillarda keng tarqalgan bo'lsa ham). Modula-2 (1978) ikkalasini ham o'z ichiga olgan va ularning keyingi dizayni, Oberon, ob'ektga yo'naltirish, sinflar va shunga o'xshashlarga alohida yondashuvni o'z ichiga olgan.
Ob'ektga yo'naltirilgan xususiyatlar ilgari mavjud bo'lgan ko'plab tillarga qo'shilgan, shu jumladan AdaASOSIYFortranPaskalva COBOL. Dastlab ular uchun mo'ljallanmagan tillarga ushbu xususiyatlarni qo'shish ko'pincha kodning mosligi va saqlanib qolishi bilan bog'liq muammolarga olib keldi.
Yaqinda asosan ob'ektga yo'naltirilgan, ammo protsessual metodologiyaga ham mos keladigan bir qator tillar paydo bo'ldi. Bunday ikkita til Python va Yoqut. Ehtimol, so'nggi tijorat jihatidan eng muhim ob'ektga yo'naltirilgan tillar Javatomonidan ishlab chiqilgan Quyosh mikrosistemalari, shu qatorda; shu bilan birga C # va Visual Basic.NET (VB.NET), ikkalasi ham Microsoft uchun mo'ljallangan .NET platforma. Ushbu ikkita ramkaning har biri, o'z-o'zidan, amalga oshirishdan ajralmaslikni yaratish orqali OOP-dan foydalanishning foydasini ko'rsatadi. VB.NET va C # tillararo merosni qo'llab-quvvatlaydi, bu esa bitta tilda belgilangan sinflarga boshqa tilda belgilangan subklass sinflariga imkon beradi.
OOP tillari
Shuningdek qarang: Ob'ektga yo'naltirilgan dasturlash tillari ro'yxati
Simula (1967) odatda ob'ektga yo'naltirilgan tilning asosiy xususiyatlariga ega bo'lgan birinchi til sifatida qabul qilinadi. Bu qilish uchun yaratilgan simulyatsiya dasturlari, unda ob'ektlar deb ataladigan narsa eng muhim ma'lumotni taqdim etdi. Kichik munozarasi (1972 yildan 1980 yilgacha) yana bir dastlabki misol va OOP nazariyasining katta qismi ishlab chiqilgan. Ob'ektga yo'naltirilganlik darajasi to'g'risida quyidagilarni ajratish mumkin:
"Toza" OO tillari deb nomlangan tillar, chunki ulardagi hamma narsa doimiy ravishda ob'ekt sifatida qaraladi, masalan, belgilar va punktuatsiya kabi ibtidoiylardan tortib to butun sinflargacha, prototiplar, bloklar, modullar va boshqalar. hatto OO usullarini bajaring. Misollar: YoqutScalaKichik munozarasiEyfelZumrad,[24] JadeO'ziRaku.
Tillar asosan OO dasturlash uchun mo'ljallangan, ammo ba'zi protsessual elementlarga ega. Misollar: JavaPythonC ++C #Delphi / Object PascalVB.NET.
Tarixiy jihatdan mavjud bo'lgan tillar protsessual tillar, lekin ba'zi bir OO funktsiyalari bilan kengaytirilgan. Misollar: PHPPerlVisual Basic (BASICdan olingan), MATLABCOBOL 2002 yilFortran 2003 yilABAPAda 95Paskal.
Ob'ektlarning aksariyat xususiyatlariga ega bo'lgan tillar (sinflar, usullar, meros), lekin aniq o'ziga xos shaklda. Misollar: Oberon (Oberon-1 yoki Oberon-2).
Bilan tillar mavhum ma'lumotlar turi OO dasturlashiga o'xshash bo'lishi mumkin bo'lgan qo'llab-quvvatlash, ammo ob'ektga yo'naltirilgan barcha xususiyatlarsiz. Bunga quyidagilar kiradi ob'ekt-asoslangan va prototipga asoslangan tillar. Misollar: JavaScriptLuaModula-2CLU.
Bir nechta paradigmalarni qo'llab-quvvatlaydigan xameleyon tillari, shu jumladan OO. Tcl ikkalasini ham qo'llab-quvvatlaydigan gibrid ob'ektlar tizimi TclOO uchun bular orasida ajralib turadi prototipga asoslangan dasturlash va sinfga asoslangan OO.
Dinamik tillarda OOP
So'nggi yillarda ob'ektga yo'naltirilgan dasturlash ayniqsa mashhur bo'lib kelmoqda dinamik dasturlash tillariPythonPowerShellYoqut va Groovy OOP printsiplari asosida qurilgan dinamik tillar, ammo Perl va PHP Perl 5 va PHP 4 dan beri ob'ektga yo'naltirilgan xususiyatlarni qo'shib kelmoqdalar va ColdFusion 6-versiyadan beri.
The Hujjat ob'ekti modeli ning HTMLXHTMLva XML Internetdagi hujjatlar ommabop narsalar bilan bog'liq JavaScript/ECMAScript til. JavaScript, ehtimol, eng taniqli prototipga asoslangan dasturlash sinf, meros qilib olish o'rniga prototiplardan klonlashni qo'llaydigan til (farqli o'laroq sinfga asoslangan dasturlash). Ushbu yondashuvni qo'llaydigan yana bir skript tili Lua.
Tarmoq protokolidagi OOP
Mijoz-server muhitida xizmatlarni so'rash uchun kompyuterlar o'rtasida oqadigan xabarlar, mijozga ham, serverga ham ma'lum bo'lgan sinf ob'ektlari tomonidan aniqlangan ob'ektlarni chiziqli yo'naltirish sifatida ishlab chiqilishi mumkin. Masalan, oddiy chiziqli ob'ekt uzunlik maydoni, sinfni aniqlaydigan kod nuqtasi va ma'lumotlar qiymatidan iborat bo'ladi. Buyruqning uzunligi va kod nuqtasidan iborat bo'lgan buyruq va buyruq parametrlarini ifodalovchi chiziqli moslamalardan tashkil topgan buyruq yanada murakkab misol bo'lishi mumkin. Har bir bunday buyruq server tomonidan sinf (yoki superklass) buyruqni tanigan va so'ralgan xizmatni taqdim eta oladigan ob'ektga yo'naltirilishi kerak. Mijozlar va serverlar eng yaxshi ob'ektga yo'naltirilgan tuzilmalar sifatida modellashtirilgan. Tarqatilgan ma'lumotlar boshqaruvi arxitekturasi (DDM) ushbu yondashuvni qo'llagan va rasmiy iyerarxiyaning to'rt darajasidagi ob'ektlarni aniqlash uchun sinf ob'ektlaridan foydalangan:
Xabarlarni shakllantiradigan ma'lumotlar qiymatlarini belgilaydigan maydonlar, masalan, ularning uzunligi, kod nuqtasi va ma'lumotlar qiymatlari.
A da topilgan narsalarga o'xshash narsalar va ob'ektlar to'plamlari Kichik munozarasi xabarlar va parametrlar uchun dastur.
O'xshash menejerlar AS / 400 obyektlarimasalan, metadata va yozuvlardan tashkil topgan fayllar va fayllar katalogi. Menejerlar kontseptual ravishda o'z ichiga olgan ob'ektlar uchun xotira va qayta ishlash resurslarini taqdim etadi.
To'liq ishlov berish muhitini amalga oshirish uchun zarur bo'lgan barcha menejerlardan tashkil topgan mijoz yoki server katalog xizmatlari, xavfsizlik va bir vaqtda boshqarish kabi jihatlarni qo'llab-quvvatlaydi.
DDM-ning dastlabki versiyasi tarqatilgan fayl xizmatlarini aniqladi. Keyinchalik poydevor bo'lishi uchun kengaytirildi Tarqatilgan relyatsion ma'lumotlar bazasi arxitekturasi (DRDA).
Dizayn naqshlari
Ob'ektga yo'naltirilgan dizayndagi muammolarni bir necha yondashuvlar hal qiladi. Eng keng tarqalgan Gamma tomonidan kodlangan dizayn naqshlari va boshq.. Kengroq ma'noda "atamasi"dizayn naqshlari"dasturiy ta'minotni loyihalashda tez-tez uchrab turadigan har qanday umumiy, takrorlanadigan, echim namunalariga murojaat qilish uchun foydalanish mumkin. Ushbu tez-tez uchraydigan muammolarning ba'zilari ob'ektga yo'naltirilgan rivojlanish uchun ta'sir va echimlarga ega.
Meros va xulq-atvor subtipasi
Shuningdek qarang: Ob'ektga yo'naltirilgan dizayn
Bu merosni yaratadi deb taxmin qilish intuitivdir semantik "a"munosabatlar, va shuning uchun subklasslardan kelib chiqqan narsalar har doim ham bo'lishi mumkin xavfsiz superklassdan kelib chiqadiganlar o'rniga ishlatiladi. Ushbu sezgi, afsuski, aksariyat OOP tillarida, xususan, ruxsat beradigan barcha tillarda yolg'ondir o'zgaruvchan ob'ektlar. Polimorfizmning pastki turi tomonidan bajarilgan turi tekshiruvi OOP tillarida (o'zgaruvchan ob'ektlar bilan) kafolat bera olmaydi xulq-atvori subtipasi har qanday sharoitda. Xulq-atvorni subtitrlash umuman hal qilinmaydi, shuning uchun uni dastur (kompilyator) amalga oshira olmaydi. Sintaktik ravishda aniqlab bo'lmaydigan mumkin bo'lmagan noto'g'ri foydalanishni hisobga olgan holda, sinf yoki ob'ektlar ierarxiyalari puxta ishlab chiqilishi kerak. Ushbu masala Liskovni almashtirish printsipi.
To'rt dizayn naqshlarining to'dasi
Asosiy maqola: Dizayn namunasi (informatika)
Dizayn naqshlari: Qayta foydalaniladigan ob'ektga yo'naltirilgan dasturiy ta'minot elementlari tomonidan nufuzli kitob bo'lib, 1994 yilda nashr etilgan Erix GammaRichard XelmRalf Jonsonva Jon Vlissidlar, ko'pincha hazil bilan "To'rt kishining to'dasi" deb nomlanadi. Ob'ektga yo'naltirilgan dasturlashning imkoniyatlari va tuzoqlarini o'rganish bilan bir qatorda, 23 umumiy dasturlash muammolari va ularni hal qilish naqshlari tasvirlangan. 2007 yil aprel oyidan boshlab kitob o'zining 36-nashrida edi.
Kitobda quyidagi naqshlar tasvirlangan:
Yaratilish naqshlari (5): Zavod usuli uslubiMavhum zavod namunasiSingleton naqshlariQuruvchi namunasiPrototip namunasi
Strukturaviy naqshlar (7): Adapter naqshlariKo'prik naqshlariKompozit naqshDekorativ naqshFasad naqshlariUchish tartibiProksi-server namunasi
Xulq-atvor naqshlari (11): Mas'uliyat zanjiriBuyruq namunasiTarjimon naqshlariTakrorlovchi naqshMediator naqshlariYodgorlik naqshlariKuzatuvchi naqshlariDavlat naqshlariStrategiya sxemasiShablon uslubi namunasiMehmonlar namunasi
Ob'ektga yo'naltirish va ma'lumotlar bazalari
Asosiy maqolalar: Ob'ekt-relyatsion impedansning mos kelmasligiOb'ekt-relyatsion xaritalashva Ob'ektlar ma'lumotlar bazasi
Ikkala ob'ektga yo'naltirilgan dasturlash va relyatsion ma'lumotlar bazasini boshqarish tizimlari (RDBMS) bugungi kunda dasturiy ta'minotda juda keng tarqalgan. Beri relyatsion ma'lumotlar bazalari ob'ektlarni to'g'ridan-to'g'ri saqlamang (garchi ba'zi RDBMS-larda buni taxmin qilish uchun ob'ektga yo'naltirilgan xususiyatlar mavjud bo'lsa ham), ikkita dunyoni birlashtirishga umumiy ehtiyoj mavjud. Relyatsion ma'lumotlar bazalari bilan ob'ektga yo'naltirilgan dasturiy ta'minotni va ma'lumotlar naqshlarini ko'paytirish muammosi ma'lum ob'ekt-munosabat impedansining mos kelmasligi. Ushbu muammoni hal qilish uchun bir qator yondashuvlar mavjud, ammo salbiy tomonlarsiz umumiy echim yo'q.[25] Eng keng tarqalgan yondashuvlardan biri ob'ekt-relyatsion xaritalash, topilganidek IDE kabi tillar Visual FoxPro kabi kutubxonalar Java ma'lumotlar ob'ektlari va Ruby on Rails'ActiveRecord.
Shuningdek, bor ob'ekt ma'lumotlar bazalari RDBMSlarni almashtirish uchun ishlatilishi mumkin, ammo ular RDBMSlar kabi texnik va tijorat jihatdan muvaffaqiyatli bo'lmagan.
Haqiqiy dunyoda modellashtirish va munosabatlar
OOP real ob'ektlar va jarayonlarni raqamli analoglar bilan bog'lash uchun ishlatilishi mumkin. Biroq, OOP to'g'ridan-to'g'ri real xaritalashni osonlashtirganiga hamma ham qo'shilmaydi (qarang Tanqid bo'lim) yoki haqiqiy dunyo xaritasi hatto munosib maqsaddir; Bertran Meyer da'vo qilmoqda Ob'ektga yo'naltirilgan dasturiy ta'minotni qurish dastur dunyoning modeli emas, balki dunyoning ba'zi qismlarining modeli ekanligi; "Haqiqat - bu ikki marta olib tashlangan amakivachcha". Shu bilan birga, OOPning ba'zi asosiy cheklovlari qayd etildi. Masalan, doira-ellips muammosi ning OOP kontseptsiyasi yordamida ishlov berish qiyin meros olish.
Biroq, Niklaus Virt (hozirda ma'lum bo'lgan maqolni kim ommalashtirdi Virt qonuni: "Dasturiy ta'minot tezroq bo'lishidan ko'ra dasturiy ta'minot tezroq sekinlashmoqda") o'z maqolasida OOP haqida, "Ko'zoynak oynasi orqali yaxshi g'oyalar", "Ushbu paradigma" real dunyoda "tizimlarning tuzilishini yaqindan aks ettiradi va shuning uchun ham murakkab xatti-harakatlar bilan murakkab tizimlarni modellashtirish uchun juda mos keladi " (kontrast) KISS printsipi).
Stiv Yegge va boshqalar ta'kidlashlaricha, tabiiy tillarda qat'iy ustuvorlik berishning OOP usuli yo'q narsalar (ob'ektlar /otlar) oldin harakatlar (usullar /fe'llar). Ushbu muammo OOPni protsessual dasturlashdan ko'ra ko'proq chalkash echimlarga olib kelishi mumkin.
OOP va boshqaruv oqimi
OOP ni oshirish uchun ishlab chiqilgan qayta foydalanish va saqlab qolish qobiliyati manba kodi. Ning shaffof namoyishi oqim oqimi ustuvorligi yo'q edi va kompilyator tomonidan ko'rib chiqilishi kerak edi. Parallel apparatlarning dolzarbligi oshib borishi bilan va ko'p tishli kodlash, shaffof boshqaruv oqimini rivojlantirish muhimroq bo'lib, OOP bilan erishish qiyin.
Ma'suliyat va ma'lumotlarga asoslangan dizayn
Mas'uliyatga asoslangan dizayn sinflarni shartnoma asosida belgilaydi, ya'ni sinf mas'uliyat va u baham ko'radigan ma'lumot atrofida aniqlanishi kerak. Bu Wirfs-Brock va Wilkerson tomonidan farqlanadi ma'lumotlarga asoslangan dizayn, bu erda o'tkazilishi kerak bo'lgan ma'lumotlar tuzilmalari atrofida sinflar aniqlanadi. Mualliflar mas'uliyatga asoslangan dizaynni afzal ko'rishadi.
SOLID va GRASP ko'rsatmalari
Qattiq Maykl Feathers tomonidan ixtiro qilingan va beshta dasturiy amaliyotni qo'llab-quvvatlaydigan mnemonik:
Yagona javobgarlik printsipi
Ochiq / yopiq printsip
Liskovni almashtirish printsipi
Interfeysni ajratish printsipi
Qaramlik inversiyasi printsipi
Tushunish (Umumiy javobgarlikni tayinlash uchun dasturiy ta'minot naqshlari) - bu yana bir qator ko'rsatmalar Kreyg Larman.
Tanqid
OOP paradigmasi bir qator sabablarga ko'ra tanqid qilindi, jumladan, takroriy foydalanish va modullikning belgilangan maqsadlariga javob bermaslik, va boshqa muhim jihatlar (hisoblash / algoritmlar) hisobidan dasturiy ta'minotni loyihalash va modellashtirishning bir jihatiga (ma'lumotlar / ob'ektlar) haddan tashqari ahamiyat berish uchun.
Luka Kardelli OOP kodi protsessual kodga qaraganda "ichki jihatdan unchalik samarasiz", OOP kompilyatsiya qilish uchun ko'proq vaqt ketishi mumkinligi va OOP tillari "sinf kengayishi va modifikatsiyasiga nisbatan juda yomon modullik xususiyatlariga ega" va juda murakkab bo'lishga moyilligini da'vo qildi. Oxirgi nuqta yana takrorlanadi Djo Armstrong, ning asosiy ixtirochisi Erlang, kimning so'zlari keltirilgan:
Ob'ektga yo'naltirilgan tillarning muammosi shundaki, ular o'zlari bilan olib yuradigan barcha yashirin muhitga ega. Siz bananni xohlar edingiz, ammo sizda banan va butun o'rmonni ushlab turgan gorilla bor edi.
Potok va boshqalarning tadqiqotlari. OOP va protsessual yondashuvlar o'rtasida mahsuldorlikda sezilarli farqni ko'rsatmadi.
Kristofer J. Sana OOPni boshqa texnologiyalar bilan tanqidiy taqqoslash, xususan, relyatsion, OOPning kelishilgan va qat'iy ta'rifi yo'qligi sababli; ammo, Sana va Darven OOP-ni bir xil sozlanishi sifatida ishlatadigan OOP bo'yicha nazariy asosni taklif qilishdi tizim turi qo'llab quvvatlamoq RDBMS
Maqolasida Lourens Krubner boshqa tillar bilan taqqoslaganda (LISP shevalari, funktsional tillar va boshqalar) OOP tillari o'ziga xos kuchli tomonlarga ega emasligini va keraksiz murakkablikning og'ir yukini ko'tarishini ta'kidladi
Aleksandr Stepanov ob'ekt yo'nalishini noqulay bilan taqqoslaydi umumiy dasturlash:[38]
Men OOPni texnik jihatdan asossiz deb bilaman. U dunyoni bitta turga qarab o'zgaradigan interfeyslar nuqtai nazaridan ajratishga harakat qiladi. Haqiqiy muammolarni hal qilish uchun sizga ko'p qirrali algebralar kerak - bir nechta turlarni o'z ichiga olgan interfeyslar oilalari. Men OOPni falsafiy jihatdan asossiz deb bilaman. Hamma narsa ob'ekt deb da'vo qilmoqda. Hatto rost bo'lsa ham, bu unchalik qiziq emas - hamma narsa ob'ekt deb aytish hech narsa demaydi.
Pol Grem OOPning yirik kompaniyalar orasida mashhurligi "o'rtacha dasturchilarning katta (va tez-tez o'zgarib turadigan) guruhlari" bilan bog'liq deb taxmin qildi. Gremning so'zlariga ko'ra, OOP tomonidan qo'llaniladigan intizom har qanday dasturchining "juda ko'p zarar" qilishiga yo'l qo'ymaydi.
Leo Brodi ob'ektlarning mustaqil tabiati va moyilligi o'rtasidagi bog'liqlikni taklif qildi takroriy kodhttps://uz.vvikipedla.com/wiki/Object-oriented_programming - cite_note-45 buzilishi bilan o'zingizni takrorlamang tamoyil dasturiy ta'minotni ishlab chiqish.
Stiv Yegge aksincha ekanligini ta'kidladi funktsional dasturlash:
Ob'ektga yo'naltirilgan dasturlash birinchi navbatda ismlarni qo'yadi. Nutqning bir qismini postamentga qo'yish uchun nega bunday uzunlikka borasiz? Nima uchun bir turdagi tushunchalar boshqasidan ustun turishi kerak? OOP to'satdan fe'llarni biz o'ylaydigan tarzda ahamiyatsizlashtirganga o'xshamaydi. Bu g'alati qiyshiq istiqbol.
Boy Hikki, yaratuvchisi Klojure, ob'ekt tizimlarini real dunyoning haddan tashqari soddalashtirilgan modellari sifatida tavsifladi. U OOPning vaqtni to'g'ri modellashtirishga qodir emasligini ta'kidladi, chunki dasturiy ta'minot tizimlari bir-biriga o'xshashligi sababli tobora muammoli bo'lib bormoqda.
Erik S. Raymond, a Unix dasturchi va ochiq manbali dasturiy ta'minot advokat, ob'ektga yo'naltirilgan dasturlashni "Bitta haqiqiy echim" sifatida ko'rsatadigan da'volarga tanqidiy munosabatda bo'lib, ob'ektga yo'naltirilgan dasturlash tillari shaffoflikni yo'q qiladigan qalin qatlamli dasturlarni rag'batlantirishga moyilligini yozgan. Raymond buni Unix va C dasturlash tili.
Download 416.5 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




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