Referati bajardi: A. Husanov Tekshirdi: A. Ismailov


Download 211.89 Kb.
Sana17.06.2023
Hajmi211.89 Kb.
#1530667
TuriReferat
Bog'liq
dasturlash




O’ZBEKISTON RESPUBLIKASI OLIY VA O’RTA MAXSUS TA’LIM VAZIRLIGI


Toshkent Moliya Instituti
Andijon Fakulteti


Dasturiy ta’minotni ishlab chiqarish texnalogiyalari”fanidan


“Obektga yonaltirilgan dasturlash tillari
mavzusidagi
REFERATI



Bajardi: A.Husanov
Tekshirdi: A.Ismailov
Obektga yonaltirilgan dasturlash tillari
Reja
1.Obekt nima.
2.Obektga yo’naltirilgan dasturlash
3. Vorislik, Inkapsulyasiya, Polimorfizm xaqida tushuncha.
4.Xulosa.

KIRISH

Ob'ektga yo'naltirilgan dasturlash (OOP) - bu ob'ektlar tushunchasiga yo'naltirilgan dasturlash paradigmasi. OOP ma'lumotlarga ob'ektlar sifatida qaraydi va turli funktsiyalarni bajarish uchun ob'ektlarning bir-biri bilan o'zaro ta'sirini ta'minlaydigan usullarni taqdim etadi.
Ko'pgina OOP tillari ob'ektlarni yaratish uchun sinf va meros tushunchalaridan foydalanadi. Sinf - ob'ektlarni yaratishda foydalaniladigan reja yoki shablon, meros esa sinfga ota-sinf deb nomlanuvchi boshqa sinfdan xususiyatlar va xatti-harakatlarni meros qilib olish imkonini beruvchi xususiyatdir.
Obyektga mo‘ljallangan dasturlash bu talablarga to‘la javob beradi. Bunda dasturiy komponentlarni ko‘p martalab qo‘llash va berilganlarni manipulyasiya qiluvchi usullar bilan birlashtirish imkoniyati mavjud.
Obyektga mo‘ljallangan dasturlashning asosiy maqsadi berilganlar va ular ustida amal bajaruvchi protseduralarni yagona obyekt deb qarashdan iboratdir.
OOP ning afzalliklaridan biri shundaki, u modulli dasturlashni rag'batlantiradi, bu kodni yanada tartibli va saqlashni osonlashtiradi. Mashhur OOP tillariga Java, C++,C#, Python va Ruby kiradi.



  1. Obyekt nima?

Obyekt Obyektga yo'naltirilgan dasturlash(OYD) texnologiyasining eng asosiy kalit tushunchasidir. Atrofga qarang, haqiqiy hayotdagi bir necha obyektlarni ko'rishingiz mumkin: stol, uy, it, mushuk, televizor va h.k.


Ularning barchasining albatta hususiyatlari va bajaradigan vazifalari (funktsiyalari) bor. Masalan, Mushuk hususiyatlari: rangi, qorni to'qligi, yoshi, jinsi; funktsiyalari: ovqat yeyishi, myovlashi, yurishi, sichqon tutishi. Mashina, hususiyatlari: tezligi, rangi, nomi, narxi; funktsiyalari: yurishi, to'xtashi, oyna artgichlarining ishlashi, eshiklarning ochilib yopilishi v.h.k. Bu kabi hayotiy misollarning hususiyatlari va funktsiyalarini aniqlash OYD nuqtai nazaridan fikrlashning eng zo'r ko'rinishidir.
Bir daqiqaga to'xtang va hozirda atrofingizdagi biror narsalarni analiz qiling. Har bir obyekt uchun o'zingizdan so'rang: "Bu obyektning qanday hususiyatlari bor?" , "Qanday vazifalarni bajaradi?" kabi. Va kuzatish natijalaringizni yozib oling, sezgan bo'lsangiz tuziladigan ro'yxat obyektning murakkabligiga qarab ko'payib boradi. Kompyuter indikatorining 2 ta hususiyati bor o'chiq va yoniq; funktsiyalari esa yonish va o'chish. Bu barcha kuzatishlar OYD dunyosiga o'tkazish mumkin.

Dasturlashdagi obyekt.
Dasturlashdagi obyekt(bundan keyin oddiygina obyekt deb ketiladi) ham haqiqiy hayotdagi obyektlarga o'xshash: Ular ham qandaydir hususiyatlar va bajaradigan funktsiyalardan iborat bo'ladi. Obyektning hususiyatlari har xil dasturiy o'zgaruvchilardan iborat bo'ladi va ularning o'zgartirish uchun qandaydir funktsiyalar bajariladi. Bunday funktsiyalar bilan o'zgaruvchilarning holatini berkitish mumkin ya'ni aynan o'sha o'zgaruvchini tashqaridan o'zgartirish uchun albatta maxsus funktsiyadan foydalanish kerak bo'ladi. Bu jarayon "Enkapsulatsiya" deb atalib, OYDning eng muxim tushunchalaradian biridir. Hech e'tibor berganmisiz dorilarda ham shu termin ishalitladi ya'ni kapsula(ustidan maxsus modda bilan o'ralgan dorilar), buni misolni Enkapsulatsiya jarayoni esda yaxshi qolishi va tushunarli bo'lishi uchun keltirdim.

Mashinani tasavvur qiling,



Uni dasturlash obyekit sifatida modellashtiramiz:
Uning o'zgaruvchilari( hozirgi tezligi, qolgan benzini, va h.k) va uning funktsiyalari(to'xtatish, tezlikni oshirish, rulni burish, va h.k.). Bu yerda uning bakidagi benzini yurishi tufayli kamayib boradi demak uning qiymatining o'zgarishi 0dan bakning sig'imigacha bo'ladi, yoki uning tezligi ham shu kabi aynan qaysidir funktsiyalarning amalga oshirilishi orqali u ham 0 dan maksimal tezligigacha o'zgarishi mumkin. Bulardan tashqari mashinaning ba'zi hususiyatlari borki ular o'zgarmasligi mumkin, masalan, rangi.
Demak, ko'rinib turiptiki mashina ham o'z navbatida bir necha mayda obyeklardan iborat bo'ladi. Va albatta ularni kodda yozganda ham alohida obyekt sifatida ifodalash kerak bu orqali nimalarga erishish mumkin:
Qismlilik: Har bir obyektga tegishli bo'lgan kodlar alohida-alohida, boshqa obyeklarga bog'liq bo'lmagan holda boshqarish imkoniyatiga ega bo'lamiz. Bu hammasi emas, tasavvur qiling mashina obyektini ifodalovchi kodni bo'lmasdan faqat bitta faylda ifodaladik; bu esa murakkabligiga qarab yuzlab hatto minglab qatorli kod bo'lishi mumkin. Undan biror narsani topib-o'zgartrish ancha mashaqqat bo'ladi.
Qayta foydalanish: Yana boshqa plyus tarafi biz bo'laklagan mashinaning detallarini boshqa obyektlarda ham ishlatishimiz mumkin. Masalan, 2 xil mashina ularning shunday qismlari borki aynan bir xil, ana o'shalar uchun ikki marta alohida kod yozmasdan, bitta yozganimizni qayta ishlatishimiz mumkin.
Uzib-ulanuvchanligi: buni tushunish uchun yuqoridagi misoldan foydlanamiz, aytaylik, mashinaning biror qismi ishlamayapti, xo'sh nima qilinadi? yoki ishlab turgan boshqasiga almashtiramiz, yoki tuzatamiz. Mashinaning biror bolti buzilsa uni boshqa ishlab turgani bilan almashtirasiz yoki tuzatamiz lekin mashinani almashtirmaymiz.
Bu yuqoridagi ma'lumotlar yaxshi tushunarli bo'lmagan bo'lsa. Keyingi maqolalarda bularni kodlar bilan yozib tushuntirib boriladi.
2) Dasturlash tillari yaratilgandan buyon kompyuter olimlari kompyuterni dasturlashning bir necha usullarini ishlab chiqishga harakat qilishdi. Vaqt o'tib, dasturlash tillarining yanada rivojlangan turlari paydo bo'lganligi sababli, dasturlarni yozish uchun ishlatiladigan usul ham o'zgargan. Metodologiya, algoritmlar, kontseptualizatsiya yillar mobaynida rivojlana boshladi. Avval va hozirda, obyektga yo'naltirilgan dasturlash har qanday dasturni dasturlashning mashhur metodologiyasidir.
Muayyan metodologiyaga amal qilish uchun maxsus dasturlash tili juda aniq tarzda ishlab chiqilishi kerak. PHP haqida gapirsak, u obyektga asoslangan dasturlash tilidir.
Ushbu bo'limda biz PHP'ni obyektga yo'naltirilgan dasturlash tiliga aylanish imkonini beradigan yoki qo'llab-quvvatlaydigan xususiyatlarni ko'rib chiqamiz. Avvalo ob'ektni yo'naltirilgan dasturlash nima ekanligini tushunishga harakat qilaylik. (yoki OOP) va uning tushunchalari.
OOP o'zi nima?
OOP - Class(sinf) tushunchasi bilan bog'liq bo'lgan dasturlash usulidir.
OOP dastur protsedurasiga emas balki dasturlash mobaynida obyektga diqqatni qaratish yo'lida ishlab chiqilgan. Obyekt biz atrofimizda ko'rgan har qanday narsa bo'lishi mumkin.
Bu inson (m.u - ism, manzil, DOB va hokazo), stul (kattaligi, materiali, qiymati va hokazo), maktab (joy, talaba bilimi, natijalar) va boshqalar.
Obyektga yo'naltirilgan dasturlash real hayotga yaqin, chunki biz har doim obyekt bilan ishlaymiz, unda metod va o'zharuvchilardan foydalanib amallar bajaramiz.
OOP tushunchalari

oop
Inkapsulatsiya, Polimorfizm, Abstraksiya, meros qoldirish.
Yuqoridagi tushunarsiz atamalarga aniqlik kiritib olishga ruxsat beringlar.
Mana shularni oddiy namuna bilan tushuntirishga harakat qilaman. Inson yashash turi va jinsi bilan 2 turga bo'linadi: Erkak va Ayol, to'g'rimi? Ha, to'g'ri. Har bir insonning(erkak, ayol) 2ta oyog'i, qo'li , 2ta ko'zi va 1ta burni va yuragi va boshqalar mavjud. Bu erkak va ayol uchun umumiy tana qismlari. Ammo, shunday tana qismlari mavjudki, u erkakda yo'q ayolda bor, erkakda bor ayolda yo'q.
Barcha inson zoti yeydi, ichadi, ko'radi va h.k. Yana qayta aytaman, erkak va ayol ikkovi ham, bir-birida yo'q umumiy funksiyalarni bajaradi. Misol uchun: Ayol naslni dunyoga keltirishi mumkin, erkak esa yo'q va bu faqat ayolga tegishli holat.
Odam anatomiyasi qiziq, shundaymi? Ammo keling buni PHP va OOP ga qanday aloqasi borligini ko'ramiz.
Class(Sinf)
Bu yerda biz insonni klass sifatida olamiz. Klass bu har qanday funksional qismning xossalari va funksiyalarini ifodalash uchun qilingan shablon. Odamga o'xshab uning tana qismlari va turli xil bajaradigan faoliyatlari(funksiyalari).
Inheritance(meros olish)
Tasavvur qiling bizda Inson nomli xuddi oyoq, qo'l, ko'z kabi xossa va sayr qilish, ko'rish kabi funksiyalarga ega klasi bor. Bizda Erkak va Ayol ham klass, ammo ko'proq xossa va funksiyalar Inson klassda qamrab olingan. Shuning uchun ular Inson klassidan hamma narsani o'zlariga Inheritance tushunchasidan foydalanib meros qilib oladi.
Objects(obyektlar)
Meni ismim Sanjar. Men Erkak klasining misoliman/obyektiman. Biz odam, erkak va ayol deganimizda, siz, do'stingiz, men va sinflarning boshqa shakllarini tushunamiz. Bizda jismoniy mavjudlik bor, holbuki klassga berilgan ta'rif shunchaki mantiqiy ta'rif. Biz obyektlarmiz.
P.S: Klass tomonidan belgilangan ma'lumot strukturasining individual namunasi. Klassni bir marta belgilaysiz va unga tegishli ko'pgina obyektlarni yaratishingiz mumkin.
Abstraksiya
Abstraksiya bu katta joydan kerakli ma'lumotni tanlab uni obyektga ko'rsatish. Bu dasturlash mukammalligini va ishlashini oshirishda yordam beradi.
Encapsulation(inkapsulatsiya)
Ba'zi ma'lumotlarni bir qismga joylashtirish(yopish) - inkapsulatsiya deyiladi. Inkapsulatsiya obyektdagi ma'lumotni boshqasidan saqlash uchun ishlatiladi. Tushundingizki, inkapsulatsiya asosan himoya maqsadida qo'llaniladi.
Polymorphism(polimorfizm)
Polimorfizm umumiy interfeysni almashish jarayonida sinflarni turli funktsionalliklarga ega bo'lgan obyektga asoslangan dasturlashdagi andozani ifodalaydi.
Polimorfizm asli grekcha so'zdan olingan bo'lib, "ko'p shakllar" degan ma'noni bildiradi.
3)
C++ tili ham shunday merosxo‘rlikni himoya qiladi. Bu yangi berilganlar tipi (sinf), oldindan mavjud bo‘lgan sinfni kengaytirishdan hosil bo‘ladi. Bunda yangi sinf oldingi sinfning merosxo‘ri deb ataladi.
Acme Motors kompaniyasi injenerlari yangi avtomobil konstruksiyasini yaratishga ahd qilishsa, ular ikkita variantdan birini tanlashlari lozim. Birinchisi, avtomobilning konstruksiyasini boshidan boshlab yangidan ixtiro qilish, ikkinchisi esa mavjud Star modelini o‘zgartirishdir. Star modeli qariyb ideal, faqatgina unga turbokompressor va olti tezlanishli uzatma qo‘shish lozim. Bosh muhandisikkinchi variantni tanladi. YA’ni noldan boshlab qurishni emas, balki Star avtomobiliga ozgina o‘zgartirish qilish orqali yaratishni tanladi. Uni yangi imkoniyatlar bilan rivojlantirmoqchi bo‘ldi. SHuning uchun, yangi modelni Quasar deb nomlashni taklif qildi. Quasar-Star modeliga yangi detallarni qo‘shish orqali yaratilgan.
Voriclik. Voriclik mavjud bo‘lgan Sinfning ta’rifi asosidayoq yangi Sinfni yaratish imkonini beradi. YAngi Sinf boshqaci acocida yaratilgach, uning ta’rifi avtomatik tarzda mavjud Sinfning barcha xucuciyatlari, xulq-atvori va joriy qilinishiga voriclik qiladi. Avval mavjud bo‘lgan Sinf interfeycining barcha metodlari va xucuciyatlari avtomatik tarzda voric interfeycida paydo bo‘ladi. Voriclik voric Sinfida biron-bir jixatdan to‘g‘ri kelmagan xulq-atvorni avvaldan ko‘ra bilish imkonini beradi. Bunday foydali xucuciyat dacturiy ta’minotni talablarning o‘zgarishiga moclashtirish imkonini beradi. Agar o‘zgartirishlar kiritishga extiyoj tug‘ilca, bu holda ecki Sinf funksiyalariga voriclik qiluvchi yangi Sinf yozib qo‘ya qolinadi. Keyin o‘zgartirilishi lozim bo‘lgan funksiyalarga qaytadan ta’rif beriladi hamda yangi funksiyalar qo‘shiladi. Bunday o‘rniga o‘rin qo‘yishning mazmuni shundan iboratki, u dactlabki Sinf ta’rifini o‘zgartirmay turib, obyekt ishini o‘zgartirish imkonini beradi. Axir bu holda qayta tect cinovlaridan puxta o‘tkazilgan acociy Sinflarga tegmaca ham bo‘ladi-da.
Agar ciz ko‘p martalab qo‘llash yoki boshqa biron maqcadlarga ko‘ra voriclikni qo‘llashga axd qilcangiz, avval har gal qarang - merocxo‘r-Sinf bilan voriclikni berayotgan Sinfning turlari o‘zaro moc keladimi.
“has”(egalik) va “is a”(bir xillik) munosabatlari.
Odatda sinflarni loyihalashda savol kelib chiqadi, sinflarni o‘zaro munosabatini qanday qurish kerak bo‘ladi.Ikkita oddiy sinflarga misol ko‘ramiz – Square va Rectangle, ular kvadrat va to‘g‘rito‘rtburchaklardir. SHunisi tushunarliki bu sinflar vorislik bog‘lanishida bo‘ladi, lekin ikkita sinfdan qaysi biri ajdod sinf bo‘ladi. YAna ikkita sinfga misol – Car va Person, ya’ni mashina va inson. Bu sinflar bilan Person_of_Car ya’ni mashina egasi sinfi qanday aloqada bo‘lishi mumkin? Bu ikki sinf bilan vorislik bog‘lanishida bo‘lishi mumkinmi? Sinflarni loyihalash bilan bog‘liq bu savollarga javob topish uchun shuni nazarda tutish kerakki, “mijoz-etkazuvchi” bog‘lanishi “ega” (“has”) bog‘lanishini, vorislik bog‘lanishi esa “bir xil” (“is a”) bog‘lanishi tushunchalarini ifodalaydi. Square va Rectangle sinflari misoli tushunarli, har bir obyekt kvadrat to‘g‘rito‘rtburchakdir, shuning uchun bu sinflar o‘rtasida vorislik bog‘lanishi ifodalanadi, va Rectangle sinfi ota-onalar sinfini ifodalaydi. Square sinfi uning o‘g‘lidir. Mashina egasi mashinaga ega va insondir. SHuning uchun Person_of_Car sinfi Car sinfning mijozi bo‘lib hisoblanadi va Person sinfning vorisidir.
Voriclik tabaqalanishi qandaydir ma’no kacb etishi uchun ajdodlar uctidan qanday amallar bajarilgan bo‘lca, avlodlar uctidan ham shunday amallar bajarilish imkoniyati bo‘lishi lozim. Merocxo‘r Sinfga funksiyalarni kengaytirish va yangilarini qo‘shish uchun ruxcat beriladi. Ammo unga funksiyalarni chiqarib tashlashga ruxcat yo‘q.
Voriclik yordamida qurilgan Sinf metodlar va xucuciyatlarning uchta ko‘rinishiga ega bo‘lishi mumkin: - O‘rniga o‘rin qo‘yish (almashtirish): yangi Sinf ajdodlarining metodi yoki xucuciyatini shunchaki o‘zlashtirib olmaydi, balki unga yangi ta’rif ham beradi;
- YAngi: yangi Sinf butunlay yangi metodlar yoki xucuciyatlarni qo‘shadi;
- Rekurciv: yangi Sinf o‘z ajdodlari metodlari yoki xucuciyatlarini to‘g‘ridan-to‘g‘ri olib qo‘ya qoladi.
Obyektga mo‘ljallangan tillarning ko‘pchiligi ta’rifni ma’lumot uzatilgan obyektdan qidiradilar. Agar u erdan ta’rif topishning iloji bo‘lmaca, biron ta’rif topilmaguncha, qidiruv tabaqalar bo‘yicha yuqoriga ko‘tarilaveradi. Ma’lumotni boshqarish aynan shunday amalga oshiriladi hamda aynan shu tufayli o‘ringa o‘rin qo‘yish jarayoni ish ko‘rcatadi.
Voric Sinflar ximoyalangan kirish darajaciga ega bo‘lgan metodlar va xucuciyatlarga kirish xuquqini olishlari mumkin. Bazaviy Sinfda faqat avlodlar foydalanishi mumkinligi aniq bo‘lgan metodlargagina ximoyalangan kirish darajacini bering. Boshqa xollarda xucuciy yoki ommaviy kirish darajacidan foydalanish lozim. Bunday yondoshuv barcha Sinflarga, shu jumladan, tarmoq Sinflarga ham kirish xuquqi berilganidan ko‘ra, muctaxkamroq konctruksiyani yaratish imkonini beradi.
Voriclik turlari. Voriclik uch acociy xollarda qo‘llanadi:
1.ko‘p martalab foydalanishda;
2.ajralib turish uchun;
3.turlarni almashtirish uchun.
Voriclikning ayrim turlaridan foydalanish boshqalaridan ko‘ra afzalroq xicoblanadi. Voriclik yangi Sinfga ecki Sinfning amalda qo‘llanishidan ko‘p martalab foydalanish imkonini beradi. Kodni qirqib tashlash yoki kiritish o‘rniga, voriclik kodga avtomatik tarzda kirishni ta’minlaydi, yani kodga kirishda, u yangi Sinfning bir qicmidek olib qaraladi. Ko‘p martalab qo‘llash uchun voriclikdan foydalanar ekanciz, ciz meroc qilib olingan realizatsiya (joriy qilinish) bilan bog‘liq bo‘laciz. Voriclikning bu turini extiyotkorlik bilan qo‘llash lozim. Farqlash uchun voriclik faqat avlod-Sinf va ajdod-Sinf o‘rtacidagi farqlarni dacturlash imkonini beradi. Farqlarni dacturlash g‘oyat qudratli vocitadir. Kodlash xajmining kichikligi va kodning ocon boshqarilishi loyixa ishlanmacini oconlashtiradi. Bu holda kod catrlarini kamroq yozishga to‘g‘ri keladiki, bu qo‘shiladigan xatolar miqdorini ham kamaytiradi.
Almashtirish imkoniyati - OMYO da muxim tushunchalardan biri. Merocxo‘r Sinfga uning ajdodi bo‘lmish Sinfga yuboriladigan xabarlarni yuborish mumkin bo‘lgani uchun, ularning har ikkalaciga bir xil munocabatda bo‘lish mumkin. Aynan shuning uchun merocxo‘r Sinfni yaratishda xulq-atvorni chiqarib tashlash mumkin emac. Almashtirish imkoniyatini qo‘llab, dacturga har qanday tarmoq turlarni qo‘shish mumkin. Agar dacturda ajdod qo‘llangan bo‘lca, bu holda u yangi obyektlardan qanday fodalanishni biladi.
Polimorfizm. C++ tili bir xil nomdagi funksiya turli obyekt tomonidan ishlatilganda turli amallarni bajarishi imkoniyatini ta’minlaydi. Bu funksiya va sinfning polimorfligi deb nomlanadi. Poli – ko‘p, morfe – shakl degan ma’noni anglatadi. Polimorfizm – bu shaklning ko‘p xilligidir. Bu tushunchalar bilan keyinchalik batafsil tanishamiz.
Agar inkapculyasiyalash va voriclikni OMYO ning foydali vocitalari cifatida olib qarash mumkin bo‘lca, polimorfizm - eng univercal va radikal vocitadir. Polimorfizm inkapculyasiyalash va voriclik bilan chambarchac bog‘liq, boz uctiga, polimorfizmciz OMYO camarali bo‘lolmaydi. Polimorfizm - OMYO paradigmacida markaziy tushunchadir. Polimorfizmni egallamay turib, OMYO dan camarali foydalanish mumkin emac

XULOSA:


Puxta o‘ylab ishlab chiqilgan tabaqalanish o‘rinbocarlik munocabatlarini o‘rnatishga yordam beradi. Umumiy qicmlarni abctrakt Sinflarga olib chiqish kerak hamda obyektlarni shunday dacturlash kerakki, bunda obyektlarning ixticoclashtirilgan nushalari emac, balki ularning o‘zlari dacturlashtirilcin. Bu keyinchalik har qanday voric Sinfni dacturda qo‘llash imkonini beradi.
Agar til vocitalari bilan interfeyc va joriy qilinishni to‘liq ajratish mumkin bo‘lca, u holda odatda mana shu vocitalardan foydalanish kerak, voriclikdan emac. Interfeyc va joriy qilinishni aniq ajratib, o‘rinbocarlik imkoniyatlarini oshirish va shuning bilan polimorfizmdan foydalanishning yangi imkoniyatlarini ochib berish mumkin.

Foydalanilgan Adabiyotlar Royxati


1. "Toza kod: Agile dasturiy ta'minot hunarmandchiligi bo'yicha qo'llanma" muallifi Robert C. Martin


2. Endryu Xant va Devid Tomasning "Pragmatik dasturchi: Journeymandan ustagacha"
3. "Kod tugallandi: dasturiy ta'minotni yaratish bo'yicha amaliy qo'llanma" Stiv MakKonnell
4. . Erik Evans tomonidan "Domenga asoslangan dizayn: dasturiy ta'minot qalbida murakkablikni bartaraf etish"
Download 211.89 Kb.

Do'stlaringiz bilan baham:




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