Obyektke baǵdarlanǵan programmalastırıw

Obyektke baǵdarlanǵan programmalastırıw (OBP, ingl. Object-orinted programming,OOP) − bul obyektler koncepciyasına tiykarlanǵan programmalastırıw paradigması,[1] onıń quramında maǵlıwmatlar menen kod bolıwı múmkin: maydanlar (ingl. field (computer science)) kórinisindegi maǵlıwmatlar (kóbinese atributlar menen qásiyetler retinde belgili) hám proceduralar kórinisindegi kod (kóbinese belgili metodlar retinde). OBP-da kompyuter programmaları olardı bir-biri menen óz-ara baylanısta bolǵan obyektlerden jaratıw arqalı islep shıǵıladı.[2]

Klasqa arnalǵan UML belgisi. Bul Button klasında maǵlıwmatlar menen funkciyalarǵa arnalǵan ózgeriwshileri bar. Miyraslıq arqalı ishki klasta Button klasınıń ishki toplamı retinde jaratıwǵa boladı. Obyektler klası úlgileri bolıp tabıladı.

Eń kóp qollanılatuǵın programmalastırıw tilleriniń kópshilgi (mısalı C++, Java,[3] Python h.t.b.) kóp paradigma bolıp tabıladı hám olar ádette imperativ programmalastırıw, proceduralı programmalastırıw hám funkcional programmalastırıw menen úylesimde úlken yamasa az dárejede obyektke baǵdarlanǵan programmalastırıwdı qollaydı.

Obyektke baǵdarlanǵan zárúr tillerge Ada, ActionScript, C++, Common Lisp, C#, Dart, Eiffel, Fortran 2003, Haxe, Java,[3] Kotlin, Logo, MATLAB, Objective-C, Object Pascal, Perl, PHP, Python, R, Raku., Ruby, Scala, SIMSCRIPT, Simula, Smalltalk, Swift, Vala hám Visual Basic.NET tilleri kiredi.

Obyektke baǵdarlanǵan programmalastırıwdıń zamanagóy mánisinde “obyektlerdi” shaqıratuǵın terminologiya dáslepki ret 1950-jıllardıń ayaǵı menen 1960-jıllardıń basında MIT jasalma intellekt toparında payda boldı. “Obyekt” anıqlanǵan qásiyetleri (atributları) bar LISP atomlarına baylanıslı.[4][5] MIT-tiń taǵı bir erte úlgisi 1960–1961 jılları Ivan Sazerlend tárepinen jaratılǵan eskiz taqtası edi; Sketchpad tuwralı dissertaciyasınıń tiykarında 1963-jılǵı texnikalıq esaptıń glossariyinde Sazerlend grafikalıq óz-ara háreketlesiw ushın arnawlı bolsa da, “obyekt” hám “úlgi” túsiniklerin (“sheber” yamasa “anıqlama”nı óz ishine alatuǵın klass túsinigi menen) anıqladı. Sonday-aq, 1968-jılı MIT ALGOL versiyası, AED-0, keyinirek “xabarlar”, “usıllar” hám “aǵza funkciyaları” dep atalatuǵınlardı aldınnan anıqlap, maǵlıwmatlar strukturaları (“pleksler”, usı dialektte) menen proceduralar arasında tikkeley baylanıs ornattı.[6][7] Maǵlıwmatlardı abstrakciyalaw hám modullik programmalastırıw sıyaqlı temalar usı waqıtta ulıwmalıq dodalawda boldı.

AED sıyaqlı keyinirek MIT jumısına ǵárezsiz, Simula 1961–1967 jılları islep shıǵarıldı. Simula búgingi kúnde obyektke baǵdarlanǵan programmalastırıwdıń tiykarǵı bólimi bolıp tabılatuǵın klass penen obyekt, miyrasxorlıq hám dinamikalıq baylanıstırıw sıyaqlı zárúr túsiniklerdi engizdi. Obyektke baǵdarlanǵan Simula programmalastırıw tilin tiykarınan fizikalıq modellestiriw menen shuǵıllanatuǵın izertlewshiler paydalandı, mısalı kemelerdiń qozǵalısın hám olardıń mazmunın júk portları arqalı izertlew hám jaqsılaw ushın modeller.[8]

Ózgeshelikleri

redaktorlaw

Obyektke baǵdarlanǵan programmalastırıw obyektlerdi paydalanadı, biraq barlıq baylanıslı texnikalar menen strukturalarǵa OBP qollaytuǵın tillerde tikkeley qollap quwatlanbaydı. Tómende kórsetilgen imkaniyatlar, atap ótilgen ózgesheliklerdi qospaǵanda, kúshli klasqa hám obyektke baǵdarlanǵan (yamasa OBP qollawı bar kóp paradigma) bolıp esaplanatuǵın tiller arasında keń tarqalǵan.[9] Kristofer Dj. Dayt OBP-nı basqa texnologiyalar menen sınıy salıstırıw, ásirese relyaciyalıq, OBP-nıń kelisilgen hám qatań qıyın anıqlamasınıń joq ekenin ayttı.

OBP-nı qollamaytuǵın tiller menen birge

redaktorlaw
  • Pútin hám qatarlı-sanlı simvollar sıyaqlı ornatılǵan maǵlıwmatlar tipleriniń az sanında formatlanǵan informaciyanı saqlay alatuǵın ózgeriwshiler. Bul qatarlar, dizimler hám xesh kesteleri sıyaqlı maǵlıwmatlar strukturaların qamtıwı múmkin, olar ornatılǵan yamasa yad kórsetkishlerin paydalanıp ózgeriwshilerdi biriktiriw nátiyjesinde payda boladı.
  • Proceduralar − funkciyalar, metodlar, tártipler yamasa ishki programmalar retinde de belgili − kirgiziwdi qabıllaytuǵın, shıǵıwdı jaratatuǵın hám maǵlıwmatlardı qayta isleytuǵın boladı. Zamanagóy tillerge cikller menen shártler sıyaqlı strukturalıq programmalastırıw strukturaları kiredi.

Modulli programmalastırıwdı qollaw shólkemleskenlik maqsetler ushın proceduralardı fayllar menen modullerge gruppalaw imkaniyatın beredi. Moduller bir moduldegi identifikatorlar basqa faylda yamasa modulde birdey attı ulıwma paydalanatuǵın proceduraǵa yamasa ózgeriwshige qarama-qarsı kelmewi ushın atlar keńisligi bolıp tabıladı.

Obyektler

redaktorlaw

Obyekt − maydanlardı (maǵlıwmatları bar ózgeriwshiler) hám metodlardı (kodtaǵı obyekttiń háreketin anıqlaytuǵın ishki programmalar yamasa proceduralar) óz ishine alatuǵın maǵlıwmatlar strukturası yamasa abstrakt maǵlıwmatlar tipi. Maydanlar aǵzalar, atributlar yamasa qásiyetler retinde de belgili bolıwı múmkin. Obyekter ádette yadtıń qońsı aymaqları retinde saqlanadı. Obyektlerge quramalı ishki strukturaları bar ózgeriwshiler sıyaqlı erisiledi hám kóplegen tillerge úy yamasa stek ishindegi yadtaǵı atalǵan obyekttiń danasına anıq siltemeler retinde xızmet etetuǵın ónimli kórsetkishler bolıp tabıladı.

Obyektler geyde anıq dúnyada tabılǵan zatlarǵa sáykes keledi. Mısalı, grafikalıq programmada “sheńber”, “kvadrat” hám “menyu” sıyaqlı obyektler bolıwı múmkin. Onlayn-sawda sistemasında “satıp alıw”, “tutınıwshı” hám “ónim” sıyaqlı obyektler bolıwı múmkin. Geyde obyektler ashıq fayldı kórsetetuǵın obyekt yamasa ólshemlerdi AQSH-tan metrikaǵa awdarıw xızmetin usınatuǵın obyekt sıyaqlı abstrakt obyektlerdi kórsetedi.

Obyektler ózleriniń ózgeriwshi mısallarında basqa obyektlerdi óz ishine alıwı múmkin; bul obyekt kompoziciyası retinde belgili. Mısalı, Employee klasındaǵı obyektte "first_name" hám "position" sıyaqlı óziniń ózgeriwshi mısal mánislerine qosımsha Mákanjay (Adress) klasında obyekt bolıwı múmkin (tikkeley yamasa kórsetkish arqalı). Obyekt quramı “has-a” qatnasların kórsetiw ushın paydalanıladı: hárbir xızmetkerdiń mákanjayı bar, sonlıqtan hárbir xızmetker obyekti Adress obyektin saqlaw ornına erise aladı (yamasa onıń ishinde tikkeley kirgizilgen yamasa kórsetkish arqalı adreslengen bólek jerde). Date hám Darwen RDBMS qollap-quwatlaw ushın OBP ózine tán tipli sistema tipi retinde paydalanatuǵın teoriyalıq tiykardı usındı, biraq ol obyekt kórsetkishlerine tıyım saladı.

OBP paradigması basqa zárúr aspektler (esaplaw/algoritmler) esabınan programmalıq támiynattı proektlestiriw hám modellestiriw ushın obyektlerdi paydalanıwdı hádden tıs atap ótiw ushın sınǵa ushıradı. Mısalı, Rob Payk OBP tilleri fokustı maǵlıwmatlar strukturaları menen algoritmlerden tiplerge jiyi almastıratuǵının ayttı.[10] Stiv Yegge funkcional programmalastırıwǵa qarsı ekenin atap ótti:[11] “Obyektke baǵdarlanǵan programmalastırıw atlıqlardı birinshi orınǵa qoyadı. Ne ushın siz sózdiń bir bólegin qaptalǵa qoyıw ushın sonshelli uzaqqa barasız? Ne ushın túsiniktiń bir túri ekinshisinen basım bolıwı kerek? OBP tosattan feyillerdi biz oylaǵanday zárúr etip jibergen sıyaqlı emes. Bul birtúrli qıysıq kózqaras.”  Clojure jaratıwshısı Rich Xiki obyektli sistemalardı anıq dúnyanıń dım ápiwayı modelleri retinde táriypledi. Ol OBP-nıń waqıttı durıs modellestiriwge qábiletsizligin atap ótti, bul programmalıq támiynat sistemaları bir máwritte bolǵan sayın mashqalalı boladı.

Aleksandr Stepanov obyektli baǵdarlawdı ulıwma programmalastırıw menen qolaysız salıstıradı:[12] “Men OBP-nı texnikalıq jaqtan durıs emes dep esaplayman. Ol bir túrge qarap ózgeretuǵın interfeysler tárepinen dúnyanı bóleklewge háreket etedi. Anıq máselelerdi sheshiw ushın sizge kóp saralanǵan algebralar − bir neshe tipti óz ishine alatuǵın interfeysler toparı kerek. Men OBP-nı filosofiyalıq jaqtan durıs emes dep esaplayman. Ol barlıq nárse obyekt ekenin aytadı. Ras bolsa da, bul júdá qızıq emes − hámmesin obyekt dew durıs emes.” 

Miyrasxorlıq

redaktorlaw

OBP tilleri hár túrli, biraq ádette OBP tilleri kodtı qayta paydalanıw ushın miyrasqa alıwǵa hám klaslar yamasa prototipler túrinde keńeytiwge imkaniyat beredi. Miyrasxorlıqtıń bul obyektleri aytarlıqtay ózgeshelenedi, biraq analog terminologiya obyekt hám instanciya túsiniklerin anıqlaw ushın qollanıladı.

Klasqa tiykarlanǵan

redaktorlaw

Klasqa tiykarlanǵan programmalastırıwda, eń ataqlı stil hárbir obyekt belgili bir klastıń úlgisi bolıwı talap etiledi. Klass maǵlıwmatlar formatın yamasa tipin (aǵza ózgeriwshi mánislerin hám olardıń tiplerin qosqanda) hám obyekttiń berilgen túri yamasa klası ushın qoljetimli proceduralardı (klass metodları yamasa aǵza funkciyaları) anıqlaydı. Obyektler konstruktor retinde belgili klastaǵı metodtıń arnawlı túrin shaqırıw arqalı jasaladı. Klaslar basqa klaslardan miyrasqa iye bolıwı múmkin, sonlıqtan olar “túri” qatnasların kórsetetuǵın ierarxiyada jaylasadı. Mısalı, Employee klası Person klasınan miyrasxor bolıwı múmkin. Ata-analıq klasqa qoljetimli barlıq maǵlıwmatlar menen metodlar birdey atlar menen bala klasta da payda boladı. Mısalı, Person klası "first_name" hám "last_name" ózgeriwshi mánislerin "make_full_name()" metodı menen anıqlawı múmkin. Olar sonıń menen bir qatarda, "position" hám "salary" ózgeriwshi mánislerin qosıwı múmkin Employee klasında qoljetimli boladı. Employee klasınıń barlıq úlgilerinde name, position, hám salary sıyaqlı birdey ózgeriwshiler bolatuǵınına kepillik beriledi. proceduralar menen ózgeriwshiler klasqa yamasa úlgige sáykes bolıwı múmkin; bul tómendegi terminlerge alıp keledi:

  • Klass ózgeriwshileri − tutas klasqa kiredi; klastıń barlıq danalarında ulıwma paydalanatuǵın hárbir ózgeriwshiniń bir ǵana kóshirmesi bar.
  • Dana ózgeriwshileri yamasa atributları − jeke obyektlerge kiretuǵın maǵlıwmatlar; hárbir obyekttiń hárqaysısınıń óz kóshirmesi boladı. Joqarıdaǵı atalǵan 4 ózgeriwshiniń barlıǵı (first_name, position h.t.b.) dana ózgeriwshileri bolıp tabıladı.
  • Aǵza ózgeriwshi mánisleri − belgili bir klass penen anıqlanǵan klass penen dana ózgeriwshi mánislerin bildiredi.
  • Klass metodları − pútkil klasqa tiyisli hám tek klass ózgeriwshileri menen procedura shaqırıwınıń kiriwine erise aladı.
  • Dana metodları (ingl. instance methods) − jeke obyektlerge kiredi hám olar shaqırılatuǵın anıq obyekt, kiriwler hám klass ózgeriwshileri ushın ózgeriwshi mánislerine erise aladı.

Tildiń anıqlamasına baylanıslı ishki klaslar superklaslar menen anıqlanǵan metodlardı biykarlawı múmkin yamasa almawı múmkin. Ayırım tillerde bir neshe miyrasqa ruqsat etilgen, biraq bul qayta anıqlawdı sheshiwdi qıyınlastırıwı múmkin. Ayırım tillerde belgiler menen miksinler sıyaqlı basqa koncepciyalar ushın arnawlı qollaw bar, degen menen, bir neshe miyrasqa iye bolǵan hár qanday tilde miksin - bul qatnas túrin kórsetpeytuǵın klass. Miksinler ádette bir neshe klasqa birdey metodlardı qosıw ushın paydalanıladı. Mısalı, UnicodeConversionMixin klası FileReader hám WebPageScraper klasına qosılǵanda unicode_to_ascii() metodın támiyinlewi múmkin, olar ulıwma ata-ananı bólispeydi.

Abstrakt klaslardı obyektlerge kirgiziw múmkin emes; olar tek úlgili bolıwı múmkin bolǵan basqa “anıq” klaslarǵa miyrasxorlıq ushın ǵana bar. Java tilinde final gilt sózi klastıń ishki klasına imkaniyat bermew ushın paydalanılıwı múmkin.[13]

Prototipke tiykarlanǵan

redaktorlaw

Kerisinshe, prototipke tiykarlanǵan programmalastırıwda obyektler tiykarǵı obyekt bolıp tabıladı. Ulıwma, “klass” túsinigi ulıwma joq. Kerisinshe, obyekttiń prototipi yamasa ata-anası obyekt baylanıstırılǵan basqa obyekt ǵana. Self ishinde obyekttiń bir neshe ata-anası bolıwı múmkin yamasa bolmawı da múmkin,[14] biraq eń ataqlı prototipke tiykarlanǵan tilde Javascript, hárbir obyektte bir prototiplik silteme (hám bir ǵana) boladı. Jańa obyektlerdi olardıń prototipi retinde tańlanǵan burınnan bar obyektler tiykarında jasawǵa boladı. Siz eki túrli obyektti alma menen apelsindi miywe dep atay alasız, eger obyektte miywe bar bolsa hám alma menen apelsinniń ekewinde de olardıń prototipi miywe bolsa. Miyweler klasınıń ideyası anıq túrde joq, biraq bir prototipti ulıwma paydalanatuǵın obyektlerdiń ekvivalentlik klası retinde yamasa belgili bir interfeysti qanaatlandıratuǵın obyektler jıynaǵı retinde (duck typing) modellestiriwge boladı. Klasqa tiykarlanǵan programmalastırıwdan ayırmashılıǵı, ádette prototipke tiykarlanǵan tillerde basqa obyektler menen ulıwma emes atributlar menen metodlardı anıqlawǵa boladı; mısalı, sugar_content atributı almada anıqlanıwı múmkin, biraq apelsin emes.

Go sıyaqlı ayırım tiller miyrastı ulıwma qollap-quwatlamaydı. Go onıń obyektke baǵdarlanǵanın aytadı,[15] al C++ avtorı Byarn Stroustrup miyrassız OBP-nı ámelge asırıwǵa bolatuǵının ayttı. Miyras ústine kompoziciya haqqındaǵı ilim miyras ornına kompoziciyadan paydalanıp bar qatnaslardı ámelge asırıwdı jaqlaydı. Mısalı, Person klasınan miyras alıwdıń ornına, klass hárbir Employee obyektine ishki Person obyektin bere aladı, sonnan keyin Person klasında kóplegen ulıwma atributlar yamasa metodlar bolsa da sırtqı kodtan jasırıw imkaniyatı boladı. Wákillik miyrasqa alternativ retinde paydalanıwı múmkin taǵı bir til imkaniyatı bolıp tabıladı.

Rob Payk OO aqıl-oyın úsh qatardı izlew kestesinen qabatlasqan abstrakciyaları bar kóp dárejeli tipli iyerarxiyaǵa artıqmashılıq bergeni ushın sınǵa aldı.[16] Ol obyektke baǵdarlanǵan programmalastırıwdı “esaplawdaǵı rim sanları” dep atadı.

Bob Martinniń aytıwınsha, olar programmalıq qural bolǵanlıqtan, tiyisli klaslar shártli túrde olar kórsetetuǵın zatlardıń qarım-qatnasların bólispeydi dep málimleydi.[17]

Dinamikalıq jiberiw/xabar beriw

redaktorlaw

Metod shaqırıwına juwap retinde orınlanatuǵın proceduralıq kodtı tańlaw ushın, ádette obyekt penen baylanıslı kestede orınlaw waqtında metodtı izlew arqalı hár qanday sırtqı kod emes, al obyekttiń juwapkershiligi boladı. Bul imkaniyat dinamikalıq jiberiw retinde belgili. Eger shaqırıwdıń ózgermeliligi ol shaqırılatuǵın obyekttiń jalǵız túrinen kóbirek bolsa (yaǵnıy metodtı tańlawǵa keminde bir basqa parametr obyekti qatnastırıladı), birewi bir neshe jiberiw tuwralı aytadı. Metod shaqırıwı xabardı jiberiw retinde de belgili. Ol jiberiw ushın obyektke jiberiletuǵın xabar (metod atı hám onıń kirgiziw parametrleri) retinde konceptuallastırılǵan.

Dispatch miyrasxorlıq penen háreketlesedi; eger metod berilgen obyektte yamasa klasta bolmasa, jiberiw miyrasxorlıq dizbegi boyınsha joqarı kóterilip, onıń tiykarǵı obyektine yamasa klasına beriledi.

Maǵlıwmatlar abstrakciyası hám inkapsulyaciyası

redaktorlaw

Maǵlıwmatlardı abstrakciyalaw − qáte paydalanıwdıń aldın alıw ushın maǵlıwmatlar tek semantikalıq baylanıslı funkciyalarǵa kórinetuǵın dizayn úlgisi bolıp tabıladı. Maǵlıwmatlardı abstrakciyalawdıń sátliligi obyektke baǵdarlanǵan hám taza funkcional programmalastırıwda proektlestiriw principi retinde maǵlıwmatlardı jasırıwdı jiyi kirgiziwge alıp keledi. Sol sıyaqlı, inkapsulyaciya sırtqı kodtıń obyekttiń ishki jumısına baylanıslı bolıwına imkaniyat bermeydi. Bul kodtı refaktoringti ańsatlastıradı, mısalı, klas avtorına heshbir sırtqı kodtı ózgertpesten, sol klass obyektleriniń óz maǵlıwmatların ishki túrde kórsetiw usılın ózgertiwge imkaniyat beredi (“public” metod shaqırıwları birdey jumıs isleydi). Ol sonday-aq baǵdarlamashılardı belgili bir maǵlıwmatlar toplamına baylanıslı barlıq kodtı bir klasqa qoyıwǵa shaqıradı, bul onı basqa baǵdarlamashılar ańsat túsiniw ushın shólkemlestiredi. Inkapsulyaciya - ajıratıwdı xoshametleytuǵın metod.

Obyektke baǵdarlanǵan programmalastırıwda obyektler ishki kodtı sırtqı kodtan bóliwge hám abstrakciya menen inkapsulyaciyanı ámelge asırıwǵa bolatuǵın dárejeni támiyinleydi. Sırtqı kod obyektti tek kirgiziw parametrleriniń belgili bir toplamı bar anıq dana metodın shaqırıw, danalıq ózgeriwshi mánisti oqıw yamasa danalıq ózgeriwshige jazıw arqalı ǵana paydalana aladı. Programma jumıs islew waqtında ǵárezsiz jumıs isleytuǵın kóplegen obyektler danaların jarata aladı. Bul texnika real dúnyadaǵı qarım-qatnaslardı intuitiv túrde kórsetiwden basqa, hár túrli maǵlıwmatlar toplamları ushın birdey proceduralar menen maǵlıwmatlar anıqlamaların ańsat qayta paydalanıwǵa imkaniyat beredi dep málimlengen. Maǵlıwmatlar bazası kesteleri menen programmalastırıw ishki programmaların paydalanıwdıń ornına islep shıǵıwshı paydalanıwshıǵa kóbirek tanıs bolıwı múmkin obyektlerdi paydalanadı: olardıń qollanba domenindegi obyektler.[18] OBP paradigması qayta paydalanıwǵa jaramlılıq penen modullikti arttıradı degen bul málimlemeler sınǵa ushıradı.[19]

Eger klass shaqırıw kodına ishki obyekt maǵlıwmatlarına kiriwge ruqsat bermese hám tek metodlar arqalı kiriwge ruqsat berse, bul da informaciyanı jasırıw obyekti bolıp tabıladı. Ayırım tiller (mısalı, Java) klaslarǵa kiriw sheklewlerin anıq orınlawǵa imkaniyat beredi, mısalı ishki maǵlıwmatlardı private gilt sózi menen belgileydi hám public gilt sózi menen klastan tıs kod penen paydalanıwǵa arnalǵan metodlardı belgileydi.[20] Metodlar sonday-aq protected sıyaqlı ulıwma, jeke yamasa aralıq dárejelerde proektlestiriliwi múmkin (ol bir klastan hám onıń ishki klaslarınan kiriw imkaniyatın beredi, biraq basqa klastıń obyektlerinen emes).[20] Basqa tillerde (Python) sıyaqlı bul tek konvenciya boyınsha orınlanadı (mısalı, private metodlarınıń astın sızıw menen baslanatuǵın atları bolıwı múmkin). C#, Swift hám Kotlin tillerinde internal gilt sózi klastaǵı menen birdey assembleyada, pakette yamasa modulde bar fayllarǵa ǵana qatnasıwǵa ruqsat beredi.[21]

Programmalastırıw tillerinde, ásirese obyektke baǵdarlanǵan tillerde abstrakciyaǵa ayrıqsha itibar beriw zárúr. Obyektke baǵdarlanǵan tiller maǵlıwmatlar abstrakciyasın qosıw ushın tip túsinigin keńeytedi, metodlar arqalı ishki maǵlıwmatlarǵa kiriwdi sheklewdiń áhmiyetliligin kórsetedi. Erik S.Reymond obyektke baǵdarlanǵan programmalastırıw tilleri móldirlikti buzatuǵın qalıń qabatlı programmalardı xoshametleydi dep jazdı.[22] Reymod bunı Unix hám C programmalastırıw tili menen qabıllanǵan usıl menen qolaysız túrde salıstıradı.[22]

“Ashıq/jabıq princip” (ingl. open/closed principle) klaslar menen funkciyalar “keńeytiw ushın ashıq, biraq ózgertiw ushın jabıq bolıwı kerek” ekenin jaqlaydı. Luka Kardelli OBP tilleriniń “klastı keńeytiwge hám ózgertiwge baylanıslı júdá jaman modul qásiyetleri” bar hám júdá quramalı boladı dep málimledi. Sonǵı punktti Erlangtıń tiykarǵı jaratıwshısı Djo Armstrong qaytalaydı, ol bılay deydi: “Obyektke baǵdarlanǵan tillerdiń mashqalası - olarda ózleri menen birge alıp júretuǵın barlıq jasırın ortalıq bar. Siz banan alǵıńız keldi, biraq sizde banan menen pútkil toǵaydı uslap turǵan gorilla bar edi.” Leo Brodi obyektlerdiń jeke tábiyatı menen programmalıq támiynattı jaratıwdıń ózińizdi qaytalamaw (ingl. don't repeat yourself) principin buzıp[23] kodtı qaytalaw úrdisi arasındaǵı baylanıstı usındı.

Polimorfizm

redaktorlaw

Subtiplew − polimorfizmniń túri - shaqırıw kodtı qollap-quwatlaytuǵın ierarxiyadaǵı qaysı klasta jumıs isleytuǵınına ata-analıq klasqa yamasa onıń áwladlarınıń birine ǵárezsiz bolıwı múmkin. Sonıń menen bir qatarda miyras ierarxiyasındaǵı obyektler arasındaǵı birdey operaciya atı basqasha háreket etiwi múmkin.

Mısalı, Circle hám Square tipli obyektler Shape dep atalatuǵın ulıwma klastan alınǵan. Figuranıń hárbir túrine arnalǵan Draw funkciyası súwret salıw ushın kerekli nárseni ámelge asıradı, al shaqırıw kod sızılǵan figuranıń anıq túrine itibar bermeydi.

Bul klass ierarxiyasınan tıs kodtı ańsatlastıratuǵın hám alańlawlardı kúshli ajıratıwǵa imkaniyat beretuǵın abstrakciyanıń basqa túri.

Ashıq rekursiya

redaktorlaw

Obyektlerdiń ulıwma ózgesheligi - metodlar olarǵa biriktiriledi hám obyekttiń maǵlıwmatlar maydanlarına kire aladı hám ózgerte aladı. Usı OBP brendinde ádette aǵımdaǵı obyektke silteme beriw ushın qollanılatuǵın this yamasa self sıyaqlı arnawlı atı bar. Ashıq rekursiyanı qollaytuǵın tillerde obyekt metodları usı attı paydalanıp, bir obyekttegi (onıń ishinde ózleri) basqa metodlardı shaqıra aladı. Bul ózgeriwshi kesh sheklengen; ol bir klasta anıqlanǵan metodqa keyinirek onıń ayırım ishki klaslarında anıqlanǵan basqa metodtı shaqırıwǵa imkaniyat beredi.

OBP tilleri

redaktorlaw

Simula (1967) obyektke baǵdarlanǵan tildiń tiykarǵı belgileri bar birinshi til retinde ulıwma qabıllanǵan. Ol modellestiriw programmaların jaratıw ushın islep shıǵarılǵan, olarda obyektler dep atalatuǵın eń zárúr informaciyanı sáwlelendiriw edi. Smalltalk (1972-1980) taǵı bir erterekte payda bolǵan til. Bul tilde de OBP teoriyasınıń kóp bólimi islep shıǵılǵan. Obyektke baǵdarlanıw dárejesine baylanıslı tómendegi ayırmashılıqlardı kórsetiwge boladı:

  • Bul tiller “taza” OB tilleri dep ataladı, óytkeni olardaǵı barlıq nárse simvollar menen belgiler sıyaqlı punktuaciyalıq belgilerden baslap tutas klaslarǵa, prototiplerge, bloklarǵa, modullerge h.t.b. shekem obyekt retinde anaǵurlım qarastırıladı. Olar ańsatlastırıw ushın arnawlı islep shıǵılǵan, hátte májbúrlew, OB metodları menen. Mısalı: Ruby, Scala, Smalltalk, Eiffel, Emerald,[24] JADE, Self, Raku.
  • Tiller tiykarınan OB programmalastırıwǵa arnalǵan, biraq ayırım proceduralıq elementler bar. Mısalı: Java, Python, C++, C#, Delphi/Object Pascal, VB.NET.
  • Tariyxıy proceduralı tiller bolıp tabılatuǵın, biraq ayırım OB imkaniyatları menen keńeytilgen tiller. Mısalı: PHP, JavaScript, Perl, Visual Basic (BASIC tilinen alınǵan), MATLAB, COBOL 2002, Fortran 2003, ABAP, Ada 95, Pascal.
  • Obyektlerdiń kóplegen belgileri bar tiller (klaslar, metodlar, miyraslıq), biraq ayqın túpnusqa formada. Mısallar: Oberon (Oberon-1 or Oberon-2).
  • OBP-ǵa uqsaw ushın paylanıwı múmkin abstrakt maǵlıwmatlar tipin qollaytuǵın tiller, biraq obyektke baǵdarlanǵan barlıq imkaniyatları joq. Oǵan obyektke baǵdarlanǵan hám prototipke baǵdarlanǵan tiller kiredi. Mısalı: JavaScript, Lua, Modula-2, CLU.
  • Bir neshe paradigmalardı qollaytuǵın xameleon tiller, sońıń ishinde OB. Olardıń ishinde Tcl prototipke tiykarlanǵan programmalastırıwdı da, klass tiykarındaǵı OB-nı da qollaytuǵın gibrid obyekt sisteması TclOO ushın ózgeshelenedi.
  1. „Dr. Alan Kay on the Meaning of "Object-Oriented Programming"“ (2003). Qaraldı: 11-fevral 2010-jıl.
  2. Java Software Solutions Foundations of Programming Design 6th ed, 2008. , section 1.6 "Object-Oriented Programming"
  3. 3,0 3,1 Bloch 2018, ss. xi–xii, Foreword.
  4. McCarthy, J.; Brayton, R.; Edwards, D.; Fox, P.; Hodes, L.. LISP I Programmers Manual. Artificial Intelligence Group, M.I.T. Computation Center and Research Laboratory. p. 88f. http://history.siam.org/sup/Fox_1960_LISP.pdf. "In the local M.I.T. patois, association lists [of atomic symbols] are also referred to as "property lists", and atomic symbols are sometimes called "objects".". 
  5. McCarthy, John; Abrahams, Paul W.; Edwards, Daniel J.; Hart, swapnil d.; Levin, Michael I.. LISP 1.5 Programmer's Manual. MIT Press, 1962 — 105 bet. ISBN 978-0-262-13011-0. „Object — a synonym for atomic symbol“ 
  6. Kristen Nygaard; Ole-Johan Dahl. The development of the SIMULA languages. 
  7. Ross. „The first software engineering language“. LCS/AI Lab Timeline. MIT Computer Science and Artificial Intelligence Laboratory. Qaraldı: 13-may 2010-jıl.
  8. Silteme kórsetiwdegi qátelik: Жарамсыз <ref> тегі; no text was provided for refs named auto
  9. Pierce, Benjamin. Types and Programming Languages. MIT Press, 2002. ISBN 978-0-262-16209-8. , section 18.1 "What is Object-Oriented Programming?" Lists: Dynamic dispatch, encapsulation or multi-methods (multiple dispatch), subtype polymorphism, inheritance or delegation, open recursion ("this"/"self")
  10. Pike. „Less is exponentially more“ (25-iyun 2012-jıl). Qaraldı: 1-oktyabr 2016-jıl.
  11. „Stevey's Blog Rants: Execution in the Kingdom of Nouns“. Qaraldı: 20-may 2020-jıl.
  12. Stepanov. „STLport: An Interview with A. Stepanov“. Qaraldı: 21-aprel 2010-jıl.
  13. Bloch 2018, s. 19, Chapter §2 Item 4 Enforce noninstantiability with a private constructor.
  14. Dony, C; Malenfant, J; Bardon, D „Classifying prototype-based programming languages“,. Prototype-based programming: concepts, languages and applications. Singapore Berlin Heidelberg: Springer, 1999. ISBN 9789814021258. 
  15. „Is Go an object-oriented language?“. — „Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy.“. Qaraldı: 13-aprel 2019-jıl.
  16. Pike. „A few years ago I saw this page“ (14-noyabr 2012-jıl). 14-avgust 2018-jılda túp nusqadan arxivlendi. Qaraldı: 1-oktyabr 2016-jıl.
  17. „Uncle Bob SOLID principles“. YouTube (2-avgust 2018-jıl).
  18. Jacobsen, Ivar; Magnus Christerson; Patrik Jonsson; Gunnar Overgaard. Object Oriented Software Engineering. Addison-Wesley ACM Press, 1992 — 43–69 bet. ISBN 978-0-201-54435-0. 
  19. Cardelli, Luca (1996). Bad Engineering Properties of Object-Oriented Languages. pp. 150–es. http://lucacardelli.name/Papers/BadPropertiesOfOO.html. 
  20. 20,0 20,1 Bloch 2018, ss. 73–77, Chapter §4 Item15 Minimize the accessibility of classes and members.
  21. „What is Object Oriented Programming (OOP) In Simple Words? – Software Geek Bytes“ (en-US) (5-yanvar 2023-jıl). Qaraldı: 17-yanvar 2023-jıl.
  22. 22,0 22,1 Eric S. Raymond. „The Art of Unix Programming: Unix and Object-Oriented Languages“ (2003). Qaraldı: 6-avgust 2014-jıl.
  23. Hunt. „Don't Repeat Yourself“. Category Extreme Programming. Qaraldı: 4-may 2018-jıl.
  24. „The Emerald Programming Language“ (26-fevral 2011-jıl).

Sırtqı siltemeler

redaktorlaw