Проектирование программного обеспечения при объектном подходе

Задачи проектирования включают в себя две составляющие: логическое и физическое проектирование программных продуктов. Логическое проектирование заключается в разработке классов для реализации их экземпляров — объектов. Для этого требуется подробное описание полей и методов классов, а также связей между ними. Для этого используются статические диаграммы классов и объектов, динамические — последовательностей состояний и кооперации. Физическое проектирование предполагает построение программных компонентов из ранее определенных классов и объектов и размещение их на конкретных вычислительных устройствах. Разрабатываемые на этом этапе диаграммы — компонентов и развертывания [1].

Разработка структуры программного обеспечения при объектном подходе

На этапе проектирования уточняются поля и методы классов, а также отношения между классами. Все это находит отражение на диаграмме классов.

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

  • управляющий класс (control class) отвечает за координацию действий других классов и контролирует последовательность выполнения действий варианта использования для данного ПО. На каждой диаграмме классов должен быть хотя бы один управляющий класс (рис. 4.11, а).
  • класс-сущность (entity class) — пассивный класс, информация о котором должна храниться постоянно. Как правило, этот класс соответствует отдельной таблице базы данных. В этом случае его атрибуты являются полями таблицы, а операции — присоединенными или хранимыми процедурами (рис. 4.11, б);
  • граничный класс (boundary class) располагается на границе системы с внешней средой. К этому типу относят как классы, реализующие пользовательские интерфейсы, так и классы, обеспечивающие интерфейс с аппаратными средствами или программными системами (рис. 4.11, в).
Графическое изображение классов для моделирования программного

Рис. 4.11. Графическое изображение классов для моделирования программного

обеспечения:

а — управляющий класс; б — класс-сущность; в — граничный класс

Отношения между классами

Кроме внутреннего устройства или структуры классов, на диаграмме классов необходимо отобразить различные отношения между ними. Основными отношениями или связями в языке UM L являются [48]:

  • • отношение зависимости (dependency relationship);
  • • отношение ассоциации (association relationship);
  • • отношение обобщения (generalization relationship);
  • • отношение реализации (realization relationship).

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

Отношение зависимости

Отношение зависимости используется в ситуации, когда некоторое изменение одного элемента модели может потребовать изменения другого зависимого от него элемента модели.

Отношение зависимости графически изображается пунктирной линией между соответствующими элементами со стрелкой на одном из ее концов («-»» или «<-»). На диаграмме классов данное отношение связывает отдельные классы между собой, при этом стрелка направлена от класса-клиента зависимости к независимому классу или классу-источнику (рис. 4.12). На данном рисунке изображены два класса: Класс_А и Класс_Б, при этом Класс Б является источником некоторой зависимости, а Класс А — клиентом этой зависимости.

Класс А

-----------

Класс Б

Рис. 4.12. Графическое изображение отношения зависимости

на диаграмме классов

Отношение ассоциации

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

Ассоциация, связывающая два класса (или класс с самим собой), называется бинарной. Для бинарной ассоциации на диаграмме может быть указан порядок следования классов с использованием треугольника в форме стрелки рядом с именем данной ассоциации. Направление этой стрелки указывает на порядок классов, один из которых является первым (со стороны основания треугольника), а другой — вторым (со стороны вершины треугольника). Отсутствие данной стрелки рядом с именем ассоциации означает, что порядок следования классов в рассматриваемом отношении не определен.

На рис. 4.13 показано отношение бинарной ассоциации между классом «Группа» и классом «Студент». Они связаны между собой бинарной ассоциацией «Учеба», имя которой указано на рисунке над линией ассоциации. Порядок следования классов в данном отношении таков: первым является класс «Студент», а вторым — класс «Группа».

Графическое изображение отношения бинарной ассоциации

Рис. 4.13. Графическое изображение отношения бинарной ассоциации

между классами

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

Пример тернарной ассоциации показан на рис. 4.14. Здесь изображено отношение между тремя классами: «Футбольная команда», «Год» и «Игра», которое может представлять информацию об играх футбольных команд в национальном чемпионате в течение нескольких последних лет.

Графическое изображение тернарной ассоциации

Рис. 4.14. Графическое изображение тернарной ассоциации

между тремя классами

Наиболее важные свойства ассоциации указываются на диаграмме рядом с этими элементами ассоциации и должны перемещаться вместе с ними.

К таким свойствам относятся:

  • имя роли отдельного класса, входящего в ассоциацию, представляет собой строку текста рядом с концом ассоциации для соответствующего класса. Имя роли не является обязательным элементом обозначений и может отсутствовать на диаграмме;
  • кратность отдельных классов, являющихся концами ассоциации. Интервал кратности записывается рядом с концом ассоциации и для УУ-арной ассоциации означает потенциальное число отдельных экземпляров или значений кортежей этой ассоциации, которые могут иметь место, когда остальные N - 1 экземпляров или значений классов фиксированы.

В рассмотренном ранее примере (см. рис. 4.12) кратность «1» для класса «Группа» означает, что каждый студент может учиться только в одной группе. Кратность «1..*» для класса «Студент» означает, что в каждой группе могут учиться несколько студентов, общее число которых заранее неизвестно и ничем не ограничено, но всегда больше нуля.

На диаграмме классов может присутствовать так называемая исключающая ассоциация (Хог-а880ст1юп). Она означает, что из нескольких потенциально возможных вариантов данной ассоциации в каждый момент времени может использоваться только один ее экземпляр. Исключающая ассоциация изображается пунктирной линией, соединяющей две ассоциации и более, рядом с которой записывается строка-ограничение {хог}.

Например, счет в банке может быть открыт для клиента, в качестве которого может выступать физическое лицо или компания, что изображается с помощью исключающей ассоциации (рис. 4.15).

Графическое изображение исключающей ассоциации между тремя

Рис. 4.15. Графическое изображение исключающей ассоциации между тремя

классами

Отношение агрегации

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

Данное отношение применяется для представления системных взаимосвязей типа «часть—целое». Раскрывая внутреннюю структуру системы, отношение агрегации показывает, из каких компонентов состоит система и как они связаны между собой. Это отношение по своей сути описывает декомпозицию или разбиение сложной системы на более простые составные части, которые также могут быть подвергнуты декомпозиции, если в этом возникнет необходимость в последующем. При этом части системы никак не обязаны наследовать ее свойства и поведение, поскольку являются вполне самостоятельными сущностями. Более того, части целого обладают своими собственными атрибутами и операциями, которые могут существенно отличаться от атрибутов и операций целого.

Агрегация является частным случаем ассоциации и изображается в виде пустой ассоциации с незакрашенным ромбом со стороны «целого» (рис. 4.16).

Часть

Целое

Рис. 4.16. Графическое изображение отношения агрегации

в языке иМЬ

Примером отношения агрегации может служить деление персонального компьютера на составные части: системный блок, монитор, клавиатуру и мышь (рис. 4.17).

Диаграмма классов для иллюстрации отношения агрегации на примере

Рис. 4.17. Диаграмма классов для иллюстрации отношения агрегации на примере

структуры персонального компьютера

Отношение композиции

Отношение композиции является частным случаем отношения агрегации. Это отношение служит для описания специальной формы отношения «часть—целое», при которой составляющие части в некотором смысле находятся внутри целого. Причем части не могут выступать в отрыве от целого, т. е. с уничтожением целого уничтожаются и все его составные части.

Графически отношение композиции изображается сплошной линией, один из концов которой представляет собой закрашенный внутри ромб. Этот ромб указывает на тот из классов, который представляет собой класс-композицию или «целое» (рис. 4.18).

Графическое изображение отношения композиции в языке иМЬ

Рис. 4.18. Графическое изображение отношения композиции в языке иМЬ

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

В качестве дополнительных обозначений для отношений композиции и агрегации могут использоваться дополнительные обозначения, применяемые для отношения ассоциации. А именно, указание кратности класса ассоциации и имени данной ассоциации, которые не являются обязательными. Диаграмма классов для класса «Окно программы», описанного выше, может иметь следующий вид (рис. 4.19).

Диаграмма классов для иллюстрации отношения композиции

Рис. 4.19. Диаграмма классов для иллюстрации отношения композиции

на примере класса окна программы

Отношение обобщения

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

Класс-потомок

Класс-предок

Рис. 4.20. Графическое изображение отношения обобщения в языке УМЬ

Пример отношения обобщения показан на рис 4.20. Здесь абстрактный класс «Геометрическая фигура» выступает в качестве суперкласса (класса-предка) для подклассов (классов-потомков), соответствующих конкретным геометрическим фигурам «Прямоугольник», «Окружность», «Эллипс» и др.

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

Пример графического изображения обобщения классов

Рис. 4.21. Пример графического изображения обобщения классов

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

Для того чтобы проиллюстрировать описанные выше типы отношений, рассмотрим следующий пример:

Пример 4.4. Разработать диаграмму классов для некоей компании — класс «Компания», которая состоит из нескольких отделов — класс «Отдел», каждый из которых располагается в своем офисе — класс «Офис», имеет штаб-квартиру — класс «Штаб-квартира» и содержит штат сотрудников — класс «Person», сведения о которых содержатся в системе кадрового учета. Каждый из вышеприведенных классов обладает своими атрибутами и операциями и связан с другими классами определенным типом отношений.

Полученная диаграмма приведена на рис. 4.22.

Диаграммы классов

Рис. 4.22. Диаграммы классов

Кроме классов на диаграмме могут изображаться интерфейсы.

Интерфейсы

Интерфейс (interface) — именованное множество операций, характеризующих поведение отдельного элемента модели извне без указания их внутренней структуры.

В языке UML интерфейс является специальным случаем класса, у которого имеются операции, но отсутствуют атрибуты. Для обозначения интерфейса на диаграмме классов используется специальный графический символ — окружность, рядом с которой указывается имя интерфейса, или стандартный способ — прямоугольник класса с обозначением «Interface» (рис. 4.23).

а

«Interface»

Принтер

настроить()

печатать()

б

Рис. 4.23. Обозначения интерфейсов

Объекты

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

Объект (object) — это отдельный экземпляр класса, который создается на этапе выполнения программы. Он имеет свое собственное имя и конкретные значения атрибутов. Имя объекта представляет собой строку текста «имя объекта» : «имя класса», разделенную двоеточием. Для графического изображения объектов используется такой же символ прямоугольника, как и для классов, но имя объекта в отличие от имени класса выделяется подчеркиванием. Пример обозначения объектов приведен на рис. 4.24.

S: Студент

f: Функция

а

name = "Иванов" ball = 4.5

б

Рис. 4.24. Обозначения объектов

Пример диаграммы объектов

Рис. 4.25. Пример диаграммы объектов

Пример диаграммы объектов компании, состоящей из нескольких отделов — объекты d 1, d2, d3 класса «Department», приведен на рис. 4.25.

 
< Пред   СОДЕРЖАНИЕ     След >