Каковы некоторые методы для понимания взаимодействия объекта - PullRequest
2 голосов
/ 21 августа 2009

При запуске нового приложения, какие способы решить, какие объекты вам понадобятся, что они должны делать и как они должны взаимодействовать друг с другом?

Это работа для белой доски, или проще просто начать кодировать и перемещать вещи по мере необходимости?

Ответы [ 6 ]

7 голосов
/ 21 августа 2009

Карты CRC, или Карты Классовой ответственности-Сотрудничества, являются хорошим способом сделать это - см. страницу Википедии .

Это хороший способ провести мозговой штурм (в команде или самостоятельно), какие классы вам понадобятся, за что будет отвечать каждый класс и как они будут взаимодействовать друг с другом.

3 голосов
/ 21 августа 2009

Возможно, вы захотите попробовать:

CRC-карты

Карты помогут определить объект, его обязанности и сотрудничество.

Существует целый процесс, который вы проходите при создании карт CRC. Этот процесс определяет правила, которые помогают сделать каждый класс кратким и действительно выполнять только те операции, которые ему необходимы.

2 голосов
/ 21 августа 2009

Я думаю, что ответ зависит от нескольких факторов:

  • каков размер проекта? Для небольшого проекта довольно легко иметь хорошее представление о трех или четырех объектах, которые могут потребоваться, и просто начать кодирование. Для больших проектов важно начать перечислять их заранее, чтобы вы могли разработать правильные имена объектов и иерархию.

  • сколько человек в проекте? Если вас больше, чем просто вы, вам следует сесть и спланировать, кто будет работать над чем, и для этого требуется список классов, которые будут необходимы.

Для чего-то большего, чем небольшой (один или два дня) проект, стоит потратить некоторое время на проектирование, прежде чем начинать кодировать. Для этого подойдут белые доски, но обязательно сделайте снимок, когда закончите!

2 голосов
/ 21 августа 2009

Это должно более или менее «естественно» соответствовать требованиям.

Есть ли у вас четкое понимание того, что должно делать приложение, его масштаб и т. Д.?

Это действительно зависит от того, о каком размере проекта вы говорите: подход и строгость, которые нужно применять, отличаются для коммерческого создания программного обеспечения команды от личного проекта.

Тем не менее, некоторые общие советы:

1) На выбранном вами носителе (мне нравятся доски) начните перечислять варианты использования или истории пользователей. Продолжайте, пока не почувствуете, что получили самые важные / охватывающие 80%.

2) Когда вы убедитесь, что у вас есть «ЧТО» (варианты использования) кратко и более или менее достаточно определены, вы можете приступить к разработке «КАК» (объекты, алгоритмы и т. Д.). Я бы предложил уклон в сторону меньшей сложности: вам не нужна сложная и многослойная иерархия объектов, если она вам действительно не нужна (и даже тогда, вероятно, вам не нужна).

3) Я склонен применять правило «без кодирования» до тех пор, пока не будут выполнены # 1 и # 2, несмотря на одноразовые прототипы или исследования конкретных подходов. Очень легко начать разбирать код и обнаружить, что вы «пойманы в ловушку» объектной моделью, которую вы придумали, прежде чем вы полностью поймете, что именно вы создаете.

4) Когда вы закончите сбор требований, вы можете использовать любой из # подходов, чтобы начать разбивать функциональные блоки / объекты / роли / и т.д. Карты CRC - один подход; Я также имел успех с диаграммами классов и последовательностей UML.

Мне лично нравится делать много досок на UML; Я часто снимаю фотоаппаратом для архивации мышления / подходов. Это гораздо лучше, чем ничего, когда дело доходит до документации бедняка или ответа на вопрос «почему мы / не сделали ...» через 2 месяца.

1 голос
/ 21 августа 2009

Наверное, лучше всего начать с доски или какого-нибудь обзора дизайна. Все зависит от того, что ваше приложение должно делать на самом деле. Выясните, какие действия необходимо выполнить вашему приложению. Свяжите объекты соответствующим образом с методами, которые вы придумали после разбиения вашего приложения на соответствующие части.

1 голос
/ 21 августа 2009

последовательности и диаграммы классов. Они имеют большое значение, когда вы в дизайне. Последнее, что вы хотите сделать, если вы не ограничены во времени и ресурсах, это просто начать кодирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...