Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб3_Разработка_Классов3.doc
Скачиваний:
6
Добавлен:
18.11.2018
Размер:
256.51 Кб
Скачать

3.2. Общие рекомендации по проектированию классов.

Один из известных разработчиков объектно-орентированных языков Бъярн Страуструп утверждает, что ключ к искусному проектированию можно подобрать, если непосредственно моделировать некоторые аспекты "окружающей действительности", то есть "поймать" понятия из данной прикладной области в виде классов, представить зависимости между классами формальным образом, например, в виде наследования или агрегирования, и проделывать эти операции повторно на разных уровнях абстракции.

Но как найти такие понятия и как определить - какие классы нам нужны? Лучше всего начинать с изучения самой прикладной области как множество абстракций и концепций. Особое внимание при этом следует обратить на используемый словарь терминов. Часто утверждают, что существительные соответствуют классам в программе. Глаголы могут означать операции над объектами. Часто в виде классов можно представить даже прилагательные. Такие прилагательные, как "хранимый", "согласованный", "зарегистрированный" можно представить в виде виртуальных базовых классов с той целью, чтобы разработчик мог отбирать из них наиболее подходящие атрибуты-классы и наделять (используя наследование) этими атрибутами классы, которые будут разрабатываться позднее.

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

3.3. Определение набора операций.

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

Обычно используется следующая стратегия:

  • Прежде всего, рассмотреть то, как следует создавать и копировать объекты класса.

  • Определить минимальный набор операций, требуемых для поддержки того понятия, которое описывает класс.

  • Рассмотреть, какие операции можно добавить для удобства записи, и из них включить в класс только несколько по-настоящему важных.

  • Проанализировать, какой функциональной общности из простоты наименования можно достичь во всём множестве классов.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]