Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


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




 

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

Центральное место в объектно-ориентированном подходе к проектированию программного обеспечения занимает разработка логической модели системы в виде диаграммы классов (class

diagram) [l, 48].

UML предлагает использовать три уровня диаграмм классов в зависимости от степени их детализации:

• концептуальный уровень, на котором диаграммы классов

отображают связи между основными понятиями предметной области;

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

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

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

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

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

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

реализации.

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

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

• классы;

• интерфейсы;

• кооперации;

• отношения зависимости, обобщения и ассоциации.

Когда говорят о данной диаграмме, имеют в виду статическую структурную модель проектируемой системы, поэтому диаграмму классов принято считать графическим представлением таких взаимосвязей логической модели системы, которые не зависят от времени [48].

Класс

Класс (class) в языке UML служит для обозначения множества объектов, которые имеют одинаковую структуру, поведение и отношения с объектами из других классов. На диаграмме класс

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

 

 

Обязательным элементом обозначения класса является его имя.

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

дополняются атрибутами (рис. 3.40, б) и операциями (рис. 3.40, в).

Чтобы сразу отличить класс от других элементов языка UML, секцию атрибутов и операций выделяют горизонтальной линией, даже если она является пустой. На рис. 3.41 приведены примеры графического изображения классов на диаграмме классов. В первом случае для класса «Прямоугольник»

 

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

зать(), скрыть()), секция атрибутов оставлена пустой. Для класса

«Счет» (рис. 3.41, в), кроме операции проверки кредитной

карточки, дополнительно изображена четвертая секция, в которой

указано исключение — отказ от обслуживания просроченной

кредитной карточки.

Имя класса

Имя класса должно быть уникальным в пределах диаграммы

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

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

секции имени полужирным шрифтом и должно начинаться с

заглавной буквы. В качестве имен классов рекомендуется

использовать одно или несколько существительных без пробелов между

ними. Кроме того, в секции обозначения класса могут

находиться ссылки на стандартные шаблоны или абстрактные классы, от

которых образован данный класс и, соответственно, от которых

он наследует свойства и методы.

Примерами имен классов могут быть такие существительные, как «Сотрудник», «Фирма», «Руководитель», «Покупатель», «Продавец» и многие другие, имеющие непосредственное

отношение к моделируемой предметной области и функциональному назначению проектируемой системы.

 

Окно

проверить()

показать()

скрыть()

Исключения

Если класс не имеет экземпляров (объектов), то он называется абстрактным классом, его имя записывается курсивом так #е, как любой текст, относящийся к абстрактному элементу.

Атрибуты класса

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

следующим образом:

<квантор видимостихимя атрибута>[кратность]

<тип атрибута> <исходное значение>{строка-свойство}

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

• общедоступный (public) — обозначается «+»;

• защищенный (protected) — обозначается «#»;

• закрытый (private) — обозначается «-».

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

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

[нижняя_граница1 верхняя_граница1, нижняя_граница2.

верхняя_граница2, нижняя_границак

верхняя_границак],

где нижняя_граница и верхняя_граница являются

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

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

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

верхние границы интервалов включаются в значение кратности.

Если же указывается единственный знак «*», то это означает, что кратность атрибута может быть произвольным положительным целым числом или нулем.

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

• [0..1] означает, что кратность атрибута может принимать значение 0 или 1. При этом 0 означает отсутствие значения для данного атрибута;

• [0..*] или просто [*] означает, что кратность атрибута может принимать любое положительное целое значение, большее или равное 0;

• [1..*] означает, что кратность атрибута может принимать любое положительное целое значение, большее или равное 1;

• [1..5] означает, что кратность атрибута может принимать любое значение из чисел 1, 2, 3, 4, 5;

• [1.-3,7.. 10] означает, что кратность атрибута может принимать любое значение из чисел 1, 2, 3, 7, 8, 9, 10;

• [1..3,7..*] означает, что кратность атрибута может принимать любое значение из чисел 1, 2, 3, а также любое

положительное целое значение, большее или равное 7.

Если кратность атрибута не указана, то по умолчанию принимается ее значение, равное 1.

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

Например:

имя_студента [1..2] String здесь имя_студента является именем атрибута, тип атрибута String (строка) Исходное значение служит для задания некоторого начального значения для соответствующего атрибута в момент создания отдельного экземпляра класса.

Например:

имя студента [1..2] : String = Иван.

Строка-свойство служит для указания фиксированных значений атрибута. Эти значения не могут быть изменены в программе при работе с данным типом объектов. При отсутствии строки-свойства значение соответствующего атрибута может быть изменено в программе. Например, строка-свойство в записи атрибута стипендия Integer = {$50} означает фиксированную

сумму стипендии для всех объектов класса «Студент». Запись данного атрибута в виде стипендия Integer = $50 означает, что при создании нового экземпляра Студент для него устанавливается

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

вовсе, о чем необходимо позаботиться в программе.

 


Поделиться:

Дата добавления: 2015-04-11; просмотров: 94; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты