Олий таълим ўқув режаларидаги фанларга



Download 4,03 Mb.
bet56/102
Sana23.02.2022
Hajmi4,03 Mb.
#136190
1   ...   52   53   54   55   56   57   58   59   ...   102
Bog'liq
Dasturlash asoslari majmua

18.3. Конструкторлар


Конструктор объектларни инициализация қилиш учун мўлжалланган бўлиб, синф объектини new хизматчи сўзи ёрдамида ташкил қилинганда тўғридан – тўғри ишга тушади. Конструктор номи синф номи билан устма-уст тушади. Қуйида консруткорларнинг ҳусусиятлари баён этилган:

  • Конструктор қиймат қайтармайди.

  • Синф бир нечта конструкторлардан иборат бўлиши мумкин.

  • Агар дастурчи бирорта хам конструктор кўрсатмаган ёки қандайдир майдонлар инициализация қилинмаган бўлса, қийматли майдонларга ноль, ҳавола типидаги майдонларга null қиймати берилади.

  • Параметрларсиўз чақириладиган конструкторларни тўғридан – тўғри конструкторлар деб аталади.

Биз хозиргача класларни тавсифлашда синф майдонларига бошланғич қийматлар ўзлаштирдик. Бу холат фақат синфнинг барча экземплярларининг айрим майдонларидаги бошланғич маълумотлар ибр хил бўлганда қулай ҳисобланади.Агар объектларни яратишда майдонга турли қийматларни ўзлаштиришга тўғри келса, бу ишни конструкторда бажарган маъқул. 18.3- листингда Demo синфига конструктор қўшилган, майдонлар эса ёпиқ.
using System;
namespace ConsoleApplication1
{
class Demo
{
public Demo( int a, double y ) // параметрли конструктор
{
this.a = a;
this.y = y;
}

public double Gety() // y майдондаги маълумотни ўқиш


{
return y;
}

int a;
double y;


}
class Class1
{ static void Main()
{
Demo a = new Demo( 300, 0.002 ); // конструкторни чақириш
Console.WriteLine( a.Gety() ); // натижа: 0,002
Demo b = new Demo( 1, 5.71 ); // конструкторни чақириш
Console.WriteLine( b.Gety() ); // натижа: 5,71
}
}
}
18.3-листинг. Конструкторли синф

Кўпинча, объектларни турли усулалр билан инициализация қилиш учун синфда бир нечта конструкторларни ташкил қилиш қулай бўлади. Барча конструкторлар турли сигнатураларга эга бўлишлари шарт.


Агар конструкторлардан бири қандйадир харакатларни амалга ошираётган, бошқаси эса яна нимадир қилаётган бўлса, у холда би ринчи конструкторни иккинчисида чақириш мақсадга мувофиқ бўлади. бунинг учун this хизматчи сўзи бошқача кўринишда ёзилади, масалан:
class Demo
{
public Demo( int a ) // 1-конструктор
{
this.a = a;
}
public Demo( int a, double y ) : this( a ) // 1-конструкторни чақириш
{
this.y = y;
}
...
}
Икки нуқта белгисидан кейин келган конструкция инициализатор деб аталади.
Маълумки, барча объектлар умумий авлод — object синфига эга эди. Агар иҳтиёрий синф конструкторида инициализатор кўрсатилмаган бўлса, у холда ўз аждоди конструкторини чақиради.
Хозиргача "оддий" конструкторлар ёки конструктор экземплярлари ҳақида фикр юритдик. Ндан ташқари конструкторларнинг яна бир типи — статик конструкторлар ёки синф конструкторлари хам мавжуд.
Экземпляр конструктори экземпляр маълумотларини, синф конструкторлари эса — синф маълумотларини инициализация қилади .
Статик конструктор параметрларга эга бўлмайди ва уларни ошкор холда чақириб хам бўлмайди. Конструкторни бажариш вақти келганини систпманиг ўзи ҳал қилади.
Айрим синфлар фақат статик маълумотлардан иборат бўлади ва демак, бундай объектларнинг экземплярларини яратиш маънога эга эмас. 2.0 версияга статик синфларни тавсифлаш имкони киритилган. Бундай синф экземплярларини яратиш таъқиқланган ва бундан ташқари улардан мерос олиш хам мумкин эмас. Бундай синф объектлари static модификатори ёрдамида ошкор холда эълон қилиниши шарт. Бунда константалар ва и ички типлар тўғридан – тўғри статик элементлар сифатида тан олинади. 18.4- листингда статик синфга намуна келтирилган.
using System;
namespace ConsoleApplication1
{
static class D
{
static int a = 200;
static double b = 0.002;

public static void Print ()


{
Console.WriteLine( "a = " + a );
Console.WriteLine( "b = " + b );
}
}

class Class1


{ static void Main()
{
D.Print();
}
}
}
18.4-листинг. Статик синф

Синфнинг турли элементлари билан ишлашни анмойиш қилувчи “елвизак” дастурда компьютер ўйинлари персонажини моддлаштирувчи синф яратамиз. Бунинг учун унинг ҳусусиятларини (масалан, пайпаслагичлар миқдори ёки гранатометнинг мавжудлиги) хамда ҳулқини белгилаб қўямиз


using System;
namespace ConsoleApplication1
{
class Monster
{
public Monster()
{
this.name = "Noname";
this.health = 100;
this.ammo = 100;
}


public Monster( string name ) : this()
{
this.name = name;
}


public Monster( int health, int ammo, string name )
{
this.name = name;
this.health = health;
this.ammo = ammo;
}


public string GetName()
{
return name;
}


public int GetHealth()
{
return health;
}


public int GetAmmo()
{
return ammo;
}


public void Passport()
{
Console.WriteLine( "Monster {0} \t health = {1} ammo = {2}",
name, health, ammo );
}


string name; // ёпиқ майдонлар
int health, ammo;
}


class Class1
{
static void Main()
{
Monster X = new Monster();
X.Passport();
Monster Vasia = new Monster( "Vasia" );
Vasia.Passport();
Monster Masha = new Monster( 200, 200, "Masha" );
Masha.Passport();
}
}
}
18.5-листинг. Monster синфи

Дастурнинг натижаси қуйидагича:


Monster Noname health = 100 ammo = 100
Monster Vasia health = 100 ammo = 100
Monster Masha health = 200 ammo = 200

Download 4,03 Mb.

Do'stlaringiz bilan baham:
1   ...   52   53   54   55   56   57   58   59   ...   102




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