Построение концептуальной модели предметной области

Диаграммы классов – центральное звено объектно-ориентированных методов разработки программного обеспечения, поэтому все существующие методы используют диаграммы классов в одной из известных нотаций. Однако в основном диаграммы классов в этих методах применяют на этапе проектирования, для того чтобы показать особенности построения конкретных классов. В отличие от ранее существовавших нотаций, UML предлагает использовать три уровня диаграмм классов в зависимости от степени их детализации:

· концептуальный уровень, на котором диаграммы классов, называемые в этом случае контекстными, демонстрируют связи между основными понятиями предметной области;

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

· уровень реализации, на котором диаграммы классов непосредственно показывают поля и операции конкретных классов.

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

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

· концептуальную модель – на этапе анализа;

· диаграммы классов уровня спецификации – на этапе проектирования;

· диаграммы классов уровня реализации – на этапе реализации.

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

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

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

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

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

    Имя класса
Имя класса   Атрибуты
     
а   б
Рис.6.6.обозначение класса на концептуальной диаграмме классов: а – без уточнения характеристик; б – с уточнением атрибутов.

Отношение ассоциации означает наличие связи между экземплярами классов или объектами, например, класс Студент ассоциирован с классом Институт. Ассоциация может иметь имя, например Обучается. Рядом с именем ассоциации обычно ставят стрелку, указывающую направление чтения имени («Студент обучается в институте», а не наоборот).

Связь между экземплярами классов подразумевает некоторое роли, которые соответствующие объекты играют по отношению друг к другу. Роль связана с направлением ассоциации. Так по отношению к студентам институт – организация, осуществляющая их обучение, т.е. роль института можно назвать Место учебы. Студент для института – объект обучающей деятельности института, т.е. Обучаемый. Если роль собственного имени не имеет, то можно считать, что ее имя совпадает с именем класса, по отношению к которому определяется эта роль. Для рассматриваемого примера это соответственно роли Студент и Институт (рис6.7,а), но роль можно указать и явно (рис. 6.7,б).

а б в
Рис.6.7.обозначение ассоциации : а – с указанием имени ассоциации и ее направления б – с указанием имен ролей; в – с указанием множественности.

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

* - от 0 до бесконечности;

<целое>..* - от заданного числа до бесконечности;

<целое> - точно определенное количество объектов;

<целое1>,<целое2> - несколько вариантов точного количества объектов;

<целое1>..<целое2> - диапазон объектов.

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

Чтобы избежать излишних нагромождений рекомендуется следовать простому правилу [37]: если некоторый объект Х в реальном мире не является числом или текстом, то это скорее всего понятие. В противном случае – это атрибут.

рис. 6.8.обозначение обобщения

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

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

· формируют множество понятий-кандидатов из существительных, характеризующих предметную область в описании вариантов использования;

· исключают понятия, не существенные для данного варианта использования, например, в предыдущем примере, «информация», «ввод» и т.п.