Применение метода CRC – карт представляет собой игровой процесс, роли классов в которой распределяются между разработчиками. Команда собирается для проработки различных сценариев с помощью карт. Происходит это посредствам передачи карт друг другу в виде сообщений. Сценарии могут быть подготовлены заранее, однако в процессе игры зачастую выявляются совершенно неожиданные варианты. Очень сложно описать эту технологию методологически, но в процессе она незамысловата и максимально легка.
Одним из самых важных моментов является распределение ответственности (нижнее левое поле — Responsibility). Нужно разумно описать обязанности объекта, что поможет сформировать иерархическую структуру модели. Важность проработки ответственностей заключается в возможности абстрагироваться от мысли о классе, как о хранителе данных. Они создают понимание о функционале класса на каждом уровне иерархии. Помимо указанного ранее, ответственность также может распределяться по операциям, атрибутам п пр.
Обычно опытные разработчики советуют не создавать длинных списков очень низких ответственностей, так как это, в конечном счете, сбивает с основной мысли и может привести к необоснованному разделению классов. Рекомендуют лаконично, в паре слов излагать суть ответственности и переносить их в другие уровни иерархии при необходимости.
При проработке связей необходимо также быть максимально внимательными, так как должны быть учтены все возможные случаи взаимодействия объектов друг с другом. Без этого модель может быть незавершенной.
На основании совокупности карт, сложенных в модель, в конечном итоге строятся CRC–диаграммы. Обычно, по итогу проработки иерархии с помощью CRC – карт выработанная модель передается на UML моделирование, где происходит детализация анализа и задач. Есть случаи, когда стадии составления CRC – диаграммы уже достаточно.
Итак, мы рассмотрели основу проектирования ООП с помощью CRC – карт. В заключении отметим, что популярность метода CRC – обусловлена тем, что они создают живое обсуждение проекта. Остальные методы несут большие временные и трудозатраты: исправление одним разработчиком, согласование с другим, рассмотрение вариантов, повторное исправление и так очень–очень долго и малоэффективно. А живое общение устраняет этот недостаток. Используя CRC — карты, разработчики уже заранее моделируют такое взаимодействие и избегают лишних проволочек.
CRC карты