Zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi


Download 412.24 Kb.
Pdf ko'rish
Sana26.11.2020
Hajmi412.24 Kb.
#152109
Bog'liq
OYD tamoyillari va ularga doir misollar


O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA

KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI

MUHAMMAD AL-XORAZMIY NOMIDAGI

TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI

MA'LUMOTLAR TUZILMASI VA ALGORITMLAR

MUSTAQIL ISH

Mavzu: Obyektga yo‘naltirilgan dasturlash  tamoyillari va ularga doir 

misollar.

Bajardi: Jo‘rayev Xudoyshukur

Reja:

1. Kirish. Obyektga yo‘naltirilgan dasturlash nima?

2. Assosiy qism. Obyektga yo‘naltirilgan dasturlashning asosiy tamoyillari:

a) Enkapsulatsiya (Encapsulation)

b) Abstraktsiya (Abstraction)

c) Vorislik (Inheritance)

d) Polimorfizm (Polymorphism)

3. Xulosa.

OBYEKTGA YO‘NALTIRILGAN DASTURLASH NIMA?

Obyektga yo‘naltirilgan dasturlash ---- klasslar va obyektlar tamoyillari 

ustiga qurilgan dasturlash na‘munasidir. Obyektga yo‘naltirilgan dasturlash tili 

sifatida c++ dasturlash tilidan foydalanib bir necha misollar bilan tanishib 

chiqaylik.

Klasslar. Bizga ma‘lumki, c++ dasturlash tilida int, bool, double, float va 

hz. kabi tiblar mavjud. Va ularni quyidagicha e‘lon qilishimiz mumkin:

Demak, bu misolda int butun toifadagi, double va float o‘nli kasrli toifa, 

bool esa mantiqiy toifa. Biz bu toifalardan foydalanib turli amallarni 

bajarishimiz mumkin. Masalan, ikki sonni qo‘shish

Yoki bo‘lmasa, foydalanuvchi tomonidan kiritilgan ikki sonning kattasini 

ekranga chiqarish:

Endi bir mulohaza qilib ko‘raylik, agar biz int (butun toifa) yoki bool 

(mantiqiy toifadan tashqari), haqiqiy olamdagi toifalar bilan ishlashimizga 

to‘g‘ri kelsachi.

Chunki har doim ham dasturimiz matematik amallar uchun mo‘ljallanmaydiku.

Bunday holda bizga klasslar yordamga keladi:

Klasslar --- dasturchi tomonida sun‘iy yaratilgan toifalardir.

Klasslar o‘zida bitta emas, bir nechta axborotni saqlay oladi va bir nechta 

amallarni bajara oladi.

Int a = 10;

Yuqoridagi misolda a o‘zgaruvchi faqat 10 dagan qiymatni saqlab turibdi.

Keling o‘zimiz sun‘iy toifa yaratib ko‘ramiz:

Ko‘rib turganimizdek, talaba ikkita qiymat: yoshi va kursiga ega.

talaba ga qiymat berish uchun uning maydonlariga (.) orqali murojaat qilindi.

int a;  → da int toifa deb atalsa, Talaba talaba = Talaba(); da Talaba → klass deb

ataladi;

a o‘rgaruvchi deb atalsa, talaba klass obyekti deb ataladi;

Biz bir vaqtning o‘zida bir nechta qiymatlarni talaba obyektiga o‘zlashtira 

olmaymiz (Konstruktor orqali bundan mustasno). Shuning uchun obyektning 

o‘zini 

Talaba talaba = Talaba(); 

tarzida initsializatsiya qilib olib keyin, 

ko‘rinishida ma‘lumotlarni yuklaymiz.

Klasslar maydonlardan va funksiyalardan iborat bo‘ladi. 

Bu klass maydonlari hisoblanadi;

Bu esa klass ichidagi funksiyaga misol.

Keling endi kontruktorlar haqida gaplashamiz:

Kontruktorlar klass obyekti yaratilganda ishga tushadi. Bir klassda istalgancha 

konsruktor bo‘lishi mumkin.

Masalan:

Ushbu ikki konstruktorni ko‘rib chiqaylik. 

Birinchi konstruktor faqatgina obyektni initsializatsiya qiladi, ikkinchisi esa 

uning maydonlariga qiymatlar bera oladi. Ular quyidagicha ishlaydi.

Ko‘rib turganingizdek, birinchi konstruktor orqali talaba1 obyektini yaratib

uning maydonlariga murojaat orqali mos qiymatlarni berdik.

Ikkinchi konstruktor bilan esa to‘g‘ridan to‘g‘ri ma‘lumotlarni kiritdik.

Ikkinchi turdagi konstruktordan foydalanish juda ko‘plab talabalar 

ma‘lumotlarini kiritayotganimizda kodimiz ancha qisqa bo‘lishini ta‘minlab 

beradi.

Shunday qilib, xulosa qiladigan bo‘lsak obyektga yo‘naltirilgan dasturlash bu  

klasslar va obyektlar tamoyillari ustiga qurilgan dasturlash na‘munasidir.

OBYEKTGA YO‘NALTIRILGAN DASTURLASHNING ASOSIY

TAMOYILLARI

Demak, biz klasslar va obyektlar haqida bir qadar ma‘lumotlarni ko‘rib 

chiqdik. Bulardan tashqari Obyektga yo‘nalitirilgan dasturlashning asosiy 4 ta 

tamoyili bor. Ular:

a) Enkapsulatsiya (Encapsulation)

b) Abstraktsiya (Abstraction)

c) Vorislik (Inheritance)

d) Polimorfizm (Polymorphism)

ENKAPSULATSIYA (ENCAPSULATION)

Enkapsulatsiya terminidan oldin, public, private, protected modifatorlari 

haqida gaplashsak.

Agar klass maydonlari yoki funksiyalari public modifatori ostida bo‘lsa, klass 

obyekti orqali ularga murojaat qila olamiz.

Masalan:

Talaba klasimizning ushbu maydonlari public edi, shuning uchun main 

funksiyamizda ularga quyidagicha murojaat qila oldik:

Agar public modifatorini private ga o‘zgartirsak, quyidagicha xatolikka duch 

kelamiz:

Demak biz main funksiyadan private modifator ostidagi maydonga murojaat 

qila olmadik.

Ta‘rif.

private modifatori ostidagi maydonlar va funksiyalarga faqat klass ichida 

murojaat qilish mumkin.

protected modifatori ostidagi maydonlar va funksiyalarga klass ichida va klass 

vorislaridan turib murojaat qilishimiz mumkin (vorislar haqida keyin 

gaplashamiz).

public modifatori ostidagi maydonlar va funksiyalarga esa istalgan joydan 

murojaat qilish mumkin.

Quyidagi na‘munaviy kodni ko‘rib chiqsak:

Bu yerda xodim oyligini birinchi passportni tekshirish yo‘li bilan oshirib 

qo‘yilmoqda, keyinroq esa xodim oyligi to‘g‘ridan to‘g‘ri 10 million qilib 

yuborilyapti va hech qanday passport ma‘lumotini tekshirmasdan. Buning 

oldini olish uchun xodim oyligiga to‘g‘ridan to‘gri o‘rgartirishni cheklab uni 

faqat ko‘rish uchun foydalansa bo‘ladigan qilish kerak:

 

  

Endi kodni ishga tushiradigan bo‘lsak:

xatolikka duch kelamiz. Ya‘ni xodim oylik maoshini to‘g‘ridan to‘g‘ri 10 million 

qilib qo‘ya olmaymiz, faqatgina getSalary() funksiyasi orgali uning miqdorini 

ko‘rishimiz mumkin. Bu esa Enkapsulyatsiya deb yuritiladi.

ABSTRAKSIYA (ABSTRACTION)

Abstraksiyani tushunish uchun ushbu na‘munaviy kodni ko‘rib chiqamiz:

Ko‘rib turganingizdek, main funksiyada Summation obyektining faqatgina sum 

degan funksiyasi chaqirilib, bizga tayyor natijani chiqarib bermoqda. 

Foydalanuvchi uchun 5 va 20 sonlarining yig‘indisini chiqarish muhim. Uni qay 

tarzda bajarish esa muhim emas. Boshqa bir misolni olaylik. Siz mashinani o‘t 

oldirdingiz, bunda sizga mashinada qanday jarayonlar bo‘lishi emas, 

mashinaning o‘t olishi muhim sanaladi.

Bu abstraksiya deb ataladi.

VORISLIK (INHERITANCE)

Vorislik bu biror bir ota klass xususiyatlarini to‘laligicha o‘zlashtirib unga

yangi xususiyatlar qo‘shishga aytiladi. Bunda voris klass ota klassning barcha 

funksiyalari va maydonlarini o‘zlashtiradi.

Bunga misol sifatida:

Bu yerda Qoshish klassi MatematikAmal Klassidan nasl olyapti. Ko‘rinib 

turganidek, Qoshish klasining natija deb nomlanuvchi funksiyasi yo‘q, ammo 

ota klass (ya‘ni voris olinyotgan klass) da ushbu funksiya bo‘lganligi uchun 

dastur bexato ishlaydi. Obyektga yo‘naltirilgan dasturlashning bu tamoyili bilan

biz mavjud klasslardan voris olishimiz va ularni o‘zimizga mos tarzda 

o‘zgartirishimiz mumkin.

POLIMORFIZM (POLYMORPHISM)

Polimorfizm so‘zi „ko‘p formalar“ ma‘nosini anglatadi va u bizda vorislik 

tufayli yuzaga kelgan bir nechta klasslar orqali vujudga keladi.

Biz vorislik haqida gaplashganda voris klass ota klass ning barcha 

funksiyalari va maydonlarini o‘zlashtirishini aytgan edik. Polimorfizm orqali 

esa ushbu o‘zlashtirilgan funksiyalar turli vazifalar bajarishi ta‘minlanadi.

Misol uchun Meva klasini yarataylik:

Ko‘rib turganingizdek biz hali mevaga narx bera olmaymiz, chunki uning turi 

aniq emas. Endi Mevadan voris olgan Olma, Anor klasslarini yaratamiz:

Bu yerda Olma va Anor klasslari narxi() funksiyasini turli xil 

o‘zgartirishmoqda.

Yuqoridagi na‘muna overiding ga misol bo‘ladi. Shuningdek overloading degan 

tushuncha ham bor. Bunda bir xil nomdagi funksiyalar xar xil parametrlar 

qabul qilishadi.

Yuqorida max funksiyasi ham int qiymatlar uchun, ham double qiymatlar 

uchun ishlayapti.

XULOSA

Yuqorida biz obyektga yo‘naltirilgan dasturlash va uning asosiy 

tamoyillari bilan tanishib o‘tdik. Bu bilan ushbu mavzuni to‘liq yoritib bera 

oldik deyish bir ma‘noda noto‘g‘ri bo‘ladi. Chunki  bu o‘rganilgan bilimlar 

tajriba jarayonida, turli xildagi loyihalarda mustahkamlanib boriladi va qanday

vaziyatda qaysi tamoyillardan foydalanishni bilish haqida ko‘nikma, albatta 

amalda ko‘plab foydalanilgandan so‘nggina hosil bo‘ladi. Yuqorida esa nazariy 

qism sifatida klass va obyekt tushunchalari, hamda enkapsulyatsiya, 

abstraksiya, vorislik, polimorfizm tamoyillarini ko‘rib o‘tdik. 

Download 412.24 Kb.

Do'stlaringiz bilan baham:




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