Texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi toshkent axborat


Download 400.55 Kb.
Pdf ko'rish
bet1/2
Sana13.12.2021
Hajmi400.55 Kb.
#180485
  1   2


 

O`ZBEKISTON RESPUBLIKASI AXBOROT 

TEXNOLOGIYALARI VA 

KOMMUNIKATSIYALARINI RIVOJLANTIRISH 

VAZIRLIGI MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBORAT 

TEXNOLOGIYALARI UNIVERSITETI 

 

              Mavzu:Malumotlar tuzilimasi va alagaritimlar 



 

Mustaqil ish: 

 

 

     Mavzu: C++ tilida klasslar va ularn qo`lanilishi: 



 

                                              

        

                                                       Guruh_017-18   

                                                                           O`quvichisi :Karimova M.E 

                                                                    Tekshirdi:Muxsinov.S 

             

TOSHKENT- 2020 




 

 

 



Reja: 

 

Kirish: 



 

1.  C++ tilda Classlar. 

2. Ularning qo`llanilishi. 

3.Misollar. 

Foydalanilgan adabiyotlar. 

 

 



 


 

                   Kirish 

Dasturlash tillari asosan maxsus so'z va gaplarning mantiqiy konstruktsiyasidan 

foydalanib dasturlar yaratish imkoniyatini beradi. Ob'ektga yo'naltirilgan 

yondashuvlar (OMYo) 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. OMYo eng muvaffaqiyatli, vaqt sinovidan o'tgan uslublarni 

o'zida mujassam etadi.

 

Dastlab dasturlash anchayin boshqotirma ixtiro bo'lib, u dasturchilarga 



dasturlarni kommutatsiya bloki orqali kompyuterning asosiy xotirasiga 

to'g’ridan-to'g’ri kiritish imkonini berdi. Dasturlar mashina tillarida ikkilik 

tasavvurda 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 ob'ektga mo'ljallangan yondashuv rivojiga asosiy ta'sir 

keyinroq paydo bo'lgan. Protsedura tillari dasturchiga axborotga ishlov berish 

dasturini pastroq darajadagi bir nechta protseduraga bo'lib tashlash imkonini 

beradi. Keyinchalik ob'ektga yo'naltirilgan dasturlash yo'nalishiga asos solindi. 

Ushbu kurs ishi mavzusi “Sinflar orasidagi munosabatlar” bo'lib, unda nazariy 

ma'lumotlar va Jawa muhitida dasturiy vosita yaratiladi. Yaratilgan dastur 

“Kutubxona” va “Kitob” asosida sinflar ishlab chiqish va ular orasidagi 

munosabatlarni o'rnatishdan iborat. “Kitob” sinfi yordamida har bir Kitob 

ob'ektlari tashkil etiladi va ularning qiymatlari kiritilib natijalari olinadi. 

 

 

 



 


 

C++ dasturlash tili C tiliga asoslangan. C esa o'z navbatida B va 

BCPL tillaridan kelib chiqqan. BCPL 1967 yilda Martin Richards 

tomonidan  tuzilgan  va  operatsion  sistemalarni  yozish  uchun 

mo'ljallangan  edi.  Ken  Thompson  o'zining  B  tilida  BCPL  ning 

ko'p hossalarini kiritgan va B da UNIX operatsion sistemasining 

birinchi versiyalarini yozgan. 

BCPL ham


, B ham tipsiz til bo'lgan. 

Yani  o'garuvchilarning  ma'lum  bir  tipi  bo'lmagan  -  har  bir 

o'zgaruvchi  kompyuter  hotirasida  faqat  bir  bayt  yer  egallagan. 

O'zgaruvchini  qanday  sifatda  ishlatish  esa,  yani  butun  sonmi, 

kasrli sonmi yoki harfdekmi, dasturchi vazifasi bo'lgan. 

 

 



  C tilini Dennis Ritchie B dan keltirib chiqardi va uni 1972 yili ilk 

bor Bell Laboratoriyasida, DEC PDP-11 kompyuterida qo'lladi. C 

o'zidan  oldingi  B  va  BCPL  tillarining  juda  ko'p  muhim 

tomonlarini  o'z  ichiga  olish  bilan  bir  qatorda  o'zgaruvchilarni 

tiplashtirdi va bir qator boshqa yangiliklarni kiritdi. Boshlanishda 

C asosan UNIX sistemalarida keng tarqaldi. Hozirda operatsion 

sistemalarning asosiy qismi C/C++ da yozilmoqda. C mashina 

arhitekturasiga  bog'langan  tildir.  Lekin  yahshi  rejalashtirish 

orqali  dasturlarni  turli  kompyuter  platformalarida  ishlaydigan 

qilsa bo'ladi.

 

 1983  yilda,  C  tili  keng  tarqalganligi  sababli,  uni  standartlash 



harakati  boshlandi.  Buning  uchun  Amerika  Milliy  Standartlar 

Komiteti (ANSI) qoshida X3J11 tehnik komitet tuzildi. Va 1989 

yilda  ushbu  standart  qabul  qilindi.  Standartni  dunyo  bo'yicha 

keng tarqatish maqsadida 1990 yilda ANSI va Dunyo Standartlar 

Tashkiloti  (ISO)  hamkorlikda  C  ning  ANSI/ISO  9899:1990 

standartini  qabul  qilishdi.  Shu  sababli  C  da  yozilgan  dasturlar 




 

kam miqdordagi o'zgarishlar yoki umuman o'zgarishlarsiz juda 

ko'p kompyuter platformalarida ishlaydi. 

   C++  1980  yillar  boshida  Bjarne  Stroustrup  tomonidan  C  ga 

asoslangan  tarzda  tuzildi.  C++  juda  ko'p  qo'shimchalarni  o'z 

ichiga olgan,  lekin  eng  asosiysi  u  ob'ektlar  bilan  dasturlashga 

imkon beradi. 

   Dasturlarni  tez  va  sifatli  yozish  hozirgi  kunda  katta  ahamiyat 

kasb etmoda. Buni ta'minlash uchun ob'ektli dasturlash g'oyasi 

ilgari surildi.  Huddi  70-chi yillar boshida strukturali  dasturlash 

kabi,  programmalarni  hayotdagi  jismlarni  modellashtiruvchi 

ob'ektlat orqali tuzish dasturlash sohasida inqilob qildi. 

   C++  dan  tashqari  boshqa  ko'p  ob'ektli  dasturlshga 

yo'naltirilgan  tillar  paydo  bo'ldi.  Shulardan  eng  ko'zga 

tashlanadigani  Xerox  ning  Palo  Altoda  joylashgan  ilmiy-qidiruv 

markazida (PARC) tuzilgan Smalltalk dasturlash tilidir. Smalltalk 

da hamma narsa ob'ektlarga asoslangan. C++ esa gibrid tildir. 

Unda  C  ga  o'hshab  strukturali  dasturlash  yoki  yangicha, 

ob'ektlar  bilan  dasturlash  mumkin.  Yangicha  deyishimiz  ham 

nisbiydir.  Ob'ektli  dasturlash  falsafasi  paydo  bo'lganiga  ham 

yigirma yildan oshayapti. 

 C++ funksiya va ob'ektlarning juda boy kutubhonasiga ega. Yani 

C++ da dasturlashni o'rganish ikki qismga bo'linadi. Birinchisi 

bu  C++  ni  o'zini  o'rganish,  ikkinchisi  esa  C++  ning  standart 

kutubhonasidagi  tayyor  ob'ekt/funksiyalarni  qo'llashni 

o'rganishdir. 

 

 



 

1.C++tilida Classilar 

 

Sinf sifatida ma'lumotlar to'plami va ularga boqlangan funktsiyalarni 



qarash mumkin. Sinflar C++ tili ichki imkoniyatlarini kengaytirib 

dasturchi oldida amaliyotning murakkab masalalarini echishda ancha 

qulaylik yaratadi.

 

C++ tilida inkapsulyatsiya printsipi sinf deb ataluvchi nostandart 



tiplarni(foydalanuvchi tiplarini) qosil qilish orqali qimoya qilinadi. 

To'qri aniqlangan sinf ob'ektini butun dasturiy modul sifatida ishlatish 

mumkin. qaqiqiy sinfning barcha ichki ishlari yashirin bo'lishi lozim. 

To'qri aniqlangan sinfning foydalanuvchilari uning qanday ishlashini 

bilishi shart emas, ular sinf qanday vazifani bajarishini bilsalar etarlidir. 

C++ tili ob'ektga mo'ljallangan dasturlash printsiplarini qo'llab 

quvvatlaydi. Bu printsiplar quyidagilardir: inkapsulyatsiya, 

merosxo'rlik, polimorfizm 

Inkapsulyatsiya. Agarda muqandis ishlab chiqarish jarayonida 

rezistorni qo'llasa, u 

buni yangidan ixtiro qilmaydi

, omborga 

(magazinga) borib mos parametrlarga muvofiq kerakli detalni tanlaydi. 

Bu qolda muqandis joriy rezistor qanday tuzilganligiga e'tiborini 

qaratmaydi, rezistor faqatgina zavod xarakteristikalariga muvofiq 

ishlasa etarlidir. Aynan shu tashqi konstruktsiyada qo'llaniladigan 

yashirinlik yoki ob'ektni yashirinligi yoki avtonomligi xossasi 

inkapsulyatsiya deyiladi. 

Inkapsulyatsiya yordamida berilganlarni yashirish ta'minlanadi. Bu 

juda yaxshi xarakteristika bo'lib foydalanuvchi o'zi ishlatayotgan 

ob'ektning ichki ishlari qaqida umuman o'ylamaydi. qaqiqatan qam, 

xolodilnikni ishlatishda refrijektorni ishlash printsipini bilish shart 

emas. Yaxshi ishlab chiqilgan dastur ob'ektini qo'llashda uning ichki 

o'zgaruvchilarining o'zaro munosabati qaqida qayqurish zarur emas. 




 

Yana bir marta takrorlash joizki, rezistorni samarali qo'llash uchun 

uning ishlash printsipi va ichki qurilmalari qaqidagi ma'lumotlarni 

bilish umuman shart emas. Rezistorning barcha xususiyatlari 

inkapsulyatsiya qilingan, ya'ni yashirilgan. Rezistor faqatgina o'z 

funktsiyasini bajarishi etarlidir. 

C++ tilida inkapsulyatsiya printsipi sinf deb ataluvchi nostandart 

tiplarni(foydalanuvchi tiplarini) qosil qilish orqali qimoya qilinadi. 

Sinflar qanday tuzilishga ega ekanligi bilan keyinroq tanishib chiqamiz. 

To'qri aniqlangan sinf ob'ektini butun dasturiy modul sifatida ishlatish 

mumkin. qaqiqiy sinfning barcha ichki ishlari yashirin bo'lishi lozim. 

To'qri aniqlangan sinfning foydalanuvchilari uning qanday ishlashini 

bilishi shart emas, ular sinf qanday vazifani bajarishini bilsalar etarlidir. 

Merosxo'rlik. Acme Motors kompaniyasi injenerlari yangi avtomobil 

konstruktsiyasini yaratishga aqd qilishsa, ular ikkita variantdan birini 

tanlashlari lozim. Birinchisi, avtomobilning konstruktsiyasini 

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 

muqandisikkinchi 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. 

C++ tili qam shunday merosxo'rlikni qimoya qiladi. Bu yangi 

berilganlar tipi (sinf), oldindan mavjud bo'lgan sinfni kengaytirishdan 

qosil bo'ladi. Bunda yangi sinf oldingi sinfning merosxo'ri deb ataladi. 

Polimorfizm. Akselatorni bosilishida Star modeliga nisbatan yangi 

yaratilgan Quasar modelida boshqacharoq amallar bajarilishi mumkin. 

Quasar modelida dvigatelga yoqilqini sepuvchi injektor sistemasi va 

Star modelidagi korbyurator o'rniga turbokompressor o'rnatilgan 

bo'lishi mumkin. Lekin foydalanuvchi bu farqlarni bilishi shart emas. U 




 

rulga o'tirgach oddiygina akselatorni bosadi va avtomobilning mos 

reaktsiyasini kutadi. 

C++ tili bir xil nomdagi funktsiya turli ob'ekt tomonidan ishlatilganda 

turli amallarni bajarishi imkoniyatini ta'minlaydi. Bu funktsiya 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. 

Sinflar va sinf a'zolari. Yangi tip sinfni e'lon qilish bilan tuziladi. Sinf - 

bu bir – biri bilan funktsional orqali boqlangan o'zgaruvchilar va 

metodlar to'plamidir. Sinflarga amaliyotdan ko'pgina misollar keltirish 

mumkin. Masalan, avtomabilni qildirak, eshik, o'rindiq, oyna va 

boshqa qismlardan tashkil topgan kollektsiya yoki qaydash tezligini 

oshirish, to'xtatish, burish imkoniyatlariga ega bo'lgan ob'ekt deb 

tasavvur qilish mumkin. Avtomobil o'zida turli eqtiyot qismlarni va 

ularni funktsiyalarini inkapsulyatsiya qiladi. Avtomobil kabi sinfda qam 

inkapsulyatsiya qator imkoniyatlarni beradi. Barcha ma'lumotlar bitta 

ob'ektda yiqilgan va ularga osongina murojaat qilish, ularni 

o'zgartirish va ko'chirish mumkin. Sizning sinfingiz bilan ishlovchi 

dasturiy qismlar, ya'ni mijozlar sizning ob'ektingizdan, uning 

qanday 

ishlashidan tashvishlanmasdan

, bemalol foydalanishlari 

mumkin. 


Sinf o'zgaruvchilarning ixtiyoriy kombinatsiyasidan, shuningdek 

boshqa sinflar tiplaridan iborat bo'lishi mumkin. Sinfdagi 

o'zgaruvchilar o'zgaruvchi – a'zolar yoki xossalar deyiladi. Sar sinfi 

o'rindiq, radiopriyomnik, shina va boshqa o'zgaruvchi - a'zolardan 

iborat. O'zgaruvchi – a'zolar faqatgina o'zlarining sinflarida yotadilar. 

qildirak va motor avtomobilning qanday tarkibiy qismi bo'lsa, 

o'zgaruvchi – a'zolar qam sinfning shunday tarkibiy qismidir. 

Sinfdagi funktsiyalar odatda o'zgaruvchi a'zolar ustida biror bir amal 

bajaradilar. Ular funktsiya – a'zolar yoki sinf metodlari deb aytiladi. 

Mashina sinfi metodlari qatoriga Haydash() va Tuxtatish() metodlari 

kiradi. Mushuk sinfi qayvonni yoshi va oqirligini ifodalovchi o'zgaruvchi  



 

 

 



– a'zolarga ega bo'lishi mumkin. Shuningdek, bu sinfning funktsional 

qismi Uxlash(), Miyovlash(), SichqonTutish() metodlaridan iborat 

bo'ladi. 

 

 



Funktsiya – a'zolar qam o'zgaruvchi a'zolar singari sinfda yotadi. Ular 

o'zgaruvchi a'zolar ustida amallar bajaradi va sinfni funktsional 

imkoniyatlarini aniqlaydi. 

 

 



Sinflar orasidagi munosabatlar. Murakkab sinflarni qosil qilishda oldin 

uni tashkil etuvchi oddiyroq sinflarni e'lon qilib, keyin esa ularni 

birlashtirish orqali sinfni qosil qilish maqsadga muvofiqdir. Masalan, 

qildirak sinfi, motor sinfi, uzatish korobkasi sinfi va boshqa sinflarni 

qosil qilib, keyin esa ularni birlashtirish orqali avtomobil sinfini qurish 

oldimizga turgan masalani echishni ancha osonlashtiradi. 

 

 

Ikkinchi misolni ko'rib chiqamiz. To'qri to'rtburchak chiziqlardan 



tashkil topgan. Chiziq esa ikki nuqta orqali aniqlanadi. qar bir nuqta x 

va u koordinatalar yordamida aniqlanadi. To'qri to'rtburchak to'rtta 

nuqtani birlashtiruvchi to'rtta chiziq yordamida aniqlanadi. Bunda qar 

bir nuqta grafikda koordinatalarga ega bo'ladi. Shuning uchun bir 

nuqtaning x, u koordinatalarini saqlash uchun Nuqta sinfi e'lon 

qilingan. 




 

 

 



 

 

C++ da dasturlashning asosiy bloklaridan biri funksiya-lardir. Funksiyalarning foydasi 



shundaki, katta masala bir necha kichik bo'laklarga bo'linib, har biriga alohida funksiya 

yozilganda, masala yechish algoritmi ancha soddalashadi.

 

 

Bunda dasturchi yozgan funksiyalar C++ ning standart kutubhonasi va boshqa firmalar 



yozgan kutub-honalar ichidagi funksiyalar bilan birlashtiriladi. Bu esa ishni osonlashtiradi. 

Ko'p holda dasturda takroran bejariladigan amalni funksiya sifatida yozish va kerakli joyda 

ushbu funksiyani chaqirish mumkin. Funksiyani programma tanasida ishlatish uchun u 

chaqiriladi, yani uning ismi yoziladi va unga kerakli argumentlar beriladi. 

() qavslar ushbu funksiya chaqirig'ini ifodalaydi. Masalan: 

foo(); 


k = square(l); 

Demak, agar funksiya argumentlar olsa, ular () qavs ichida yoziladi. Argumentsiz 

funksiyadan keyin esa () qavslarning o'zi qo'yiladi. 

 


Download 400.55 Kb.

Do'stlaringiz bilan baham:
  1   2




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