Rasm. Thisni ishlatish bilan kanstruktorlarni chaqiruv zanjirlarini ko‘rinishi




Download 6,33 Mb.
Pdf ko'rish
bet163/194
Sana20.02.2024
Hajmi6,33 Mb.
#159185
1   ...   159   160   161   162   163   164   165   166   ...   194
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 6,33 Mb.
1   ...   159   160   161   162   163   164   165   166   ...   194




Download 6,33 Mb.
Pdf ko'rish

Bosh sahifa
Aloqalar

    Bosh sahifa



  Rasm. Thisni ishlatish bilan kanstruktorlarni chaqiruv zanjirlarini ko‘rinishi

Download 6,33 Mb.
Pdf ko'rish