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) Шаблон бароніць элементы ад змянення іншымі элементамі (аб’ектамі ці падсістэмамі) з дапамогай вынясення ўзаемадзеяння ў фіксаваны іінтэрфейс, праз які (і толькі праз які) магчыма ўзаемадзеянне між элементамі. Паводзіны могуць вар’іравацца толькі праз стварэнне іншай рэалізацыі інтэрфейса.
Катэгорыя:Праектаванне праграмнага забеспячэння Катэгорыя:Аб’ектна-арыентаванае праграмаванне Катэгорыя:Старонкі з недагледжанымі перакладамі