Спадкаваньне (праграмаваньне): розьніца паміж вэрсіямі

Змесціва выдалена Змесціва дададзена
Xqbot (гутаркі | унёсак)
выпраўленьне спасылак
Радок 6:
 
== Тыпы спадкаваньня ==
 
=== Простае спадкаваньне ===
 
Простым спадкаваньнем зьяўляецца спадкаваньне, калі нашчадак спадкуе ўласьцівасьці адной сваёй бацькоўскай клясы.
 
Радок 14 ⟶ 12:
 
=== Множнае спадкаваньне ===
 
{{Асноўны артыкул|Множнае спадкаваньне}}
 
Радок 21 ⟶ 18:
Але множнае спадкаваньне мае свае недахопы. У першую чаргу гэта памылкі, якія ўзьнікаюць, калі бацькоўскія клясы маюць аднолькавыя [[мэтад (праграмаваньне)|мэтады]]. У шэрагу моваў праграмаваньня аўтары адмовіліся ад мэханізму множнага спадкаваньня на карысьць [[інтэрфэйс (праграмаваньне)|інтэрфэйсаў]].
 
Большасьць сучасных аб’ектна-арыентаваных моваў праграмаваньня ([[C Sharp|C#]], [[Java]], [[Delphi (мова праграмаваньня)|Delphi]] і інш.іншыя) падтрымліваюць магчымасьць адначасовага спадкаваньня ад клясы-папярэдніцы і рэалізаваньня некалькіх інтэрфэйсаў адной клясай. Гэта дазваляе замяніць множнае спадкаваньне — мэтады інтэрфэйсаў неабходна перавыхначаць наноў, што пазбаўляе ад памылак пры спадкаваньні функцыянальнасьці аднолькавых мэтадаў розных клясаў-папярэднікаў.
 
== Абмежаваньні і альтэрнатывы ==
 
Выкарыстоўваючы спадкаваньне падчас дызайну праграмы, варта не забывацца на пэўныя абмежаваньні, якія яно мае.
 
Радок 32 ⟶ 28:
 
=== Абмежаваньні праектаваньня з спадкаваньнем ===
 
* '''Адзінкавасьць''': выкарыстоўваючы простае спадкаваньне, падкляса можа спадкаваць толькі адну бацькоўскую клясу. Працягваючы вышэйзгаданы прыклад, <code>Асоба</code> можа быць альбо <code>Студэнтам</code>, альбо <code>Супрацоўнікам</code>, але не абодвума адразу. Выкарыстаньне [[множнае спадкаваньне|множнага спадкаваньня]] часткова вырашае гэту праблему, бо можна вызначыць клясу <code>СупрацоўнікСтудэнт</code>, якая будзе спадкаваць абедзьве клясы <code>Супрацоўнік</code> і <code>Студэнт</code>. Аднак гэта ўсё роўна дазваляе спадкавацца ад кожнай клясы толькі аднойчы, і таму гэтая схэма ня можа выкарыстоўвацца ў выпадках, калі студэнт мае дзьве працы ці наведвае два ўнівэрсытэты.
 
Радок 40 ⟶ 35:
 
=== Ролі і спадкаваньне ===
 
Часам праектаваньне, заснаванае на спадкаваньні, выкарыстоўваецца замест роляў. Роля, напрыклад, '''Студэнт''' — гэта роля '''Асобы''' — апісвае характарыстыкі наяўнага аб’екта, таму што аб’ект узаемадзейнічае зь іншым аб’ектам (напрыклад, асоба ў ролі студэнта мусіць наведваць заняткі). Пэўныя мэтады аб’ектна-арыентаванага праектаваньня не адрозьніваюць такога выкарыстаньня роляў ад звычайных аспэктаў аб’ектаў. Але фармеуцца тэндэнцыя выкарыстоўваць спадкаваньне для мадэляваньня роляў, скажам нехта будзе мець студэнцкую ролю асобы, змадэляваную як падкляса клясы Асоба. Аднак, ні гіерархія спадкаваньня, ні тыпы аб’ектаў ня могуць зьмяняцца з часам. Таму мадэляваньне роляў як падклясаў можа выклікаць сытуацыю, калі ролі будуць зафіксаваныя на момант свайго стварэньня. Напрыклад, Асоба ня зможа проста зьмяніць сваю ролю з Студэнта на Супрацоўніка, калі зьменяцца абставіны.