Ob’yektga mo’ljallangan dasturlash asoslari.
Mavzu: Ob’yektga mo’ljallangan dasturlash asoslari. Reja: 1. Sinf va ob’yekt tushunchalari. 2. Sinfda o’zgaruvchi va metodlar yaratish. 3. Konstruktor va destruktor tushunchalari. 4. Sinfda o’zgaruvchi va metodlarni ko’rinish sohalari.
Obyektga mo'ljallangan yondashuv (OMY) bir kunda o'ylab topilgan emas. Uning paydo bo'lishi dasturiy ta'minotning tabiiy rivojidagi navbatdagi pog'ona, xolos. Vaqt o'tishi bilan qanday uslublar ishlash uchun qulay, qaysinisi noqulay ekanini aniqlash oson bo'lib bordi. OMY eng muvaffaqiyatli, vaqt sinovidan o'tgan uslublarni o'zida mujassam etadi. Dastlab dasturlash anchayin boshqotirma ixtiro bo'Iib, u dasturchilarga dasturlarni kommutatsiya bloki orqali kompyuterning asosiy xotirasiga to'g'ridan- to'g'ri kiritish imkonini berdi. Dasturlar mashina tillarida ikkilik tasawurda yozilar edi. Dasturlarni mashina tilida yozishda tez-tez xatolarga yo'l qo'yilar, kodni kuzatib borish amalda deyarli mumkin emas edi. Bundan tashqari, mashina kodlaridagi dastur tushunish uchun g'oyat murakkab edi. Vaqt o'tishi bilan kompyuterlar tobora kengroq qo'llana boshlandi hamda yuqoriroq darajadagi protsedura tillari paydo bo'ldi. Bularning dastlabkisi FORTRAN tili edi. Biroq obyektga mo'ljallangan yondashuv rivojiga asosiy ta'sir keyinroq paydo bo'lgan. Protsedura tillari dasturchiga axborotga ishlov berish dasturini pastroq darajadagi bir nechta protseduraga boMib tashlash imkonini beradi. Pastroq darajadagi bunday protseduralar dasturning umumiy tuzilmasini belgilab beradi. Ushbu protseduralarga izchil murojaatlar protseduralardan tashkil topgan dasturlarning bajarilishini boshqaradi. Modulli dasturlashda, masalan, Modula 2 kabi tilda protsedurali dasturlashda topilgan ayrim kamchiliklarni bartaraf etishga urinib ko'rildi. Modulli dasturlash dasturni bir necha tarkibiy bo'laklarga, yoki, boshqacha qilib aytganda, modullarga bo'lib tashlaydi. Agar protsedurali dasturlash ma'lumotlar va protseduralarni boMib tashlasa, modulli dasturlash, undan farqli o'laroq, ularni birlashtiradi. Modul ma’lumotlarning o'zidan hamda ma'lumotlarga ishlov beradigan protseduralardan iborat. Dasturning boshqa qismlariga moduldan foydalanish kerak bo'lib qolsa, ular modul interfeysiga murojaat etib qo'ya qoladi. Modullar barcha ichki axborotni dasturning boshqa qismlarida yashiradi.
Obyektga mo'ljallangan dasturlash (OMD) modulli dasturlashdan keyingi mantiqiy pog'onani egallaydi, u modulga nasldan naslga o'tishni va polimorfizmni qo'shadi. Dasturchi OMD dan foydalanar ekan, dasturni bir qator oliy darajali obyektlarga bo'lish yo'li bilan tizimlashtiradi. Har bir obyekt hal qilinayotgan muammoning ma'lum birtomonini modellashtiradi. OMD endilikda dasturni bajarish jarayonini boshqarish uchun dasturchi diqqatini protseduralarni ketma- ketlikda chaqirib olish ro'yxatini tuzib o'tirishga qaratmaydi.Buning o'rniga obyektlar o'zaro aloqada bo'ladi. OMY yordamida ishlab chiqilgan dastur hal qilinayotgan muammoning amaldagi modeli bo'lib xizmat qiladi. Dasturga obyektlar atamalari bilan ta'rif berish dasturiy ta'minotni ishlab chiqishning eng tushunarli usulidir. Obyektlar hamma narsani obyekt nima qilayotgani nuqtayi nazaridan idrok etishga, ya'ni uning xatti-harakatlarini xayolan modellashtirishga majbur qiladi. Shu tufayli obyektga yondashishda u dasturning bajarilishi jarayonida qanday ishlatiladi degan nuqtayi nazardan biroz e'tiborni chalg'itishi mumkin. Shunday qilib. dasturni yozish jarayonida haqiqiy dunyoning tabiiy atamalaridan foydalanish mumkin. Dasturni alohida protseduralar va ma'lumotlar shaklida (kompyuter dunyosi atamalarida) qurish o'rniga obyektlardan iborat dastur qurish mumkin. Obyektlar otlar, fe'llar va sifatlar yordamida haqiqiy dunyoni dasturda modellashtirishga imkon beradi. Joriy qilish (realizatsiya) xatti-harakatlar qanday bajarilayotganini belgilaydi. Dasturlash atamalarida joriy qilish — bu dasturiy kod. OMD, haqiqiy dunyo kabi, obyektlardan tashkil topadi. Obyektga mo'ljallangan sof dasturlash tilida eng dastlabki, bazaviy, butun, mantiqiy turlardan tortib, to sinflarning murakkabroq nusxalarigacha, barchasi obyekt hisoblanadi. Biroq obyektga moMjallangan tillarning hammasi ham bu darajada chuqurlashib ketmagan. Ayrim tillarda (masalan, Java kabi) int va float ga o'xshash oddiy primitivlar obyekt sifatida olib qaralmaydi. OMD obyektlari, haqiqiy olam obyektlari kabi, o'z xususiyatlari va xatti-harakatlari bo'yicha tasniflanadi.
1. Sinf va ob’yekt tushunchalari . Sinf - bu maxsus turlar bo’lib, o’zida maydon, usullar va xossalarni mujassamlashtiradi. Sinf murakkab struktura bo’lib, ma’lumotlar ta’riflaridan tashqari, prosedura va funksiyalar ta’riflarini o’z ichiga oladi. Sinf jismoniy mohiyatga ega emas, tuzilmaning e’lon qilinishi uning eng yaqin analogiyasidir. Sinf ob’ektni yaratish uchun qo’llangandagina, xotira ajralib chiqadi. Bu jarayon ham sinf nusxasi (class intsance) ni yaratish deb ataladi. To’g’ri aniqlangan sinf ob’ektini butun dasturiy modul sifatida ishlatish mumkin. Haqiqiy sinfning barcha ichki ishlari yashirin bo’lishi lozim. To’g’ri aniqlangan sinfning foydalanuvchilari uning qanday ishlashini bilishi shart emas, ular sinf qanday vazifani bajarishini bilsalar yetarlidir. Obyekt — mavhum (abstrakt) mohiyat bo'lib, u bizni o'rab turgan haqiqiy olamning tavsiflariga ega. Obyektlarni yaratish va ular ustida manipulyatsiyalar olib borish С++ tilining qandaydir alohida imtiyozi emas, balki obyektlarning tavsifi va ular ustida o'tkaziladigan operatsiyalarni kodli konstruksiyalarda o'zida mujassamlantiradigan dasturlash metodologiyasi (uslubiyoti) ning natijasidir. Dasturning har bir obyekti, har qanday haqiqiy obyekt kabi, o'z atributlari va o'ziga xos xulq-atvori bilan ajralib turadi. Obyektlarni turli kategoriyalarga ko'ra tasniflash mumkin: masalan, mening «Cassio» raqamli qo’l soatim soatlar sinfiga mansub. Soatlarning dasturiy realizatsiyasi (ishlatilishi), standart holat sifatida, sizning kompyuteringizning operatsiya tizimi tarkibiga kiradi. Har bir sinf sinflar tabaqalanishida (ierarxiyasida) ma'lum o'rinni egallaydi. Masalan, barcha soatlar vaqtni o'Ichash asboblari sinfiga (tabaqalanishda ancha yuqori turgan) mansub, soatlar sinfining o'zi esa xuddi shu mavzudagi ko'plab hosila variatsiyalarni o'z ichiga oladi. Shunday qilib, har qanday sinf obyektlarning biror bir kategoriyasini aniqlaydi, har qanday obyekt esa biror bir sinf ekzemplyari (nusxasi)dir.
Obyektga mo’ljallangan dasturlash (OMD) — bu dasturchining asosiy diqqatini obyektlarni ishlatish tafsilotlariga emas, balki obyektlar o'rtasidagi aloqalarga qaratadigan metodika. 2. Sinfda o’zgaruvchi va metodlar yaratish. Sinflar ma'lum maqsadlarga erishish uchun ishlab chiqiladi. Odatda dasturchi mavhum g'oyadan boshlaydi va u asta-sekin loyihani ishlab chiqish jarayonida turli detallar bilan toidirib boriladi. Ba'zida birbiriga g'oyat o'xshash bo'Igan bir necha sinfni ishlab chiqish bilan ish tugallanadi. Sinflarda kodlarni bu kabi takrorlash (dubllashtirish)dan qochish uchun bu sinflarni ikki qismga bo'lish kerak, ya'ni umumiy qismni ota sinfida aniqlab, farqlanadiganlarini hosila sinfda qoldirish kerak. Sinfdan foydalanishdan oldin u e'lon qilinishi kerak. Odatda, amaliyotchi dasturchi tayyor bazaviy sinflardan foydalanadi, bundan tashqari u barcha spetsifikatsiyalarni va ichki ishlash yo’llarini bilishi mutlaqo shart emas. Biroq, C+ +bazaviy sinfidan foydalanishingiz uchun qanday ma'lumotlar a'zolari va metodlarga kira olishingiz mumkinligini albatta bilishingiz lozim. Sinf ichidagi har bir e'lon qilish, sinf nomi qaysi seksiyada paydo bo'lishiga qarab, bu nomlarga kirish imtiyozlarini aniqlaydi. Har bir seksiya quyidagi kalit- so'zlarning biridan boshlanadi: private, protected, public . Bazaviy sinfni e'lon qilishning umumlashma sintaksisi quyidagi ko'rinishga ega: class className private: <privat ma'lumotlar a'zolari> <privat konstruktorlar> <privat metodlar> protected: <himoyalangan ma'lumotlar a'zolari> <himoyalangan konstruktorlar> <himoyalangan metodlar> public: <ommaviy xususiyatlar> <ommaviy ma'lumotlar a'zolari> <ommaviy konstruktorlar> <ommaviy destruktor> <ommaviy