Центр дистанционного обучения
online.mirea.ru
26
Центр дистанционного обучения
Назначение и состав диаграммы классов
Диаграмма классов определяет типы классов системы и различного рода статические связи, которые существуют между ними. На диаграммах классов изображаются также
атрибуты классов, операции классов и ограничения,
которые накладываются на связи между классами. Вид и интерпретация диаграммы классов существенно зависит от
точки зрения (уровня абстракции): классы могут
представлять сущности предметной области (в процессе анализа) или элементы программной системы
(в процессах проектирования и реализации).
online.mirea.ru
27
Центр дистанционного обучения
Видимость отображается с помощью следующих символов:
-"+" – общедоступный атрибут (англ. public) – доступен для чтения и модификации из объектов любого класса;
-"#" – защищенный атрибут (англ. protected) – доступен только объектам описываемого класса и его потомкам при наследовании;
-"–" – закрытый атрибут (англ. private) – доступен только объектам описываемого класса;
-"~" – пакетный атрибут (англ. package) – доступен только объектам классов, входящих в тот же пакет.
Видимость (англ. visibility) характеризует возможность чтения и модификации значения атрибута объекта описываемого класса, из объектов других классов. Модификация значения
возможна лишь при условии, что атрибут не является |
|
константой. |
Стереотип классов – это механизм, позволяющий |
|
разделять классы на категории. В языке UML определены |
|
три основных стереотипа классов: entity, boundary, |
|
control. |
|
В примере на рисунке каждый Товар имеет сколь угодно |
|
Записей в накладной, но каждая Запись в накладной |
|
обязательно один Товар. |
online.mirea.ru
28
Центр дистанционного обучения
При разработке диаграммы следует придерживаться следующих правил:
1.За основу диаграммы классов при ее разработке берется диаграмма классов анализа.
2.Для классов должны быть определены и специфицированы все атрибуты и методы. Их спецификация, как правило, выполняется с
учетом выбранного языка программирования.
3.При определении методов рекомендуется использовать сообщения с ранее разработанных диаграмм последовательности и коммуникации.
4.Детальное проектирование граничных классов, как правило, не требуется. Большинство современных средств разработки
поддерживает визуальную разработку интерфейса системы – меню, диалоговых форм, элементов диалоговых окон, панелей инструментов и
т. д. В качестве исходных данных для их проектирования служат прототипы пользовательских интерфейсов. В связи с этим при проектировании таких классов основное внимание следует уделять особенностям отображения информации и специфичным операциям,
которые возникают при диалоге пользователя с системой. Граничные классы, определяющие интерфейс взаимодействия с другими системами, требуют детального проектирования.
5. Для проектирования классов-сущностей можно применять подходы, используемые при проектировании БД, особенно в том случае,
если данные будут храниться в таблицах БД. Если представление данных в БД и классах отличается друг от друга и в качестве хранилища информации будет применяться реляционная база данных, то рекомендуется разработать отдельную диаграмму классов, описывающую
состав и структуру БД.
6. Несмотря на то, что каждому объекту при выполнении программы автоматически назначается уникальный идентификатор,
рекомендуется для классов-сущностей явно определять атрибуты, хранящие значения первичного ключа.
7. В отличие от реляционных БД поощряется использование в классах многозначных атрибутов в виде массивов, множеств, списков и т.
д.
8. Управляющие классы следует проектировать только в случаях крайней необходимости – управления сложным взаимодействием
объектов, реализации сложной бизнес-логики и вычислений, контроля целостности объектов и т. п. В противном случае функциональность |
|
|
online.mirea.ru |
этого класса лучше распределить между соответствующими граничными классами и классами-сущностями. |
29 |
|
|
Центр дистанционного обучения
В третьей секции указывается перечень операций класса. Можно выделить шесть основных типов операций:
1.конструктор – метод, создающий и инициализирующий объект. В Java имя конструктора совпадает с именем класса;
2.деструктор – метод, уничтожающий объект. В некоторых языках программирования (в частности в Java) определение деструкторов не требуется, так как очистка памяти от неиспользуемых объектов (сборка мусора) выполняется автоматически;
3.модификатор – метод, который изменяет состояние объекта (значения атрибутов). Имена модификаторов начинаются, как правило, со слова set (англ. – установить). Например, установить атрибуту Name новое значение setName (newName : String);
4.селектор – метод, который может только считывать значения атрибутов объекта, но не изменяет их. Имена селекторов начинаются, как правило, со слов get (англ. – получить) или is при возврате логического результата. Например, считать значение атрибута Name – getName() или определить видимость на экране элемента графического интерфейса – isVisible();
5.итератор – метод, позволяющий организовать доступ к элементам объекта. Например, для объекта, представляющего собой множество Set или список List, это могут быть методы перехода к первому элементу first(), следующему next(), предыдущему previous() и т. п.;
6.событие – метод, запускаемый на выполнение автоматически при соблюдении определенных условий.
online.mirea.ru
30