Савол ва топшириқлар
C# дастурлаш тили синфларини сананг..
параметрларни усулга узатиш усулалрини абён этинг.
рекурсия ёрдамида Фибоначчи сонларини ҳисоблаш алгоритмини ёзинрг.
Синфда бир нечта конструкторлар нима учун қўлланиши мумкин?
Бир конструкторн бошқаси томонидан қандай чақириш мумкин?
this нима? Унда нима сақланади ва ундан қандай фойдаланилади?
деструктор нима? Муҳит унинг бажарилишини кафолатлайдими?
ҳусусиятлар одатда set қисмда қандай харакат бажарилади?
Синф ҳусусияти ундаги майдонлар билан боғланган бўлмаслиги мумкинки?
Спецификатор нима ?
19-20 – Maruza (4 соат)
СИНФЛАР: батафсил маълумотлар
Режа:
Методларни қайта юклаш
Рекурсив методлар
Ўзгарувчан сондаги параметрли методлар Main методи 5. Индексаторы Типларни алмаштириш амаллари Қайта юкланадиган класс ва амалларга намуна Деструкторлар Ички типлар
Кўпинча турли типдаги маълумотлар учун бир хил алгоритмдан фойдаланиладиган методларни бир хил ном билан аташ қулай ҳисобланади. Бир хил номдаги бир нечта алгоритмлардан турли типдаги параметрлардан фойдаланиш методларни қайта юклаш деб аталади.
Компилятор амалда кўрсатилган параметрларнинг типларига кўра қайси методдан фойдаланишни мустақил равишда аниқлайди. Бу жараённи қайта юклашга рухсат бериш (resolution) деб аталади. перегрузки. Метод қайтарадиган қийматларнинг типларига кўра рухсат беришда иштирок этмайди. Қайта юклашга рухсат бериш механизми маъноси энг мақбул параметрлардан фойдаланишга қаратилган етарлича муракаб қоидаларга асосланади. Фараз қилайлик, энг катта элементни топиш учун тўрт хил метод мавжуд бўлсин:
// иккита бутун сондан каттасини топиш:
int max( int a, int b )
// учта бутун сондан каттасини топиш:
int max( int a, int b, int c )
// биринчи параметр ва иккинчисининг узунлигидан каттасини топиш:
int max ( int a, string b )
//иккиинчи параметр ва биринчисининг узунлигидан каттасини топиш:
int max ( string b, int a )
...
Console.WriteLine( max( 1, 2 ) );
Console.WriteLine( max( 1, 2, 3 ) );
Console.WriteLine( max( 1, "2" ) );
Console.WriteLine( max( "1", 2 ) );
max методи чақирилганда компилятор мавжуд тўртта вариантлар ичидан узатилаётган параметрлар рўйхатидан келиб чиққан холда энг мос келувчи методни танлайди.
Агар аниқ мослик мавжуд бўлмаса, умумий қоидаларга кўра типларни ошкормас холда алмаштириш амали бажарилади. Агар алмаштиришнинг хам иложи бўлмаса, у холда компилятор хатолик ҳақида ахборот беради. Агар икки ёки ундан ортиқ мосликларни ўрнатиш мумкин бўлса, у холда энг кам алмаштиришни ўз ичига оладиган вариант танланади.
Қайта юкланган методлар бир хил номга, аммо турли параметрларга (аниқроғи, уларнинг типи хамда узатиш усуллари) эга бўлади (out yoki ref). Масалан, сарлавҳалари қуйидаги кўрсатиладиган методлар турли сигнатураларга эга бўлгани учун қайта юкланган деб ҳисобланади.
int max( int a, int b )
int max( int a, ref int b )
Қайта юклаш амали .NET. кутубхонаси классларида кенг фойдаланилади. Масалан, стандарт Console классидаги WriteLine методи турли типдаги маълумотларни чиқариш учун 19 марта қўлланган. (14.1-листинг).
Do'stlaringiz bilan baham: |