Информационные системы
Шрифт:
Пакеты.
Для сложных систем возникает необходимость разбиения их на несколько составляющих, причем таким образом, чтобы это разбиение отражалось в обозначении компонентов. Для этих целей в языке UML служат пакеты (рис. 3.7).
Рис. 3.7. Графическое изображение пакета.
Компоненты, относящиеся к определенному пакету, могут быть доступны вне пакета, если указать имя компонента и его принадлежность определенному пакету через двойное двоеточие, например:
Эта запись означает, что пакет образует собственное пространство имен.
Как правило, элементы модели, входящие в пакет, логически связаны между собой.
Если количество классов в системе достаточно велико, иногда прибегают к построению диаграмм пакетов, разбивая систему на части на более высоком уровне, чем диаграммы классов.
Диаграмма классов.
Под классом в языке UML понимается множество объектов, обладающих одинаковой структурой, свойствами, отношениями с другими объектами.
Графически в самом общем виде класс представляется в виде прямоугольника с четырьмя секциями (на рис. 3.8, а показан формат, на рис. 3.8, б – пример). Любая из секций, кроме секции имени класса, может отсутствовать. В этом случае она не изображается либо оставляется пустой. Как правило, на начальном этапе проектирования разработчик располагает только общими представлениями о будущей структуре системы. В дальнейшем, по мере разработки, уточняются роли, свойства каждого класса, что находит отражение на соответствующих диаграммах классов.
Абстрактным классом называется класс, который не имеет экземпляров. Абстрактные классы весьма удобно использовать при конструировании иерархии в качестве промежуточных классов. Все, что касается абстрактных классов, в языке UML выделяется курсивом (в нотации Буча абстрактный класс помечается буквой A в треугольнике, обращенном вершиной вниз).
Рис. 3.8. Графическое изображение класса.
Имя класса в языке UML принято писать полужирным шрифтом в самой верхней секции графического изображения класса (имя абстрактного класса – полужирным шрифтом и курсивом). Здесь же указывается информация об отношениях этого класса к абстрактным классам, от которых он образован, а также служебная информация о процессе проектирования класса (лицо, ответственное за проектирование класса, язык реализации, номер версии и т. д.).
Свойства класса определяют состояние экземпляров класса (объектов). В общем виде формат записи свойства можно представить в виде строки:
Ниже перечислены аргументы этой строки.
• видимость – видимость свойства для других классов. Допустимые значения:
– public (или знак +) – свойство класса доступно любому другому классу;
– protected (или знак #) – свойство класса доступно только экземплярам этого класса и потомкам данного класса;
– private (или знак —) – свойство класса доступно только экземплярам этого класса.
Отсутствие указания на категорию доступа означает, что видимость не указывается.
Примечание.
Как уже отмечалось, диаграмма классов может использоваться для автоматической генерации программного кода на выбранном языке программирования. Следует иметь в виду, что в разных языках значения видимости свойства (атрибута), задаваемые по умолчанию, разные.
• тип_свойства – тип свойства. Этот тип выбирается, исходя из языка реализации проекта (С++, Delphi, Java и других).
• кратность – диапазон принимаемых свойством значений с учетом типа. Так, если в качестве кратности свойства имя_клиента указан диапазон 1..5 и тип String, то это свойство может принимать, например, следующие значения: Иван Петров, Уильям Джефферсон Клинтон, Мехти Асадулла оглы Мамедов, то есть значения, содержащие не более 5 слов. Если же в качестве кратности свойства доход указан диапазон 0..* и тип Currency, значение этого свойства может принимать любое положительное значение в денежном формате.
• значение_по_умолчанию – начальное значение свойства, которое в последующем можно изменить программно. Если в строке определения свойства вместо одного знака равенства (=) указать два (==), то значение по умолчанию программно изменить будет нельзя.
Например, следующая запись для свойства класса Менеджер означает, что по умолчанию всем сотрудникам, замещающим эту должность, первоначально устанавливается заработная плата 700 долларов.
Примечание.
Язык UML помимо проектирования информационных систем нашел применение в сфере аналитики бизнеса. Отображенная на диаграммах структура фирмы и ее деятельности позволяет выявить, например, перегруженность определенных отделов, участки, тормозящие принятие управленческих решений. На основе полученных данных вырабатываются рекомендации по совершенствованию деятельности организаций. UML-диаграммы в этом случае служат инструментом анализа и иллюстрациями сделанных выводов.
Методы класса служат для обработки свойств класса и характеризуют поведение экземпляров класса.
Формат записи метода выглядит так:
Ниже перечислены аргументы этой строки.
• видимость – этот аргумент определяется аналогично видимости свойств.
• имя_метода – идентификатор метода.
• список параметров – перечень разделенных запятой формальных параметров.
Наличие круглых скобок обязательно. Каждый из формальных параметров может быть представлен в следующем виде:
Здесь:
– вид_параметра – входной (передаваемый методу), выходной (возвращаемый методом) или универсальный (значение параметра может изменяться методом) параметр (обозначается соответственно in, out или inout);
– тип_параметра – тип параметра, определяемый языком реализации класса.
• тип_значения – тип значения. Определяется языком реализации класса.
• строка-свойство – значения свойств, которые могут относиться к данному параметру. Метод, не изменяющий состояние объекта, обозначается строкой-свойством {query}. Строка-свойство {concurrency = sequential} указывает на необходимость обращения к методу во время вызова другого метода, строка-свойство {concurrency = concurrent} – на возможность параллельного вызова методов. Строка-свойство {concurrency = guarded} обращает внимание на необходимость принятия дополнительных мер по контролю исключительных ситуаций.