GRASP
GRASP (англ.: general responsibility assignment software patterns — агульныя шаблоны размеркавання адказнасцей; таксама існуе англійскае слова "grasp" — «кантроль, хватка») — шаблоны, якія выкарыстоўваюцца у аб'ектна-арыентаваным праектаванні для вырашэння агульных задач па прызначэнню адказнасцей класам і аб'ектам.
У кнізе Крэга Лармана «Ужыванне UML і шаблонаў праектавання» 9 такіх шаблонаў: кожны дапамагает вырашыць некаторую праблему, якая ўзнікае як у аб'ектна-арыентаваным аналізе, гэтак і ў практычна ўсякім праекце па распрацоўцы праграмнага забяспечвання.[1] Такім вобразам, шаблоны «G.R.A.S.P.» — добра дакументаваныя, стандартызаваныя і правераныя часам прынцыпы аб'ектна-арыентаванага аналізу, а не спроба прыўнесці нешта прынцыпова новае.
Каталог шаблонаў
[правіць | правіць зыходнік]Сціслая характарыстыка дзевяці шаблонаў:
1. Інфармацыйны эксперт (Information Expert)
[правіць | правіць зыходнік]Шаблон вызначае базавы прынцып размеркавання адказнасцей:
Адказнасць мае быць прызначана таму, хто валодае максімумам патрэбнай інфармацыі для выканання — інфармацыйнаму эксперту.
Гэты шаблон — самы яскравы і важны з дзевяці. Калі яго не ўлічыць — атрымаецца спагеці-код, у якім цяжка разабрацца.
Лакалізацыя ж адказнасцей, якая праводзіцца згодна шаблону:
- Павялічвае:
- Інкапсуляцыю;
- Прастату ўспрымання;
- Гатоўнасць кампанентаў да паўторнага выкарыстання;
- Зніжае:
- ступень зачэплівання.
2. Стваральнік (Creator)
[правіць | правіць зыходнік]Клас павінен ствараца экзэмпляры тых класаў, якія ён можа:
- Змяшчаць ці агрэгаваць;
- Запісваць;
- Выкарыстоўваць;
- Ініцыялізаваць, маючы патрэбныя даныя.
Можна сказаць, што шаблон «Creator» - гэта інтэрпрэтацыя шаблону «Information Expert» (глядзіце пункт № 1) у пытаннях стварэння аб'ектаў.
Альтэрнатыва — шаблон «Фабрыка» (стварэнне аб'ектаў канцынтруецца ў асобным класе).
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)
[правіць | правіць зыходнік]Шаблон бароніць элементы ад змянення іншымі элементамі (аб'ектамі ці падсістэмамі) з дапамогай вынясення ўзаемадзеяння ў фіксаваны іінтэрфейс, праз які (і толькі праз які) магчыма ўзаемадзеянне між элементамі. Паводзіны могуць вар'іравацца толькі праз стварэнне іншай рэалізацыі інтэрфейса.