Reja: Dasturlash tillari fanining mazmuni, maqsadi va vazifalari


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



Download 0,5 Mb.
Pdf ko'rish
bet10/11
Sana11.09.2021
Hajmi0,5 Mb.
#171301
1   2   3   4   5   6   7   8   9   10   11
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; 



 

10 


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 



 

11 


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 0,5 Mb.

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




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