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

Змесціва выдалена Змесціва дададзена
Rotondus (гутаркі | унёсак)
д артаграфія
Радок 28:
 
=== Абмежаваньні праектаваньня з спадкаваньнем ===
* '''Адзінкавасьць''': выкарыстоўваючы простае спадкаваньне, падкляса можа спадкаваць толькі адну бацькоўскую клясу. Працягваючы вышэйзгаданы прыклад, <code>Асоба</code> можа быць альбо <code>Студэнтам</code>, альбо <code>Супрацоўнікам</code>, але не абодвума адразу. Выкарыстаньне [[множнае спадкаваньне|множнага спадкаваньня]] часткова вырашае гэту праблему, бо можна вызначыць клясу <code>СупрацоўнікСтудэнт</code>, якая будзе спадкаваць абедзьве клясы <code>Супрацоўнік</code> і <code>Студэнт</code>. Аднак гэта ўсё роўна дазваляе спадкавацца ад кожнай клясы толькі аднойчы, і таму гэтая схэмасхема ня можа выкарыстоўвацца ў выпадках, калі студэнт мае дзьве працы ці наведвае два ўнівэрсытэты.
 
* '''Статычнасьць''': герархія спадкаваньня аб’екта зафіксаваная і вызначаецца толькі аднойчы, калі выбіраецца тып аб’екта, і ня можа быць зьмененая з часам. Такім чынам спадкаваньне не дазваляе аб’екту тыпу <code>Студэнт</code> стаць аб’ектам тыпу <code>Супрацоўнік</code> з захаваньнем стану сваёй бацькоўскай клясы <code>Асоба</code>.
Радок 35:
 
=== Ролі і спадкаваньне ===
Часам праектаваньне, заснаванае на спадкаваньні, выкарыстоўваецца замест роляў. Роля, напрыклад, '''Студэнт''' — гэта роля '''Асобы''' — апісвае характарыстыкі наяўнага аб’екта, таму што аб’ект узаемадзейнічае зь іншым аб’ектам (напрыклад, асоба ў ролі студэнта мусіць наведваць заняткі). Пэўныя мэтады аб’ектна-арыентаванага праектаваньня не адрозьніваюць такога выкарыстаньня роляў ад звычайных аспэктаў аб’ектаў. Але фармеуццафармуецца тэндэнцыя выкарыстоўваць спадкаваньне для мадэляваньня роляў, скажам нехта будзе мець студэнцкую ролю асобы, змадэляваную як падкляса клясы Асоба. Аднак, ні герархія спадкаваньня, ні тыпы аб’ектаў ня могуць зьмяняцца з часам. Таму мадэляваньне роляў як падклясаў можа выклікаць сытуацыю, калі ролі будуць зафіксаваныя на момант свайго стварэньня. Напрыклад, Асоба ня зможа проста зьмяніць сваю ролю з Студэнта на Супрацоўніка, калі зьменяцца абставіны.
 
З пункту погляду мадэляваньня такія абмежаваньні часьцяком непажаданыя, таму што яны выклікаюць штучныя абмежаваньні на будучую пашыральнасьць сыстэмы аб’ектаў, што выкліча складанасьці падчас рэалізацыі будучых зьменаў з-за таго, што патрабуецца абнаўленьне бягучай спраектаванай мадэлі.