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.
Do'stlaringiz bilan baham: |