Войти Регистрация

Docx

  • Рефераты
  • Дипломные работы
  • Прочее
    • Презентации
    • Рефераты
    • Курсовые работы
    • Дипломные работы
    • Диссертациии
    • Образовательные программы
    • Инфографика
    • Книги
    • Тесты

Информация о документе

Цена 50000UZS
Размер 3.5MB
Покупки 0
Дата загрузки 17 Январь 2025
Расширение doc
Раздел Курсовые работы
Предмет Информатика и ИТ

Продавец

Lola Mamurova

Дата регистрации 25 Сентябрь 2024

12 Продаж

Python dasturlash tilida inkapsulyatsiya

Купить
”PYTHON DASTURLASH TILIDA INKAPSULYATSIYA” 
mavzusidagi 
K URS ISHI
Ilmiy rahbar:
____________________
1 MUNDARIJA
KIRISH....................................................................................................................3
I BOB. PYTHON DASTURLASH TILIDA INKAPSULYATSIYA.....................5
1.1. Inkapsulyatsiya daturlash tilidagi asosiy tamoyillardan biri..........................5
1.2.  Bog'lanish sifatida inkapsulyatsiya……………………………………….....7
1.3. Kirish nazorati sifatida inkapsulyatsiya……………………………………..8
II BOB.  INKAPSULYATSIYA BUZILISHI…………………………………....10
2.1.  Do'stlar bilan inkapsulyatsiyani buzish (yaxshi amaliyot)……………..…..15
2.2. C da inkapsulyatsiya……………………………………………………….…18
2.3. Ko'rsatkichlar yordamida shaxsiy o'zgaruvchilarga kirish………………....20
XULOSA.................................................................................................................25
FOYDALANILGAN ADABIYOTLAR................................................................27
ILOVA.....................................................................................................................28
2 KIRISH
Barcha dasturlash tillari  kabi Python dasturlash tili ham  rivojlanib, zamonga
va talabga  qarab  ishlab  chiqaruvchilar   tomonidan o’zgarishlar  kiritib borilmoqda.
Python   –   yuqori   darajali   rivojlangan   tillar   turkumiga   kirib,   turli   xildagi   veb-
ilovalarni   yaratishga   mo’ljallangan.   Uning   yordamida   o’yin,   ma’lumotlar   bazasi,
biznes-masalalarni   hal   qilish,   amaliy   masalalarni   yechish       kabi   bir   qator   amaliy
ahamiyatga   ega   bo’lgan   masalalar   hal   etish   imkoniyatlari   berilgan.   Shuningdek
sun’iy intellekt, mashinaviy o’qitish sohasida ham keng qo’llanilmoqda. Python tili
to’la ob’ektga mo’ljallangan til hisoblanadi. 
Python   dasturlash   tili   yaratish   bo’yicha   1980   yillarda   ish   boshlangan   bo’lib,
1989   yili   Gollandiyaning   CWI   instituti   xodimi   Gvido   van   Rossum   tomonidan
yakunlangan. 1990 yili tilning rasmiy matni e’lon qilingan. Shu vaqtlardan buyoni
uning   bir   qator   versiyalari   ishlab   chiqildi.   2000   yili   tilning   2.0,   2008   yili   3.0
versiyalari   ishlab   chiqildi.   Shuningdek,   tilning   oraliq   versiyalari   ham   ishlab
chiqilgan   bo’lib   biz   uning   keng   tarqalgan   3.10   versiyasi   haqida   to’xtalib
o’tmoqdamiz.   Tilning   oxirgi   versiyalari,   undagi   o’zgarishlar,   zaruriy   utilitalar   va
boshqa   zaruriy   ma’lumotlar   tilning   rasmiy   sayti   https://www.python.org/   da   to’la
berilgan.   Ushbu   sayt   orqali   dasturlash   tilining   oxirgi   versiyalarini   ko’chirib   olish
mumkin.
Gvido   1970   yillarda   britaniyada   keng   tarqalgan   “Monti   Paytonning   xavo
tsirki”  komediyasining   muxlisi   bo’lganligi   uchun   dasturlash   tiliga   Python  nomini
bergan.     Dasturlash   tili   tez   ommalasha   bordi   va   hozirgi   kunga   kelib   dasturlash
tillari orasida eng yuqori o’rinlarni egallab kelmoqda.
Python   tili   kross-platformali   til   hisoblanadi,   ya’ni   ushbu   til   barcha   asosiy
operatsion   sistemalarga   o’rnatish   imkoniya ti   mavjud.   Shuning   uchun   tuzilgan
dasturlar   Python   tili   o’rnatilgan   boshqa   operatsion   sistemalarda   ham   ishlatilishi
mumkin.   Ushbu   tilda   tuzilgan   dastur   boshqa   dasturlash   tillarida   tuzilgan
3 dasturlardan   hajm   jixatidan   kichikligi,   oson   o’qilishi,   dasturni   taxrirlashning
qulayligi va boshqa parametrlari bilan farq qilib turadi. 
Mavzuning   dolzarbligi   Hozirgi   jadal   rivojlanish   va   turli   jarayonlarni
avtomatlashtirish   hamda   robotlashtirish   davrida   dasturlashni   bilish   va   uni   o‘z   ish
jarayonida   ishlata   olish   texnik   va   pedagogik   yo‘nalishda   ta’lim   olayotgan
o‘quvchi-talabalar   uchun   juda   muhim   deb   hisoblanadi.   Bu   zamonaviy
mutahassislar   uchun   eng   zaruriy   talablardan   biridir.   Sababi   hozirgi   kunda
informatika   turli-tuman   sohalarda   muvaffaqiyatli   ravishda   qo‘llanilishi
mumkinligini hech kim ham rad eta olmaydi. Huddi shuning uchun ham, o‘quv -
qo‘llanmaning   asosiy   maqsadi   –   o’quvchi   talabalarga   Python   dasturlash   tili
misolida   hisoblash   texnikasi   vositalarini   ishlatish   bo‘yicha   bilimlarni   va   amaliy
ko‘nikmalarni   imkon   darajasida   singdirishdir. Inkapsulyatsiya   OOP   tillaridan
tashqarida mavjud. Zamonaviy OOP tillari inkapsulyatsiyadan foydalanishni qulay
va tabiiy qiladi.
Masalaning qo`yilishi
Kurs ishida asosiy masalalar  qo'yilishi:
1. Python dasturlash tilini o’rganish
2. Amaliy ishlarni mustaqil bajara olish
3. Ma’lumotlarni boshqaradiga usullar bilan bog’lash
4. Ma’lumotlarga kirishni boshqarish
5. Shaxsiy funksiyalarga kira olish 
6. Bog’lanish sifatidagi inkapsulyatsiyani tushuntira olish
7. Kirish nazoratida sifatidagi inkapsulyatsiyalarni bajara olish
8. Inkapsulyatsiarda buzilishlarni tushunish
4 I BOB.  PYTHON DASTURLASH TILIDA INKAPSULYATSIYA.
1.1. Inkapsulyatsiya daturlash tilidagi asosiy tamoyillardan biri
"Kapsula"   atamasining   ma'nosi   noaniq   va   manbadan   manbaga   farq   qiladi.
Umuman   olganda,   inkapsulyatsiya   OOP   ning   asosiy   tamoyillaridan   biri
hisoblanadi,   garchi   ba'zi   ilmiy   maqolalarda   inkapsulyatsiya   ro'yxatidan   butunlay
chiqarib   tashlanadi.   Misol   uchun,   Jon   Mitchell   "Dasturlash   tillaridagi
tushunchalar"   kitobida   OOPda   asosiy   tushunchalarni   sanab   o'tishda   faqat
abstraktsiyani   eslatib   o'tadi   -   bu   atama   ma'no   jihatidan   inkapsulyatsiyaga   yaqin,
ammo   baribir   kengroq   va   yuqori   darajali   hisoblanadi.   Boshqa   tomondan,   Robert
Martin   o'zining   "Toza   arxitektura"   kitobida   inkapsulyatsiya,   merosxo'rlik   va
polimorfizm OOPning asosi deb hisoblanishini aniq aytadi.
"Inkapsulyatsiya"   atamasiga   berilgan   turli   xil   ta'riflar   umumiy   maxrajga   kelish
qiyin.   Umuman   olganda,   bu   atamaning   ma'nosiga   ikkita   yondashuv   mavjud.
Inkapsulyatsiyani quyidagicha ko'rish mumkin:
ma'lumotlarni ushbu ma'lumotlarni boshqaradigan usullar bilan bog'lash;
ma'lumotlarga   kirishni   boshqarish   vositalari   yoki   ushbu   ma'lumotlarni
boshqaradigan usullar to'plami.
Obyektga Yo'naltirilgan Dasturlashning tamoyillaridan   biri bu inkapsulyatsiya , 
ya'ni obyektning xususiyatlarga to'g'ridan-to'g'ri (nuqta orqali) murojat qilishni va 
ularning qiymatini o'zgartirishni taqiqlab qo'yish. Pythonda bunday yopiq 
xususiyatlarning nomi ikki pastki chiziq bilan boshlanadi:
from uuid import uuid4
class Avto:
"""Avtomobil klassi"""
def __init__(self,make,model,rang,yil,narh,km=0):
5 """Avtomobilning xususiyatlari"""
self.make = make
self.model = model
self.rang = rang
self.yil = yil
self.narh = narh
self.__km = km
self.__id = uuid4()
def get_km(self):
return self.__km
def get_id(self):
return self.__id
Yuqoridagi kodimizning 11-qatorida __km xususiyati avtomobilning necha km 
yurgani haqida ma'lumot saqlaydi va bu ma'lumotni tashqaridan o'zgartirib 
bo'lmaydi. Kodimizning 12-qatorida esa har bir yangi   yaratilgan avtomobilga 
yangi , noyob va takrorlanmas ID generasiya qilish uchun uuid4() funksiyasidan 
foydalanayapmiz. Deylik biz mashinalar sotish   uchun onlayn bozor yaratsak , 
bozorimizga qo'shilgan har bir moshina endi o'zining ID raqamiga ega bo'ladi va 
bu ID raqamni to'g'ridan-to'g'ri (nuqta orqali) ko'rib bo'lmaydi.
avto1 = Avto("GM","Malibu","Qora",2020,40000,100000)
avto1.__km
Natija: AttributeError: 'Avto' object has no attribute '__km'
Yopiq xususiyatlarni ko'rish uchun esa alohida metodlar yozish maqsadga muvofiq
bo'ladi (get_km() va get_id()):
print(f"ID: {avto1.get_id()}")
Natija: ID: 1d4f39a4-3222-4682-9231-6275ca5e1bff
Bunday yopiq xususiyatlarni o'zgartirish ham metodlar orqali amalga oshirilishi 
6 kerak. Misol uchun mashinaning necha km yurganini o'zgartirish uchun 
klassimizga quyidagi metodni qo'shamiz:
def add_km(self,km):
"""Mashinaning km ga yana km qo'shish"""
if km>=0:
self.__km += km
else:
print("Mashina km kamaytirib bo'lmaydi")
avto1.add_km(1500)
print(avto1.get_km())
Natija: 101500
Inkapsulyatsiyaning maqsadi obyektning ma'lum xususiyatlarini tashqi ta'sirdan 
himoya qilish. Misol uchun yuqoridagi misolimizda mashinaning qancha yurganini
faqat musbat tarafga o'zgartirish mumkin, noyob ID raqamini esa umuman 
o'zgartirib bo'lmaydi.
1.2.Bog'lanish sifatida inkapsulyatsiya
"Inkapsulyatsiya"   atamasining   bunday   talqinini   tushuntirish   juda   oddiy.   Bunday
holda,   kamida   bitta   o'zgaruvchiga   va   uni   boshqaradigan   bitta   usulga   ega   bo'lgan
har qanday sinf ushbu printsipni aniq ko'rsatadi.
#!/usr/bin/python3
class   Phone :
     number =  "111-11-11"
     def   print_number ( self ):
         print (  "Phone number is: " , self.number )
my_phone = Phone()
my_phone.print_number()
7 input (  "Press Enter to exit"  )
Ayrim   dasturlash   tillarida   foydali   bo'lishi   mumkin   bo'lgan   faqat   usullardan
iborat (va o'zgaruvchilari bo'lmagan) sinf yaratish mumkin. Bundan tashqari, hech
qanday  usullarsiz  faqat  ma'lumotlar  sinfini   yaratish  mumkin,  ko'p hollarda  undan
qochish   kerak.   Har   ikkala   amaliyot   ham   kerak   bo'lganda   qo'llanilishi   kerak   va
ularning "birlashtiruvchi" inkapsulyatsiya bilan bog'liqligi bahsli.
1.3.Kirish nazorati sifatida inkapsulyatsiya
Ma'lumotlar   yoki   usullarga   kirishni   cheklash   kontseptsiyasini   tushuntirish   ancha
batafsilroq   ma'lumotlarni   talab   qiladi.   Avvalo,   ushbu   kontekstda   "kirish"   atamasi
sinfning   ichki   mazmunini   ko'rish   va   /   yoki   o'zgartirish   qobiliyati   sifatida
tushunilishi   kerak.   Ko'pgina   OOP   tillari   tomonidan   taqdim   etilgan   kirishning   bir
necha   darajalari   mavjud.   Xulosa   qilib   aytishimiz   mumkinki,   ob'ektning
ma'lumotlari quyidagilar bo'lishi mumkin:
ommaviy (public) - ma'lumotlar hamma uchun mavjud;
xususiy (private) —	 ma’lumotlar faqat u tegishli bo‘lgan obyekt/sinf uchun mavjud.
Aksariyat tillar ushbu chegaralar orasiga tushadigan qo'shimcha kirish darajalariga
ega.   Masalan,   C++   va   Python3   uchta   kirish   darajasiga   ega:   ommaviy,
himoyalangan va xususiy; C# ro'yxatga " internal " kalit so'zini qo'shadi.
Shuni   ta'kidlash   kerakki,   ko'pchilik   dasturlash   tillarida   har   qanday   ma'lumotlarga
kirish   darajasi   sukut   bo'yicha   o'rnatiladi.   Misol   uchun,   C++   da,   sukut   bo'yicha,
sinfdagi   ma'lumotlarga   kirish   darajasi   shaxsiy   qilib   o'rnatiladi   -   uning
ma'lumotlariga   faqat   sinf   a'zolari   va   do'stlari   kirishlari   mumkin.   C++   tilidagi
struktura ( struct ) uchun standart kirish darajasi har xil — u ommaviydir va bunday
tuzilmadagi   ma’lumotlarga   har   kim   kirishi   mumkin.   Python   3   da   sinf
o'zgaruvchilari va usullariga kirish darajasi butunlay sintaksisga bog'liq.
Misollar
8 Inkapsulyatsiya
Python 3 ma'lumotlarga kirishning 3 darajasini ta'minlaydi:
ommaviy ( public , maxsus sintaksis yo'q, publicBanana);
himoyalangan ( protected , ismning boshida bitta pastki chiziq, _protectedBanana);
xususiy ( private , ismning boshida ikkita pastki chiziq, __privateBanana).
Qisqalik   va   soddalik   uchun   misolda   faqat   ikkita   asosiy   daraja   (xususiy   va
ommaviy) yoritilgan.
#!/usr/bin/python3
class   Phone :
     username =  "Kate"                  # public variable
     __how_many_times_turned_on =  0     # private variable
     def   call ( self ):                    # public method
         print (  "Ring-ring!"  )
     def   __turn_on ( self ):               # private method
         self.__how_many_times_turned_on +=  1  
         print (  "Times was turned on: " , 
self.__how_many_times_turned_on )
my_phone = Phone()
my_phone.call()
print (  "The username is " , my_phone.username )
# my_phone.turn_on()
# my_phone.__turn_on()
# print( “Turned on: “, my_phone.__how_many_times_turned_on)
# print( “Turned on: “, my_phone.how_many_times_turned_on)
# will produce an error
9 input (  "Press Enter to exit"  )
II-BOB.INKAPSULYATSIYA BUZILISHI
Tilning   o'zi   dasturchiga   inkapsulyatsiyani   chetlab   o'tadigan   sintaktik   vosita   bilan
ta'minlaydi.   Shaxsiy   o'zgaruvchilarni   o'qish   va   o'zgartirish   va   shaxsiy
funktsiyalarni chaqirish hali ham mumkin.
#!/usr/bin/python3
class   Phone :
     username =  "Kate"                  # public variable
     __serial_number =  "11.22.33"       # private variable
     __how_many_times_turned_on =  0     # private variable
     def   call ( self ):                    # public method
         print (  "Ring-ring!"  )
     def   __turn_on ( self ):               # private method
         self.__how_many_times_turned_on +=  1  
         print (  "Times was turned on: " , 
self.__how_many_times_turned_on )
my_phone = Phone()
my_phone._Phone__turn_on()
10 my_phone._Phone__serial_number =  "44.55.66"
print (  "New serial number is " , my_phone._Phone__serial_number )
input (  "Press Enter to exit"  )
Python3   har   qanday   sinf   o'zgaruvchilari   yoki   usullariga   cheklangan   kirishni
ta'minlamaydi.   Yashirilishi   kerak   bo'lgan   ma'lumotlar   aslida   o'qilishi   va
o'zgartirilishi   mumkin.  Python3  da  inkapsulyatsiya  ko'proq  konventsiyadir  va   uni
saqlab qolish dasturchiga bog'liq.
Obyektga   Yo'naltirilgan   Dasturlashning   tamoyillaridan   biri   bu
inkapsulyatsiya,   ya'ni   obyektning   xususiyatlarga   to'g'ridan-to'g'ri   (nuqta   orqali)
murojat   qilishni   va   ularning   qiymatini   o'zgartirishni   taqiqlab   qo'yish.   Pythonda
bunday yopiq xususiyatlarning nomi ikki pastki chiziq bilan boshlanadi:
Yuqoridagi   kodimizning   11-qatorida   __km   xususiyati   avtomobilning   necha
km   yurgani   haqida   ma'lumot   saqlaydi   va   bu   ma'lumotni   tashqaridan   o'zgartirib
11 bo'lmaydi.   Kodimizning   12-qatorida   esa   har   bir   yangi   yaratilgan   avtomobilga
yangi,   noyob   va   takrorlanmas   ID   generasiya   qilish   uchun   uuid4()   funksiyasidan
foydalanayapmiz.   Deylik   biz   mashinalar   sotish   uchun   onlayn   bozor   yaratsak,
bozorimizga  qo'shilgan har  bir  moshina endi  o'zining ID raqamiga ega bo'ladi  va
bu ID raqamni to'g'ridan-to'g'ri (nuqta orqali) ko'rib bo'lmaydi.
avto1 = Avto("GM","Malibu","Qora",2020,40000,100000)
avto1.__km
Natija:  AttributeError: 'Avto' object has no attribute '__km'
Yopiq   xususiyatlarni   ko'rish   uchun   esa   alohida   metodlar   yozish   maqsadga
muvofiq bo'ladi ( get_km()  va  get_id() ):
print (f"ID: {avto1.get_id()}")
Natija: ID:  1d4f39a4-3222-4682-9231-6275ca5e1bff
Bunday   yopiq   xususiyatlarni   o'zgartirish   ham   metodlar   orqali   amalga
oshirilishi kerak. Misol uchun mashinaning necha km yurganini o'zgartirish uchun
klassimizga quyidagi metodni qo'shamiz:
Natija: 101500
12 Inkapsulyatsiyaning   maqsadi   obyektning   ma'lum   xususiyatlarini   tashqi
ta'sirdan himoya qilish. Misol uchun yuqoridagi misolimizda mashinaning qancha
yurganini   faqat   musbat   tarafga   o'zgartirish   mumkin,   noyob   ID   raqamini   esa
umuman o'zgartirib bo'lmaydi.
Odatiy   bo'lib,   sinfda   (sinfda)   ma'lumotlar   va   usullar   shaxsiy   (maxfiy);   ular
faqat   tegishli   sinf   tomonidan   o'qilishi   va   o'zgartirilishi   mumkin.   Kirish   darajasini
C++ tomonidan taqdim etilgan tegishli kalit so'zlar bilan o'zgartirish mumkin.
C++   da   bir   nechta   spetsifikatsiyalar   mavjud   va   ular   ma'lumotlarga   kirishni
quyidagi tarzda o'zgartiradilar:
ommaviy (ommaviy) ma'lumotlar - hamma uchun mavjud;
himoyalangan (himoyalangan) - faqat sinf va bolalar sinflari uchun mavjud;
xususiy (xususiy) - faqat ular tegishli bo'lgan sinf uchun mavjud.
Qisqacha   aytganda,   misollarda   faqat   ikkita   daraja   (xususiy   va   ommaviy)
yoritiladi.
Inkapsulyatsiyaga misol
13 Contact   sinfida   umumiy   o'zgaruvchilar   va   usullar   asosiy   dasturdan   (asosiy)
mavjud. Xususiy  o'zgaruvchilar  va usullar  faqat  sinfning o'zi  tomonidan o'qilishi,
chaqirilishi yoki o'zgartirilishi mumkin.
14 Asosiy   dasturdan   (asosiy)   mobile_number   shaxsiy   o zgaruvchisini   chopʻ
etishga   yoki   o zgartirishga   urinish   kompilyatsiya   xatosiga   olib   keladi,   chunki	
ʻ
sinfdagi shaxsiy ma lumotlarga kirish cheklangan.	
ʼ
2.1.Do'stlar bilan inkapsulyatsiyani buzish (yaxshi amaliyot)
C++ tilida “do'st” kalit so'zi  mavjud bo'lib, u sizga ma'lumotlarga kirishning
umumiy   qoidalariga   istisnolar   qo'shish   imkonini   beradi.   Agar   funktsiya   yoki   sinf
Contact sinfining do'sti deb atalsa, ular himoyalangan yoki shaxsiy ma'lumotlarga
bepul kirish huquqiga ega bo'ladilar.
Do'stlikning ikkita asosiy qoidasi bor - do'stlik meros bo'lib o'tmaydi va o'zaro
emas. Bundan tashqari, "do'stlar" ga ega bo'lish ma'lumotlar xavfsizligi darajasini
o'zgartirmaydi   -   "do'st"   bundan   mustasno,   shaxsiy   ma'lumotlar   maxfiy   bo'lib
qoladi.
15 Ushbu   misolda   print_numbers()   funksiyasi   Contact   sinfining   usuli   emas,
balki   oddiy   funksiyadir.   print_numbers()   funksiyasini   Contact   sinfining   “do‘sti”
deb   e’lon   qilish   print_numbers()   funksiyasining   shaxsiy   ma’lumotlarga   kirishiga
16 yagona sababdir. Agar siz do'stingizning ta'rifi bilan chiziqni olib tashlasangiz, kod
tuzilmaydi.
Eslatma:   Do'stlar   haqorat   qilmaslik   yaxshiroqdir.   Do'st   qo'shish   umumiy
amaliyot sifatida emas, balki istisno sifatida qaralishi kerak.
Turni   o'zgartirish   va   ko'rsatkichlar   bilan   inkapsulyatsiyani   buzish   (yomon
amaliyot)
Avvalo   shuni   ta'kidlash   joizki,   ko'rsatgichlardan   foydalanish   va   turdagi
konvertatsiyani bu tarzda ishlatish yomon fikrdir. Ushbu usul kerakli ma'lumotlarni
olishni kafolatlamaydi. U yomon o'qiladi va yomon saqlanadi. Qanday bo'lmasin, u
mavjud.
C++   C   tilidan   ko'plab   vositalarni   meros   qilib   oldi,   ulardan   biri   matn
terishdir.   Odatiy   bo'lib,   sinfdagi   barcha   o'zgaruvchilar   va   usullar   shaxsiydir.   Shu
bilan birga, strukturadagi (strukturadagi) ma'lumotlarga kirishning standart darajasi
ommaviydir.   Ma'lumotlar   Contact   sinfidagi   ma'lumotlar   bilan   bir   xil   tarzda
joylashtiriladigan   va   shaxsiy   ma'lumotlarga   kirish   uchun   turdagi   konversiyadan
foydalangan holda tuzilma yoki butunlay ochiq sinf yaratish mumkin.
17 18 2.2.C da inkapsulyatsiya
Inkapsulyatsiya   an'anaviy   ravishda   OOPning   asosiy   tamoyillaridan   biri
hisoblanadi.   Biroq,   bu   ushbu   tamoyilning   protsessual   tillarda   qo'llanilishini
cheklamaydi.   C   tilida   "xususiy"   va   "ommaviy"   kalit   so'zlari   yo'qligiga   qaramay,
inkapsulyatsiya uzoq vaqt davomida ishlatilgan.
Shaxsiy o'zgaruvchilar
Inkapsulyatsiya   kontekstida   C   dagi   barcha   ma'lumotlar   sukut   bo'yicha
ommaviy   hisoblanishi   mumkin.   Tuzilmalardagi   (strukturadagi)   o'zgaruvchilarga
kirish   darajasi,   agar   ularning   ta'rifi   asosiy   dasturdan   ajratilgan   bo'lsa,   xususiyga
o'zgartirilishi   mumkin.  Istalgan   effektga  alohida  sarlavha   (sarlavha,  .h)  va   manba
(manba, .c) fayllari yordamida erishish mumkin.
Ushbu misolda tuzilma "private_var.c" alohida manba faylida aniqlangan. C
da strukturani ishga tushirish xotirani ajratish va ajratishni talab qilganligi sababli,
bir nechta yordamchi funktsiyalar qo'shilgan .
19 Tegishli sarlavha faylida "private_var.h" Kontakt tuzilishi e'lon qilindi, lekin
uning mazmuni asosiy dasturdan yashirin bo'lib qoldi.
Shunday  qilib,   "main.c"   uchun  strukturaning  mazmuni   noma'lum   va  shaxsiy
ma'lumotlarni   o'qish   yoki   o'zgartirishga   urinishlar   kompilyatsiya   xatosiga   olib
keladi.
20 2.3.Ko'rsatkichlar yordamida shaxsiy o'zgaruvchilarga kirish
Turni   konvertatsiya   qilish   C   va   C++   da   inkapsulyatsiyani   yengish   uchun
ishlatilishi   mumkin,   ammo   bu   yondashuv   allaqachon   tasvirlangan.   Ma'lumotlar
tuzilishda   e'lon   qilingan   tartibda   joylashtirilganligini   bilib,   ko'rsatkichlar   va
ko'rsatkich arifmetikasi hiyla-nayrang qiladi.
Strukturadagi   o'zgaruvchilarga   kirish   cheklangan.   Biroq,   ma'lumotlar
saqlanadigan   xotira   emas,   balki   faqat   o'zgaruvchilar   yashiringan.   Ko'rsatkichlarni
xotira   manziliga   havola   sifatida   qarash   mumkin   va   agar   bu   xotira   dastur   uchun
mavjud bo'lsa, bu xotirada saqlangan ma'lumotlarni o'qish va o'zgartirish mumkin.
Agar   ko'rsatkich   struktura   o'z   ma'lumotlarini   saqlaydigan   xotiraga   tayinlangan
bo'lsa, ularni o'qish mumkin. Xuddi shu tuzilma ta'rifi (bir xil ".c" va ".h" fayllari)
va o'zgartirilgan "main.c" fayli yordamida kirish cheklovi yengib o'tildi.
21       Shaxsiy funktsiyalar
Funktsiyalar   sukut   bo'yicha   tashqi   bo'lib,   tarjima   birligi   deb   ataladigan
bo'limda   ko'rinadi.   Boshqacha   qilib   aytadigan   bo'lsak,   agar   bir   nechta   fayllar
birgalikda   bitta   ob'ekt   fayliga   kompilyatsiya   qilinsa,   ushbu   fayllardan   har   biri
boshqa   fayldan   istalgan   funksiyaga   kirish   imkoniyatiga   ega   bo'ladi.   Funktsiyani
yaratishda   "statik"   kalit   so'zidan   foydalanish   uning   aniqlangan   faylga   ko'rinishini
cheklaydi.Shuning uchun  funktsiyani   maxfiy  saqlash  uchun  bir  necha  qadamlarni
bajarish kerak:
funktsiya manba faylida (.c) yoki mos keladigan sarlavha faylida (.h) statik deb
e'lon qilinishi kerak;
funktsiya ta'rifi alohida manba faylida bo'lishi kerak.
22 Ushbu   misolda   “private_funct.c”   faylida   print_numbers()   statik   funksiyasi
aniqlangan.   Aytgancha,   delete_contact()   funksiyasi   print_numbers()   ni
muvaffaqiyatli   chaqiradi,   chunki   ular   bir   faylda
23 Tegishli   "private_funct.h"   sarlavha   faylida   print_numbers()   statik   funksiya
sifatida e'lon qilingan.
Asosiy   dastur   "main.c"   print_numbers()   ni   bilvosita   delete_contact()   orqali
muvaffaqiyatli chaqiradi, chunki ikkala funksiya ham bitta hujjatda. Biroq, asosiy
dasturdan print_numbers() ni chaqirishga urinish xatolikka olib keladi.
24 Shaxsiy funktsiyalarga kirish
Asosiy   dasturdan   print_numbers()   funksiyasini   chaqirish   mumkin.   Buning
uchun siz goto kalit so'zidan foydalanishingiz yoki ko'rsatgichni asosiy funktsiyaga
shaxsiy   funktsiyaga   o'tkazishingiz   mumkin.   Ikkala   usul   ham   "private_funct.c"
manba faylida yoki to'g'ridan-to'g'ri funktsiyaning o'zida o'zgarishlarni talab qiladi.
Ushbu usullar inkapsulyatsiyani  chetlab o'tmagani uchun uni bekor qilgani uchun
ular ushbu maqola doirasidan tashqarida.
25 XULOSA
Axborot   texnologiyalari   sohasidagi   kadrlarni   tayyorlash   tizimini
takomillashtirish   “Raqamli   O‘zbekiston   —   2030”   strategiyasini   muvaffaqiyatli
amalga   oshirish,   raqamli   texnologiyalarni   rivojlantirish   va   aholining   kundalik
hayotiga   keng   joriy   etishni   ta’minlashning   muhim   shartlaridan   biri   hisoblanadi.
Axborot   texnologiyalari   sohasidagi   kasbga   tayyorlash   va   qayta   tayyorlash
tizimining   samaradorligini   oshirish   bo‘yicha   ko‘rilayotgan   choralar   davlat
organlari   va   tarmoq   tashkilotlarini   malakali   IT-mutaxassislar   bilan   ta’minlash
uchun   mustahkam   zamin   yaratmoqda.   Xususan,   Muhammad   al-Xorazmiy
nomidagi   axborot-kommunikatsiya   texnologiyalari   yo‘nalishiga   oid   fanlarni
chuqurlashtirib   o‘qitishga   ixtisoslashtirilgan   maktab   va   bir   qator   xorijiy
universitetlar   filiallari   faoliyati   yo‘lga   qo‘yilib,   tuman   va   shaharlarda   raqamli
texnologiyalarga   o‘qitish   markazlari   bosqichma-bosqich   tashkil   etilmoqda.
Python   dasturlash   tili   imkoniyatlari   boshlang‘ich   o‘rganuvchilar,   ya’ni   maktab
o‘quvchilari,   talabalar   va   mustaqil   o‘rganuvchilar   tushunishi   uchun   nihoyatda
yengil, tushunarli, kerakli izohlar bilan va sodda xalq tilda izhor qilingan. Python
dasturlash tili samarador yuqori darajadagi ma’lumotlar tuzilmasini hamda oddiy,
ammo   samarador   bo‘lgan   ob’yektga   yo‘naltirilgan   dasturlash   uslublarini   taqdim
etadi. Undan tashqari, bu til o‘rganish uchun oson va shu bilan birga imkoniyatlari
yuqori   bo‘lgan   oz   sonli   dasturlash   tillari   jumlasiga   kiradi   va   shu   bilan   birgalikda
unda   dasturlash   jarayoni   juda   ham   oddiy   amalga   oshiriladi.   Python   dasturlash
tilining   rasmiy   sayti   –   www.python.org   bo‘lib,   uning   muallifi   Niderlandiyadagi
Matematika   va   informatika   ilmiy   adqiqot   institutida   ishlagan   Gvido   van   Rossum
deb   hisoblanadi.   Pythonning   o‘ziga   xosligi   esa   uning   oddiyligi,   o‘rganishga
osonligi, sodda sintaksisga egaligi va dasturlash jarayonini boshlash uchun qulay,
erkin   va   ochiq   kodlik   dasturiy   ta’minotga   egaligidir.   Undan   tashqari,   o‘z
dasturingizni   yozish   davomida   quyi   darajadagi   detallarni,   misol   uchun   xotirani
boshqarishni hisobga olishingizga hech qanday hojat qolmaydi.
Python haqida quyidagi uchta xulosaga kelish mumkin: 
26 1. Python dasturlash tilining keng miqyosda qo‘llanilishi mumkin bo‘lgan uch
asosiy   soha   bor:   veb-dasturlash   (backend   –   vebserver   uchun   ilovalar   yozish),
sun’iy   intellekt   masalalari,   kompyuterda   foydalanuvchi   juda   ko‘p   marta
bajaradigan mayda ishlar (elektron xatlarni jo’natish, fayllarni izlash va bosmalash,
elektron jadvaldan biror-bir ma’lumotlarni ajratib olish va xakozolar). 
2. Python o‘rganish ancha oson bo‘lgan dasturiy tildir. Agar tabiiy tillar bilan
o‘xshatish   qiladigan   bo‘lsak,   biror-bir   tilda   fikrni   yetkazish   uchun   ma’lum   vaqt
so‘zlarni,  tilning  grammatikasi  o‘rganish  kerak  bo‘ladi.  Qandaydir   minimal  bilim
shakllangandan so‘ng, asta-sekin inson o‘z fikrini  ifoda eta boshlaydi. Dasturlash
tillari   bilan   ham   holat   xuddi   shunday.   Biror   dasturlash   tilida   amaliy   foyda
keltiradigan   dastur   yozishni   boshlash   uchun   ma’lum   bilimlar   majmuini   egallash
kerak,   shundan   so‘nggina   dasturlashni   boshlash   mumkin.   Boshqa   dasturlash
tillaridan   farqli   ravishda,   Python   da   amaliy   ahamiyatga   ega   dasturlarni   ishlab
chiqishga   ancha   ertaroq,   hali   tilning   katta   qismini   o‘rganmasdan   turib   ham
kirishish mumkin.
  3.   Python   interpretatsiya   qilinadigan   dasturiy   til.   Dasturlash   tillarini
interpretatsiya   qilinadigan   va   kompilyatsiya   qilinadigan   dasturlash   tillariga
bo‘lishadi.   Aniqroq   aytganda,   agar   dasturlash   tilidagi   dasturni   bajarish
interpretatsiya orqali amalga oshirilsa, bunday tillar  interpretatsiya qilanadigan til
deyiladi. Agar dasturlash tilidagi dasturni bajarish uchun uni avval mashina tiliga
o‘tkazish   talab   qilinsa,   bunday   tillar   kompilyatsiya   qilinadigan   tillar   deyiladi.
Aslini   olganda,   kompyuter   uchun   yozilgan   har   qanday   dastur   interpretatsiya
qilinadi.   Chunki   mashina   kodlaridagi   dastur   kompyuterning   miyasi   bo‘lgan
protsessor   tomonidan   interpretatsiya   qilinadi.   Interpretatsiya   qilinadigan   tillarda
yozilgan dasturlar uchun maxsus – interpretator dastur mavjud. 
27 FOYDALANILADIGAN ADABIYOTLAR:
1. Asosiy   adabiyotlar   1.   Normurodov   Ch.B.   Mengliyev   Sh.A.   PHP7
dasturlash   tili   -   O‘quv   qo‘llanma   –   Termiz:   “Xamidi   xususiy   firmasi”,
2020, 218 bet. 
2. Vasilev   A.   N.   Python   na   primerax.   Prakticheskiy   kurs   po
programmirovaniyu. — SPb. Nauka i Texnika, 2016. — 432 st. 
3.   Dj. Forse, P. Bisseks, U. CHan - Django. Razrabotka veb-prilojeniy na
Python, Simvol-Plyus , 2010. – 456 st 
4.   Eric   Matthes   Python   Crash   Course,   a   hands-on,   Project-Based,
Introduction to  Programming, ISBN-13:  978-1-59327-603-4,  2016, 562
p.
5. “web va web dasturlash” dan qo’llanma
6. Uz.Vikipedia.org  - electron ensiklopediasi
7. Google.com – qidiruv tizimi
8. “webdasturlash”, Straustrup
9. “ subline text” programma
10. “ Html : Книга рецептов”, Вячеслав Ермолаев, Тарас Сорока 
11. “ yii 2  в задачах и примерах”, Никита Культин  
12. www.uz     – milliy qidiruv tizimi
28 ILOVALAR
from uuid import uuid4
class Avto:
"""Avtomobil klassi"""
def __init__(self,make,model,rang,yil,narh,km=0):
"""Avtomobilning xususiyatlari"""
self.make = make
self.model = model
self.rang = rang
self.yil = yil
self.narh = narh
self.__km = km
self.__id = uuid4()
def get_km(self):
return self.__km
def get_id(self):
return self.__id
#!/usr/bin/python3
class   Phone :
     number =  "111-11-11"
     def   print_number ( self ):
         print (  "Phone number is: " , self.number )
my_phone = Phone()
my_phone.print_number()
input (  "Press Enter to exit"
29 #!/usr/bin/python3
class   Phone :
     username =  "Kate"                  # public variable
     __how_many_times_turned_on =  0     # private variable
     def   call ( self ):                    # public method
         print (  "Ring-ring!"  )
     def   __turn_on ( self ):               # private method
         self.__how_many_times_turned_on +=  1  
         print (  "Times was turned on: " , 
self.__how_many_times_turned_on )
my_phone = Phone()
my_phone.call()
print (  "The username is " , my_phone.username )
# my_phone.turn_on()
# my_phone.__turn_on()
# print( “Turned on: “, my_phone.__how_many_times_turned_on)
# print( “Turned on: “, my_phone.how_many_times_turned_on)
# will produce an error
input (  "Press Enter to exit"  )
#!/usr/bin/python3
class   Phone :
     username =  "Kate"                  # public variable
     __serial_number =  "11.22.33"       # private variable
     __how_many_times_turned_on =  0     # private variable
     def   call ( self ):                    # public method
         print (  "Ring-ring!"  )
30      def   __turn_on ( self ):               # private method
         self.__how_many_times_turned_on +=  1  
         print (  "Times was turned on: " , 
self.__how_many_times_turned_on )
my_phone = Phone()
my_phone._Phone__turn_on()
my_phone._Phone__serial_number =  "44.55.66"
print (  "New serial number is " , my_phone._Phone__serial_number )
input (  "Press Enter to exit"  )
31

Python dasturlash tilida inkapsulyatsiya

Купить
  • Похожие документы

  • Axborot resurs markazi uchun avtomatlashtirilgan tizim kurs ishi
  • Talabalar bilimini baholovchi dastur yaratish
  • Access dasturi yordamida “dorixona” ma‘lumotlar bazasini yaratish
  • Agile va Scrum metodologiyalari dasturiy ta'minot ishlab chiqish
  • Tashkilot miqyosida masofadan muloqot qilish.

Подтвердить покупку

Да Нет

© Copyright 2019-2025. Created by Foreach.Soft

  • Инструкция по снятию с баланса
  • Контакты
  • Инструкция использования сайта
  • Инструкция загрузки документов
  • O'zbekcha