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



Download 4,03 Mb.
bet73/102
Sana23.02.2022
Hajmi4,03 Mb.
#136190
1   ...   69   70   71   72   73   74   75   76   ...   102
Bog'liq
Dasturlash asoslari majmua

Эслатма: Агар класс IComparable интерфейсини амалга ошираётган бўлса, у холда Equals метлди хамда у билан боғланган GetHashCode методини қайта аниқлаш талаб илинади. Ҳар икки метод базавий object классидан мерос қилиб олинган.
9.3- листингда муносабат амали Monster класси учун қайта аниқланган. Таққослаш критерияси сифатида health майдони олинган. Тенгликни текширишда объектларнинг ҳамма майдонлари жуфт-жуфти билан таққосланади.
using System;
namespace ConsoleApplication1
{
class Monster : IComparable
{
public Monster( int health, int ammo, string name )
{
this.health = health;
this.ammo = ammo;
this.name = name;
}
public override bool Equals( object obj )
{
if ( obj == null || GetType() != obj.GetType() ) return false;
Monster temp = (Monster) obj;
return health == temp.health &&
ammo == temp.ammo &&
name == temp.name;
}
public override int GetHashCode()
{
return name.GetHashCode();
}
public static bool operator == ( Monster a, Monster b )
{
return a.Equals( b );
}
public static bool operator != ( Monster a, Monster b )
{
return ! a.Equals( b );
}
public static bool operator < ( Monster a, Monster b )
{
return ( a.CompareTo( b ) < 0 );
}
public static bool operator > ( Monster a, Monster b )
{
return ( a.CompareTo( b ) > 0 );
}
public static bool operator <= ( Monster a, Monster b )
{
return ( a.CompareTo( b ) <= 0 );
}
public static bool operator >= ( Monster a, Monster b )
{
return ( a.CompareTo( b ) >= 0 );
}
public int CompareTo( object obj )
{
Monster temp = (Monster) obj;
if ( this.health > temp.health ) return 1;
if ( this.health < temp.health ) return -1;
return 0;
}
string name;
int health, ammo;
}
class Class1
{ static void Main()
{
Monster Вася = new Monster( 70, 80, "Вася" );
Monster Петя = new Monster( 80, 80, "Петя" );
if ( Вася > Петя ) Console.WriteLine( "Вася Петядан катта");
else if ( Вася == Петя ) Console.WriteLine( "Вася == Петя");
else Console.WriteLine( "Вася Петядан кичик");
}
}
}
Дастур ишининг натижаси қуйидагича:
Вася Петядан кичик
Объектларни клонлаш.

Клонлаш — бу объект нусхасини яраиш демакдир. Объектнинг нусхаси клон деб аталади. Маълумки, ҳавола типидаги битта объектни ҳавола кўчирилганда объектнинг ўзи эмас, балки унинг ҳаволаси кўчирилади. Агар хотиранинг бошқа соҳасига объект майдонини кўчириш талаб қилинса, у холда MemberwiseClone методидан фойдаланиш мумкин. Бу методни иҳтиёрий объект object классидан мерос қилиб олади. Бунда объект майдони кўрсатаётган объектларнинг ўзи ҳавола бўлади ва нусхалари кўчирилмайди. Бу ҳолатни юзки клонлаш деб аталади.
Тўла эркли объектларни яратиш учун хотирада объект дарахтининг тўла дубликати, яъни объект майдони ҳавола қилаётган объектлар яратилаётганда чуқур клонлаш талаб қилинади. Чуқур клонлаш алгоритми ўта муракаб ҳисобланади, чунки объектнинг барча ҳаволаларини рекурсив айланиб чиқиши талаб қилинади ва циклик боғланишларни назорат қилиб бориш зарур бўлади.
Ҳусусий клонлаш алгоритмларига эга бўлган объект, ICloneable интерфейсининг вориси сифатида эълон қилиниши хамда унинг Clone методини қайта аниқланиши керак.9.4- шунингдек, ICloneable интерфейси амалга оширилган. Намойиш қилиш мақсадида объект клони номига "Клон" сўзи қўшиб қўйилган.
using System;

Download 4,03 Mb.

Do'stlaringiz bilan baham:
1   ...   69   70   71   72   73   74   75   76   ...   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