Zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi
Download 412.24 Kb. Pdf ko'rish
|
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
ma'muriyatiga murojaat qiling