GRASP

GRASP ( — агульныя шаблоны размеркавання адказнасцей; таксама існуе англійскае слова «grasp» — «кантроль, хватка») — шаблоны, якія выкарыстоўваюцца ў аб’ектна-арыентаваным праектаванні для вырашэння агульных задач па прызначэнню адказнасцей класам і аб’ектам.

У кнізе Крэга Лармана «Ужыванне UML і шаблонаў праектавання» 9 такіх шаблонаў: кожны дапамагае вырашыць нейкую праблему, якая ўзнікае як у аб’ектна-арыентаваным аналізе, гэтак і ў практычна ўсякім праекце па распрацоўцы праграмнага забеспячэння.Larman, Craig. Applying UML and Patterns — Third Edition.  Такім чынам, шаблоны «G.R.A.S.P.» — добра дакументаваныя, стандартызаваныя і правераныя часам прынцыпы аб’ектна-арыентаванага аналізу, а не спроба прыўнесці нешта прынцыпова новае.

 Каталог шаблонаў 
Сціслая характарыстыка дзевяці шаблонаў:

 1. Інфармацыйны эксперт (Information Expert) 
Шаблон вызначае базавы прынцып размеркавання адказнасцей: Адказнасць мае быць прызначана таму, хто валодае максімумам патрэбнай інфармацыі для выканання — інфармацыйнаму эксперту.Гэты шаблон — самы яскравы і важны з дзевяці. Калі яго не ўлічыць — атрымаецца спагеці-код, у якім цяжка разабрацца.

Лакалізацыя ж адказнасцей, якая праводзіцца згодна шаблону:

 Павялічвае:
 Інкапсуляцыю;
 Прастату ўспрымання;
 Гатоўнасць кампанентаў да паўторнага выкарыстання;
 Зніжае:
 ступень зачэплівання.

 2. Стваральнік (Creator) 
Клас павінен ствараць экзэмпляры тых класаў, якія ён можа:

 Змяшчаць ці агрэгаваць;
 Запісваць;
 Выкарыстоўваць;
 Ініцыялізаваць, маючы патрэбныя даныя.

Можна сказаць, што шаблон «Creator» — гэта інтэрпрэтацыя шаблону «Information Expert» у пытаннях стварэння аб’ектаў.

Альтэрнатыва — шаблон «Фабрыка» (стварэнне аб’ектаў канцэнтруецца ў асобным класе).

 3. Кантролер (Controller) 

 Адказвае за аперацыі, запыты на якія прыходзяць ад карыстальніка, і можа здзяйсняць сцэнарыі аднаго ці некалькіх варыянтаў выкарыстання (напрыклад, стварэнне і выдаленне);
 Не выконвае працу самастойна, а дэлегуе кампетэнтным выканаўцам;
 Можа ўяўляць сабой:
 Сістэму ў цэлым;
 Падсістэму;
 Каранёвы аб’ект;
 Прыладу.

 4. Слабае зачэпліванне (Low Coupling) 
«Ступень зачэплівання» — мера неадрыўнасці элемента ад іншых элементаў (альбо мера даных, якую ён мае пра іх).

«Слабае» зачэпліванне з’яўляецца ацэначнай мадэллю, якая дыктуе, як размеркаваць абавязкі, якія трэба падтрымваць.

«Слабае» зачэпліванне — размеркаванне адказнасцей і даных, якія забяспечваюць узаемную незалежнасць класаў. Клас з «слабым» зачэпліваннем:

 Мае слабую залежнасць ад іншых класаў;
 Не залежыць ад знешніх змяненняў (змяненне ў адным класе аказвае слабы ўплыў на іншыя класы);
 Просты для паўторнага выкарыстання.

 5. Высокая злучанасць (High Cohesion) 
Высокая злучанасць класа — гэта ацэнкавая мадэль, скіраваная на ўтрыманне аб’ектаў належным чынам сфакусаванымі, кіраванымі і зразумелымі. Высокая злучанасць звычайна выкарыстоўваецца для падтрымання нізкага зачаплення. Высокая злучанасць азначае, што абавязкі элемента цесна злучаны і сфакусаваны. Разбіццё праграм на класы і падсістэмы з’яўляецца прыкладам дзейнасці, якая павялічвае злучанасць сістэмы.

І наадварот, нізкая злучанасць — гэта сітуацыя, пры якой дадзены элемент мае замнога незвязаных абавязкаў. Элементы з нізкай злучанасцю часта пакутуюць ад таго, што іх цяжка зразумець, цяжка скарыстаць, цяжка падтрымваць.

Злучанасць класа — мера сфакусаванасці прадметных абласцей яго метадаў:
 «Высокая» злучанасць — сфакусаваныя падсістэмы (прадметная вобласць вызначаная, кіруемая і зразумелая);
 «Нізкая» злучанасць — абстрактныя падсістэмы абцяжараны:
 Успрыманне;
 Паўторнае выкарыстоўванне;
 Падтрымка;
 Устойлівасць да знешніх змяненняў.

 6. Полімарфізм (Polymorphism) 

Будова і паводзіны сістэмы:
 Вызначаюцца данымі;
 Зададзены паліморфнымі аперацыямі яе інтэрфейсу.

Прыклад: Адаптацыя камерцыйнай сістэмы да разнастайнасці сістэм уліку падаткаў можа быць забяспечана праз знешні інтэрфейс аб’ектаў-адаптараў.

 7. Чыстая выдумка (Pure Fabrication) 

Не адносіцца да прадметнай вобласці, але:
 Змяншае зачэпліванне;
 Павялічвае злучанасць;
 Спрашчае паўторнае выкарыстанне.

«Pure Fabrication» адлюстроўвае канцэпцыю сэрвісаў у мадэлі праблемна-арыентаванага праектавання.

Прыклад задачы: Не выкарыстоўвая сродкі класа «А», унесці яго аб’екты ў базу даных.

Вырашэнне: Стварыць клас «Б» для запісу аб’ектаў класа «А».

 8. Перанакіраванне (Indirection) 

Слабае зачэпліванне між элементамі сістэмы (і магчымасць паўторнага выкарыстання) забяспечваецца прызначэннем прамежкавага аб’екта іх пасярэднікам.

Прыклад: У архітэктуры Model-View-Controller, кантролер (англ. controller) саслабляе зачэпліванне даных (англ. model) з іх прадстаўленнем (англ. view).

 9. Устойлівасць да змяненняў (Protected Variations) 
Шаблон бароніць элементы ад змянення іншымі элементамі (аб’ектамі ці падсістэмамі) з дапамогай вынясення ўзаемадзеяння ў фіксаваны іінтэрфейс, праз які (і толькі праз які) магчыма ўзаемадзеянне між элементамі. Паводзіны могуць вар’іравацца толькі праз стварэнне іншай рэалізацыі інтэрфейса.

Катэгорыя:Праектаванне праграмнага забеспячэння
Катэгорыя:Аб’ектна-арыентаванае праграмаванне
Катэгорыя:Старонкі з недагледжанымі перакладамі