Sinflar. Inkapsulyatsiya Pythonda obyektga yo’naltirilgan dasturlash tamoyilini ham ishlatish mumkin bo’lib



Download 369,64 Kb.
Pdf ko'rish
Sana21.04.2022
Hajmi369,64 Kb.
#568638
Bog'liq
Inkapsulatsiya



Sinflar. Inkapsulyatsiya 
Pythonda obyektga yo’naltirilgan dasturlash tamoyilini ham ishlatish mumkin bo’lib, 
bu o’z navbatida dastur kompanentlarini sinflar ko’rinishida ifodalash imkonini beradi.
Sinf obyektning shabloni yoki formal tavsifi hisoblanadi. Obyekt esa ushbu sinfning 
haqiqiy shaklangan nusxasi (экземпляри) hisoblanadi. Quyidagicha tatbiq qilish mumkin: 
hammada inson to’g’risida qandaydir tassavvur mavjud – ikkita qo’li, ikkita oyog’i, boshi, 
oshqozoni, asab tizimi va boshqalari mavjud. Demak, shablon bor – bu shabloni sinf deb 
atash mumkin. Haqiqatdan ham, mavjud bo’lgan odamni bu sinfning obyekti deyish 
mumkin.
Kod nuqtai nazaridan sinf – funksiyalar va o’zgaruvchilar to’plamini ma’lum bir 
vazifalarni bajarish uchun o’zida birlashtiradi. Sinfning funksiyalari odatda metodlar deb 
ataladi. Ular sinfning xususiyatlarini ifodalaydi. Sinfning o’zgaruvchilari esa atributlar 
deb nomlanadi – ular singning holatini saqlaydi.
Sinf 
class
kalit so’zi bilan aniqlanadi:
Sinf obyektini yaratish uchun quydagi sintaksis ishlatiladi:
Masalan, insonni ta’riflaydigan 
Person
sinfini aniqlaymiz:
Sinf obyektlarini yaratish uchun konstruktorlardan foydalaniladi. Yuqorida aniqlangan 
Person
sinfida esa kelishuv bo’yicha konstruktordan foydalandik.
Shu bilan birga, sinf ichida 
__init__
deb nomlanuvchi maxsus metod yordamida 
kostruktorlarni oshkor ravishda aniqlash ham mumkin. Misol uchun, 
Person
sinfiga 
konstruktor qo’shamiz.


Obyekt bilan ishlash tugagandan so’ng 
del
operatorini ishlatish orqali uni xotiradan 
o’chirib tashlash mumkin:
Shuni eslatish joizki, bu ishni qilish shart emas, ya’ni, skrip ishlashi tugashi bilan ham 
obyektlar xotiradan o’chiriladi.
Bundan tashqari, 
__del__
ichki metodini aniqlash orqali sinfdagi destruktorni qayta 
aniqlash mumkin. Bu metod 
del
operatori ishlaganda yoki obyektlar xotiradan avtomatik 
o’chganda ishlaydi. Masalan:
Qoidaga ko’ra, sinflar alohida modullarda joylashadi va asosiy skriptda ular import 
qilinadi. Aytaylik bitta loyihada ikkita fayli mavjud: 
main.py 
(dasturning asosiy skripti) 
va 
classes.py 
(sinflar aniqlangan skript).
classes.py
faylida ikkita sinf aniqlaymiz:


Sinflarga bog’lanish ham moduldan funksiyani importi kabi amalga oshiriladi. Yoki to’liq 
modulga ham bog’lanish mumkin:
Kelishuv bo’yicha sinflardagi atributlar umumiy ruxsatga ega bo’ladi, ya’ni, dasturning 
ixtiyoriy joyidan obyektning atributlariga ruxsat olish va ularni o’zgartirish mumkin. 
Masalan:
Sinf atributlariga inkapsulyatsiya yordamida ko’rinmas yoki yopiq va chegaralangan 
murojaatni maxsus metodlar orqali o’rnatish mumkin. Odatda ular, xususiyat deb ham 
ataladi.


Yuqorida qanday qilib xususiyatlarni yaratishni ko’rib chiqdik. Pythonda ya’nada qulayroq 
usul mavjud. 
@
belgisi bilan boshlanuvchi annotatsiyadan foydalanish orqali bu usul 
amalga oshiriladi.
Getter-xususiyat yaratish uchun
@property
annototsiyasini qo’yish lozim. Setter-
xususiyat qo’yish uchun esa @
setter_xususiyatnomi.setter
annotosiyasni o’rnatish lozim.


Topshiriqlar: 
1. 16 lik sanoq sistemasida berilgan sonni 4, 7 va 12 lik sanoq sistemasidagi ko‘rinishini chop qiluvchi 
SANOQ_SISTEMA sinfi yaratilsin. 
2. 22 lik sanoq sistemalarida berilgan kompleks sonlar ustida arifmetik amallarni bajaruvchi 
KOMPLEKS sinfi yaratilsin. 
3. Berilgan natural n(15 lik sanoq sistemasidagi) soni uchun n*n o‘lchamidagi A(raqamlari barchasi 9 
lik sanoq sistemasida) matritsani maksimal va minimal elementini topadigan, uning bosh diagonalga 
nisbatan simmetrik ekanligini aniqlaydigan, transponerlangan ko‘rinishini chop etuvchi funksiya-
a’zolarini o‘z ichiga oluvchi MATRITSA sinfi yaratilsin. 
4. Uch o‘lchamli fazoda koordinatalari bilan berilgan ikkita vektorni tavsiflovchi VEKTOR3D sinfi 
aniqlansin. Sinfda vektorlarni qo‘shish va ayirish orqali yangi vektorlar hosil qiluvchi, ikkita 
vektorning skalyar ko‘paytmasini, vektor uzunligini va ikkita vektorlar orasidagi burchak kosinusini 
hisoblovchi funksiya-a’zolalar aniqlansin(Barcha sonlar 15lik sanoq sistemasida). 
5. Ko‘phad darajasi va koeffisientlari bilan berilgan bitta o‘zgauvchili ko‘phadni tavsiflovchi 
KO_PHAD sinfi yaratilsin. Sinfda ko‘phad berilgan argumentdagi qiymatini hisoblovchi, 
ko‘rsatilgan tartibdagi hosilasini topadigan funksiya-a`zolar aniqlansin.(Ko’phadning koefisentlari 
14 lik sanoq sistemasi va darajalari 15 lik sanoq sistemasida) 
6. Uy kutubxonasini tavsiflovchi UY_KUTUBXONASI sinfi aniqlansin. Unda ixtiyoriy 
sondagi(sonlar 12 lik sanoq sistemasida) kitoblar bilan ishlash, qandaydir alomati bo’yicha kitobni 
izlash (muallif yoki yil bo‘yicha), yangi kitobni qo‘shish va o‘chirish imkoniyatlari bo‘lsin. 
7. Yon daftarni o‘zida aks ettiruvchi YON_DAFTAR sinfi yartilsin. Unda ixtiyoriy sondagi yozuvlar 
bilan ishlash, qandaydir alomati boyocha yozuvni izlash (familiya, tug‘ilgan yili yoki telefon nomeri 
bo‘yicha), yangi yozuvni qo‘shish va o‘chirish imkoniyatlari bo‘lsin(Barcha sonlar 13 lik sanoq 
sistemasida deb olinsin). 
8. Talabalar guruhini tavsivlovchi TALABA_GURUHI sinfi yaratilsin. Unda ixtiyoriy sondagi 
talalbalar bilan ishlash, qandaydir alomati boyocha talabani izlash (familiya, tug‘ilgan yili yoki 


telefon nomeri bo‘yicha), yangi yozuvni qo‘shish, o‘chirish va tartiblash imkoniyatlari 
bo‘lsin(Barcha sonlar 12 lik sanoq sistemasida deb olinsin). 
9. 
Hayvonlarning o‘zaro raqobat qiluvchi ikkita turining n - yildagi bir-birining 
n
n
y
x
va
o‘lchamlariga 
(sonlariga) o‘zaro ta’siri quyidagi sistema bilan tavsiflanadi:
.
y
2
x
y
y
x
2
x
n
n
n
n
+

=

=
+
+
1
n
1
n
,
Boshlang‘ich yildagi sonlari - 
0
0
y
x
va
berilganda birorta turning to‘la qirilib ketguncha bo‘lgan 
vaqt oralig‘idagi turlar sonidagi o‘zgarishlar dinamikasini chop etuvchi POPULYATSIYA sinfi 
aniqlansin(Barcha sonlar 16 lik sanoq sistemasida deb olinsin). 
10. Stek ustidagi amallarni bajaruvchi STEK sinfi aniqlansin. Ushbu sinfdan labirintdan chiqish 
masalasini yechishda foydalanilsin. Labirint kvadratlardan tashkil topgan matritsa ko‘rinishida 
beriladi. Har bir kvadrat ochiq yoki yopiq bo‘ladi. Yopiq kvadratga kirish mumkin emas. Agar 
kvadrat ochiq bo‘lsa uning yon tomonidan kirish mumkin (burchagidan kirish mumkin emas). Har 
bir kvadrat uning matritsadagi koordinatalari bilan beriladi. Labirintdan chiqich amalga oshirilganda 
topilgan yo‘l chop qilinadi (kvadratlar koordinatalari juftliklarining ketma-ketligi) (Barcha sonlar 15 
lik sanoq sistemasida deb olinsin). 
11. YUGURUVCHI sinfi yugurish musobaqasi natijalari haqidagi initsiallari>, va  berilgan-a’zolarni o‘z 
ichiga oladi. Berilgan n o‘lchamidagi YUGURUVCHI sinf obe’ktlari massivi yaratilsin va quyidagi 
amallar bajarilsin: 
a) massiv yuguruvchilarni masofani bosib o‘tgan vaqtining kamayishi bo‘yicha tartiblansin; 
b) jamoa a’zolarining o‘rtacha yugurish vaqti bo‘yicha yuqori natija ko‘rsatgan uchta jamoa nomlari 
chop etilsin(Barcha sonlar 11 lik sanoq sistemasida deb olinsin). 
12. FUTBOL sinfi jamoasining o‘yin natijalari haqidagi ,,soni>,,va  berilgan-a’zolarni 
o‘z ichiga oladi.
Berilgan n uchun FUTBOL sinfi obyektlari massivi hosil qilinsin va to‘plagan ochkolari bo‘yicha 
jamolar jadvali chop etilsin. Bunda quyidagilarga e’tibor berilsin: agar ikkita jamoaning ochkolari 
teng bo‘lsa, kiritilgan va o‘tkazib yuborilgan to‘plar farqi qaraladi. Farqi katta bo‘lgan jamoa uyqori 
qatorga o‘tadi, aks holda qur’a tashlanadi va shunga qarab jamoa o‘rni aniqlanadi(Barcha sonlar 15 
lik sanoq sistemasida deb olinsin). 
13. AVTOMOBIL sinfida avtomobil va uning egasi haqidagi initsiallari>,,berilgan-a’zolari aniqlangan. Berilgan n 
o‘lchamidagi AVTOMOBIL sinfi obyektlari massivi yaratilsin va quyidagi amallar bajarilsin: 
a) massiv avtomobil egalarining familiyalarini alfavit bo‘yicha joylashuviga mos tartiblansin; 
b) kiritilgan avtomobil rusumidagi avtomobil egalari haqidagi ma’lumot chop etilsin; 
d) kiritilgan avtomobil rusumi va nomeri bo‘yicha avtomobil egasining familiyasi chop etilsin. 
(Barcha sonlar 14 lik sanoq sistemasida deb olinsin) 
14. Nuqta bilan tugaydigan matn berilgan. Uning formula ekanligi quyidagi qoidalar asosida tekshirilsin. 
Natija ijobiy bo‘lgan holda formua qiymati hisoblansin: 
::=|(
::= +| – | * 
::=0|1|2|3|4|5|6|7|8|9
Masalan, “5” formula qiymati 5, ”((2–4)*6)“ formula qiymati 12. (Barcha sonlar 11 lik sanoq 
sistemasida deb olinsin) 


16. TO_RTBURCHAK sinfi yaratilsin. Uning tarkibida to‘rtburchak tomonlari- a,b,c,d kiritilganda 
uning mavjudligini, agar mavjud bo‘lsa to‘rburchakning yuzasini, perimetri va turini 
(to‘g‘riburchakli, kvadrat, parallellogram) aniqlovchi funksiya-a’zolar tuzilsin. (Barcha sonlar 15 lik 
sanoq sistemasida deb olinsin) 
17. Butun sonlar juftligi bilan berilgan ratsional sonlar ustida amal bajaruvchi RATSIONAL sinfi 
aniqlansin. Sinf obyektlari massivini yaratilsin va sinfning do‘st funksiyalari yordamida quyidagi 
masalalar yechilsin:
a)
berilgan a va b ratsional sonlarning tengligi tekshirilsin; 
b)
berilgan a va b ratsional sonlar yig‘indisi r ratsionalga berilsin; 
d)
berilgan r ratsional sonni qisqartirib bo‘lmaydigan ko‘rinishga keltirilsin; 
massiv ko‘rinishida berilgan ratsional sonlar ichida eng kattasi topilsin. 
(Barcha sonlar 13 lik sanoq sistemasida deb olinsin) 
18. O‘zaro ekvivalent formullardan foydalangan holda berilgan mantiqiy ifodani soddalashtirish amalini 
bajaradigan MANTIQIY_IFODA sinfi yaratilsin. Quyida o‘zaro ekvivalent formulalar ro‘yxati 
keltirilgan. (Barcha sonlar 18 lik sanoq sistemasida deb olinsin) 
1) llx 

x; 2) x 

lx 

1; 3) x 

1

x; 
4) x 



x; 5) x 

( x

y) 

x; 6) x 

(x

y) 

x;
7) x 



x; 8) x 



x; 9) x 

lx 

0;
10) l(x 

y) 

lx 

ly ; 11) l(x 

y) 

lx 

ly ; 12) x 

y



x; 
13) x 





x; 14) (x 

y)





(y

z); 15) (x 

y)





(y

z);
16) x 

(y 

z) 

(x 

y) 

(x

z); 17) x 

(y 

z)

(x 

y) 

(x

z); 18) ( x) 

x. 
19 Berilgan sonlar ustida arifmetik amallarni (‘+’,’-‘,’*’,’/’) bajaruvchi KALK_ARIFMETIKA sinfi 
aniqlansin. (Barcha sonlar 17 lik sanoq sistemasida deb olinsin) 
20 Berilgan natural n o‘lchamidagi 
(
)
n
j
,
i
1
a
ij


haqiqiy elementli kvadrat matritsa uchun xotiradan 
joy ajratich, qiymatlarini o‘qish va chop qilish amallarini bajaradigan MATRITSA sinfi yaratilsin. 
Matritsa determentanti quyidagicha hisoblanadi: 
k
1
n
1
k
k
1
n
A
a

=
=


Bu yerda 
( )
k
1
k
1
k
1
M
1
A
+

=

k
1
M
- minor bo‘lib, u 
ij
a
matritsaning 1-satri va k-ustunini o‘chirishdan hosil 
bo‘ladigan (n-1) - tartibli matritsaning determenanti. (Barcha sonlar 16 lik sanoq sistemasida deb 
olinsin) 
21 n o‘lchamli fazoda koordinatalari bilan berilgan ikkita vektorni tavsiflovchi, ya’ni ularni xotirada 
saqlash, qiymatlarini o‘qish va chop qilish amalini bajaruvchi VEKTOR_XY sinfi aniqlansin. 
(Barcha sonlar 15 lik sanoq sistemasida deb olinsin) 
22 Natural sonlarning ikkita to‘plamini yaratish, chop qilish amallarinin o‘z ichiga olgan TUPLAM_AB 
sinfi yaratilsin. (Barcha sonlar 13 lik sanoq sistemasida deb olinsin) 
23 Kitobning nomi, muallifi, nashriyoti nomi va chop qlingan yili bo‘yicha berilganlarni xotirada 
saqlash, qiymat o‘qish va chop qilish amalini bajaruvchi KITOB sinfi yaratilsin. (Barcha sonlar 11 
lik sanoq sistemasida deb olinsin) 
24 Berilgan satrni saqlash va chop qilish amallarini o‘z ichiga olgan SATR sinfi aniqlansin. (Barcha 
sonlar 14 lik sanoq sistemasida deb olinsin) 

Download 369,64 Kb.

Do'stlaringiz bilan baham:




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish