Чтение онлайн

ЖАНРЫ

Информационные системы

Петров Владимир Николаевич

Шрифт:

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

• Абстрактные методы, то есть методы, не задействованные в данном классе, выделяются курсивом или помечаются строкой-свойством {abstract}.

Примером обозначения метода «открыть» класса File служить запись:

+ open

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

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

издать приказ (сотрудник): приказ по форме 1-А {"отпуск"}

В нотации UML между компонентами диаграммы классов могут существовать различные отношения.

• Отношение зависимости (dependency relationship) указывает на общую взаимосвязь компонентов диаграммы. Графически эта связь изображается пунктирной стрелкой от зависимого класса к независимому (рис. 3.9).

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


Ключевое слово (стереотип) над стрелкой означает, что свойства класса Кредит, в частности сумма кредита, выдаваемая банком заемщику, может быть определена, исходя из характеристик заемщика (свойств класса Клиент): ежемесячного дохода, возраста и других. Ключевое слово является необязательным элементом. Помимо значения «derive», оно может принимать следующие значения:

– «access» – указывает на доступность свойств и методов независимого класса для зависимого;

– «import» – открытые свойства и методы независимого класса (источника) становятся частью зависимого класса, как если бы они были объявлены непосредственно в нем;

– «bind» – класс может использовать другой класс в качестве шаблона;

– «refine» – зависимый класс уточняет класс-источник в силу исторических причин.

• Отношение ассоциации (association relationship) устанавливает некоторую связь между классами системы. Графически это отношение обозначается сплошной линией между классами (рис. 3.10).

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


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

Отношение ассоциации может связывать большее количество классов (N-арная ассоциация). На диаграмме классов такая ассоциация изображается ромбом (рис. 3.11).

Рис. 3.11. N-арная ассоциация.


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

Частными случаями отношений ассоциации являются исключающая ассоциация, агрегация и композиция:

– исключающая ассоциация (xor-association) указывает на возможность связи определенного класса только с одним из нескольких классов (рис. 3.12);

– отношение агрегации означает включение нескольких классов в другой класс (графически отношение агрегации показано на рис. 3.13 и означает, что в состав класса Сервиз в качестве самостоятельных единиц могут входить тарелки и другие столовые приборы);

Примечание.

Не все языки программирования поддерживают такие конструкции.

Рис. 3.12. Графическое изображение исключающей ассоциации.


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


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

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


• Отношение обобщения (generalization relationship) показывает, что компонент (пользователь или прецедент) является частным случаем другого компонента. Графически это отношение обозначается непрерывной стрелкой от частного к общему (рис. 3.15). Отношениями обобщения иллюстрируется наследование классов.

Рис. 3.15. Графическое изображение отношения обобщения.


В приведенном примере класс Рыбные консервы наследует свойства и методы более общего класса Товар. Язык UML является средством документирования и иллюстрирования удачных идей и решений в области проектирования информационных систем. Так, диаграмма, представленная на рис. 3.16, выражает идею множественного наследования, реализованную в некоторых языках программирования.

Рис. 3.16. Множественное наследование.


Классы Рыбные консервы и Тушенка наследуют свойства и методы более общих классов Товар и Консервы, в то же время они наследуют соответственно свойства и методы классов Рыба и Мясо (последние принято называть «примесными классами»). Такое решение может значительно упростить процесс разработки информационной системы, сделать ее более устойчивой к вносимым изменениям за счет сокращения избыточности и локализации общих структур.

Примечание.

Множественное наследование классов реализовано далеко не во всех языках программирования. В языке С++ наследование поддерживается, в языке Object Pascal – нет. Отказ от поддержания множественного наследования обусловлен возможностью возникновения ситуации, когда два или несколько классов, имея единого предка, по-разному реализуют одноименный метод, поэтому при множественном наследовании возникнет проблема выбора той или иной реализации метода (рис. 3.17), которую придется разрешать «вручную» (как это делается в С++).

Рис. 3.17. Проблема множественного наследования классов.


• Отношение обобщения может содержать поясняющий его идентификатор:

– {complete} – на диаграмме показаны все классы-потомки;

– {incomplete} – на диаграмме указаны не все классы-потомки;

– {disjoint} – множественное наследование не допускается;

– {overlapping} – множественное наследование допускается.

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

Поделиться с друзьями: