Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr


  Rasm. Thisni ishlatish bilan kanstruktorlarni chaqiruv zanjirlarini ko‘rinishi



Download 5,36 Mb.
Pdf ko'rish
bet288/335
Sana02.08.2021
Hajmi5,36 Mb.
#136132
1   ...   284   285   286   287   288   289   290   291   ...   335
Bog'liq
Dasturlash asoslari(O'zbekcha)

5.2. 
Rasm. Thisni ishlatish bilan kanstruktorlarni chaqiruv zanjirlarini ko‘rinishi. 
This  kalit  so‘zininig  boshqa  qo‘llanuvi  sinfi  loyihalashtirishda  tashkil  topgan  u 
konstruktorlarni ishlashi yoki konstuktorlangan zanjirlarini qurulishi nomi ostida metodni qo‘llaydi. 
Bu  loyihalashtirish  shabloni  klass  bo‘lmaganda  foydalidir,  u  bir  nechta  kanstruktorlarni  aniqlaydi. 
Quruvchi  argumentlarni  kanstruktorlari  har  xil  ish  qoidalariga  bo‘ysunishni  tekshirishadi  shunda, 
konstruktorlar to‘plamini ichidagi aniqlikka tekshiruvini o‘tkazish yuzaga keladi. Motorcycle sinfini 
keyingi o‘zgartirilgan qayta yuklanuvchini ko‘tib chiqamiz. 
class
 
Motorcycle
  
{  
  
public
 
int
 driverIntensity;  
  
public
 
string
 driverName;  
  
public
 Motorcycle() { }  
  
// Redundent constructor logic! 
 
  
public
 Motorcycle(
int
 intensity)  
  {  
    
if
 (intensity > 10)  


Dasturlash tillari va axborot-kommunikatsiya texnologiyalari                                                              1-semestr
 
 
293 
 
    {  
      intensity = 10;  
    }  
    driverIntensity = intensity;  
  }  
  
public
 Motorcycle(
int
 intensity, 
string
 name)  
  {  
    
if
 (intensity > 10)  
    {  
      intensity = 10;  
    }  
    driverIntensity = intensity;  
    driverName = name;  
  }  
...  

Bu  yerda  har  bir  konstruktorda  tekshiruv  ishlab  chiqariladi,  unda  quvvat  darajasi  10-dan 
oshmaydi buni  hammasi to‘g‘ri va  yaxshi bo‘lishiga qaramasdan ikkita konstruktorda ortiqcha kod 
paydo bo‘ladi. Bu idealdan ancha yiroq, chunki kodni bir nechta joyda o‘zgartirish kerak, qoidalarni 
o‘zgartirish  hamda  yuzaga  kelgan  holatni  to‘g‘irlash  usullaridan  biri  Motorcycle  sinfdagi  usulni 
aniqlashdan tashkil topgan, u kiruvchi argumentlarni tekshiruvini bajaradi. Agar har bir konstruktor 
bu  usulni  maydonlarga  qiymatlarini  o‘zlashtirishidan  oldin  chaqirilsa.  Biroq  bunday  yondashuv 
kodni muzlatishga ruxsat beradi  bunda biznes qoidalarini o‘zgartirishda  yangilashga to‘g‘ri keladi, 
endi boshqa ortiqchalik paydo bo‘ladi.  
class
 
Motorcycle
  
{  
  
public
 
int
 driverIntensity;  
  
public
 
string
 driverName;  
  
// Constructors. 
 
  
public
 Motorcycle() { }  
  
public
 Motorcycle(
int
 intensity)  
  {  
    SetIntensity(intensity);  
  }  
  
public
 Motorcycle(
int
 intensity, 
string
 name)  
  {  
    SetIntensity(intensity);  
    driverName = name;  
  }  
  
public
 
void
 SetIntensity(
int
 intensity)  
  {  
    
if
 (intensity > 10)  
    {  
      intensity = 10;  
    }  
    driverIntensity = intensity;  
  }  
...  
}  


Dasturlash tillari va axborot-kommunikatsiya texnologiyalari                                                              1-semestr
 
 
294 
 
Yana  tushunarli  yondashuv  konstruktorni  belgilashni  nazarda  tutadi.  U  argumentlarni 
maksimal  qiymatini  qabul  qiladi  “master  constructor”  sifatida  qolgan  konstruktorlar  this  kalit 
so‘zini  ishlatishlari  mumkin  uni  asosiy  konstruktorga  kiruvchi  argumentlarini  uzatish  uchun  va 
zaruratta  xohlaganda  ham  qo‘shimcha  parametrlarni  yetkazib  berish  uchun  ishlatiladi.  Natijada 
faqatgina  butun  sinf  uchun  konstruktorni  yagonaligini  quvvab-quvatlash  haqida  xavotir  olishga 
to‘g‘ri keladi, o‘sha vaqtta qolgan konstruktorlardek asosdan bo‘shligicha qoladi. 
Quyida  Motorcycle  sinfini  yakuniy  amalga  oshirilishi  keltirilgan.  Konstruktorlarni  zanjirga 
bog‘lashda e’tibor bering this kalit so‘zi jismdan tashqarida joylashgan.  
class
 
Motorcycle
  
{  
  
public
 
int
 driverIntensity;  
  
public
 
string
 driverName;  
  
// Constructor chaining. 
 
  
public
 Motorcycle() {}  
  
public
 Motorcycle(
int
 intensity)  
    : 
this
(intensity, 
""
) {}  
  
public
 Motorcycle(
string
 name)  
    : 
this
(0, name) {}  
  
// This is the 'master' constructor that does all the real work. 
 
  
public
 Motorcycle(
int
 intensity, 
string
 name)  
  {  
    
if
 (intensity > 10)  
    {  
      intensity = 10;  
    }  
    driverIntensity = intensity;  
    driverName = name;  
  }  
...  

This kalit so‘zini – konstruktorlar chaqiruvlarini zanjirga  bog‘lashda  ishlatish unchalik  shart emas. 
Biruq bunday metodni qo‘llash bizga yanada qisqa kodni aniqlash imkonini beradi.  
Bunday  texnika  yordamida  masalalarni  yechimini  qisqartirish  mumkin,  chunki  real  ish  yagona 
konstruktorga delegatsiyalanadi, o‘sha vaqtta qolganlaridek unga oddiygina javobgarlikni beradi.      
 

Download 5,36 Mb.

Do'stlaringiz bilan baham:
1   ...   284   285   286   287   288   289   290   291   ...   335




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