1-ma’ruza: Dasturlash tillari faniga kirish. Obyektga yо‘naltirilgan programmalash. Obyektga yo’naltirilgan loyihalash. Reja


Private, protected va public kalit so’zlari bilan sinf e’lon qilish



Download 248,13 Kb.
bet9/10
Sana31.08.2021
Hajmi248,13 Kb.
#160513
1   2   3   4   5   6   7   8   9   10
Bog'liq
1-Maruza

Private, protected va public kalit so’zlari bilan sinf e’lon qilish. Sinf ixtiyoriy sondagi berilganlar va metodlarni о„z ichiga olishi mumkin. OYP mohiyati barcha berilganlarni sinfda “yashiringan” (inkapsulyatsiya qilingan) holda bо„lishini taqoza etadi. Buning sababi – maydonlar qiymatini tо„g„ridan-tо„g„ri о„zgartirish xatoliklarni yuzaga keltirishi mumkin. Masalan, sana uchun notо„g„ri sana - 30 fevral kiritilishi mumkin. Agar maydon qiymatlari sinf metodlar ishlatilganda qiymatlar tekshirilishi mumkin, ya‟ni ma‟lum bir ma‟noda qiymatlar kiritilishida nazorat о„rnatiladi. Inkapsulyatsiyaning yana bir afzalligi shundaki, sinfning tashqi tavsifiga ta‟sir qilmagan holda uning ichki tuzilishiga о„zgartirishlar kiritishimiz mumkin. Boshqacha aytganda, nisbatan oson yо„l bilan sinfning navbatdagi modifikatsiyasini yaratiladi. Inkapsulyatsiya g„oyasining quyidagi о„xshatish orqali kо„rsatish mumkin: sinf – bu kichkina kо„rinadigan qismga ega bо„lgan «qora quti» deb qaraladi. Kо„rinadigan qism sinf interfeysi deyiladi va programmaning boshqa qismlaridan sinf maydon va metodlariga murojaat qilish va undan foydalanish imkonini beradi.

Object Pascal tilida sinfga tashkil qiluvchilariga murojaatning uch xil imkoniyati mavjud:



  • private kalit sо„zi bilan sinf e‟lon qilingan moduldan tashqarida murojaat qilish mumkin bо„lmagan maydon va metodlar aniqlanadi;

  • public kalit sо„zi orqali programmaning ixtiyoriy qismdan murojaat qilish mumkin bо„lgan maydon va metodlar tavsiflanadi;

  • protected kalit sо„zi bilan qisman murojaat qilishga ruxsat bо„lgan maydon va metodlar aniqlanadi. Ularga faqat shu sinf va undan voris sinflar metodlari murojaat qilishi mumkin.

OYP ma‟qul kо„rinishi shundaki sinfning barcha maydonlari private kategoriyasiga tegishli, metodlar esa public bо„limida aniqlangan bо„lishini talab qiladi. Lekin bu qoidalar qat‟iy emas. Metodlar ham private, protected xususiyati bilan aniqlangan bо„lishi mumkin, agar ular faqat shu sinf ichida ishlatiladigan bо„lsa.

Misol sifatida TSana sinfini aniqlaylik:

Type

TSana = Class



Private

Kun, Oy,Yil : Integer;

Public

Procedure Joriy_Sana(k,o,y :Integer); // Joriy sanani kiritish

Function Kabisa: Boolean; // Yilning kabisa yili ekanligi aniqlash

Function Sana_Satr : String; // Sanani satr kо„rinishiga о„tkazish

Procedure Ertangi_Sana; // Sanani ertagi sanaga о„tkazish End;

… implementation

Procedure TSana.Joriy_Sana(k,o,y:Integer);

Begin


Kun :=k; Oy :=o; Yil :=y End;

Function TSana.Kabisa: Boolean;

Begin

Result := (Yil mod 4=0) and (Yil mod 100<>0) Or (Yil mod 100=0) and ((Yil mod 400=0);



End;

Function TSana.Sana_Satr : String;

Begin

Result := IntToStr(Kun)+‟.‟ +IntToStr(Oy)+‟.‟+IntToStr(Yil);



End;

Procedure TSana.Ertangi_Sana;

Begin

...


end;

Sinf e‟lonidagi о„zgaruvchilar private bо„limida aniqlangan, shu sababli ularga murojaat qilishning faqat sinf metodlari orqali amalga oshirish mumkin.

Sana bilan bog„liq sinfni aniqlashda imkon qadar Delphi standart vositalaridan foydalangan ma‟qul. Xususan, TSana sinfida sana uchun TDateTime turini ishlatish maqsadga muvofiq.

Type


TSana = Class

Private


Fsana: TDateTime;

Public


Procedure Joriy_Sana(k,o,y :Integer);

Function Kabisa: Boolean;

Function Sana_Satr : String;

Procedure Ertangi_Sana;

End;

Procedure TSana.Joriy_Sana(k,o,y: Integer);



Begin

FSana := EnCodeDate(y,o,k);

End;

E‟tibor berilgan bо„lsa, о„zgarishlar faqat sinfning ichida amalga oshirildi, undan foydalanuvchi uchun tashqaridan hech bir о„zgarish rо„y bermadi.



Inkapsulyatsiyaning bosh g„oyasi – programma tomonidan ishlatiladigan globoal о„zgaruvchilarni kamaytirishdir. Global о„zgaruvchiga programmaning ixtiyoriy joyidan murojaat qilish mumkin. Shu sababli global о„zgaruvchida rо„y bergan о„zgarish butun programmaga ta‟sir qiladi.

Faraz qilaylik, programma bir nechta formadan tashkil topgan bо„lsin. Birorta о„zgaruvchiga barcha formalardan murojaat qilish mumkin bо„lishi uchun uni birorta modulning interface bо„limida quyidagicha e‟lon qilish zarur:

var

Form1 : TForm1;



VMurojaat : Integer;

E‟lonning bu kо„rinishida VMurojaat о„zgaruvchisi formaning konkret nusxasi bilan emas, balki butun bir programma bilan bog„liq bо„ladi. Bir turdagi ikkita forma aniqlansa (var Form1, Form12 : TForm1), ular bu о„zgaruvchilarni birgalikda ishlatishi mumkin. Agar har bir forma о„zgaruvchining о„z nusxasiga ega bо„lishi zarur bо„lsa, uning e‟lonini sinf ichiga kiritish zarur bо„ladi:

Type

TForm1 = Class(TForm)



Public

VMurojaat : Integer;

End;

Bu e‟lon ham ma‟lum bir muammoni keltirib chiqaridi – о„zgaruvchi public deb e‟lon qilinganligi uchun bu о„zgaruvchini ishlatadigan kodni о„zgartirmasdan turib sinfning ichki tuzilishiga о„zgartirish kiritib bо„lmaydi. Masalan, VMurojaat о„zgaruvchisga formaga nechta marta murojaat qilingaligini aniqlash uchun murojaat qilish zarur bо„ladigan bо„lsa uni private bо„limida e‟lon qilib, uning qiymatini о„qiydigan metod yaratish kerak bо„ladi:



Type

TForm1 = Class (TForm)

Public

Function Murojaat_Soni: Integer;

Private

VMurojaat : Integer;

End;

Function TForm1.Murojaat_Soni : Integer;



Begin

Result := VMurojaat;



End;


Download 248,13 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©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