<<
>>

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

Под классом в языке иМЬ понимается множество объектов, обладающих одина­ковой структурой, свойствами, отношениями с другими объектами.

Графически в самом общем виде класс представляется в виде прямоугольника с че­тырьмя секциями (на рис.

3.8, а показан формат, на рис. 3.8, б — пример). Любая из секций, кроме секции имени класса, может отсутствовать. В этом случае она не изображается либо оставляется пустой. Как правило, на начальном этапе проек­тирования разработчик располагает только общими представлениями о буду­щей структуре системы. В дальнейшем, по мере разработки, уточняются роли, свой­ства каждого класса, что находит отражение на соответствующих диаграммах классов.

Абстрактным классом называется класс, который не имеет экземпляров. Абстракт­ные классы весьма удобно использовать при конструировании иерархии в каче­стве промежуточных классов. Все, что касается абстрактных классов, в языке 11МЬ выделяется курсивом (в нотации Буча абстрактный класс помечается буквой А в треугольнике, обращенном вершиной вниз).

а б

Рис. 3.8. Графическое изображение класса

Имя класса в языке UML принято писать полужирным шрифтом в самой верхней секции графического изображения класса (имя абстрактного класса — полужир­ным шрифтом и курсивом). Здесь же указывается информация об отношениях этого класса к абстрактным классам, от которых он унаследован, а также служебная ин­формация о процессе проектирования класса (лицо, ответственное за проектиро­вание класса, язык реализации, номер версии и т. д.).

Свойства класса определяют состояние экземпляров класса (объектов). В общем виде формат записи свойства можно представить в виде строки

видимость имя_свойства [кратность] : тип_свойства = значение_по_умолчанию Ниже перечислены аргументы этой строки.

? видимость — видимость свойства для других классов. Допустимые значения:

■ public (или знак +) — свойство класса доступно любому другому классу;

■ protected (или знак #) — свойство класса доступно только экземплярам это­го класса и потомкам данного класса;

■ private (или знак -) — свойство класса доступно только экземплярам этого класса.

Отсутствие указания на категорию доступа означает, что видимость не указы­вается.

ПРИМЕЧАНИЕ------------------------------------------------------------------------------

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

? тил_свойства — тип свойства. Этот тип выбирается, исходя из языка реализации проекта (C++, Delphi, Java и других).

? кратность — диапазон принимаемых свойством значений с учетом типа. Так, если в качестве кратности свойства имя_клиента указан диапазон 1..5 и тип String, то это свойство может принимать, например, следующие значения: Иван Петров, Уильям Джефферсон Клинтон, Мехти Асадулла оглы Мамедов, то есть значения, со­держащие не более 5 слов. Если же в качестве кратности свойства доход указан диапазон 0..* и тип Currency, значение этого свойства может принимать любое положительное значение в денежном формате.

? значение_по_умолчанию — начальное значение свойства, которое в последующем можно изменить программно. Если в строке определения свойства вместо од­ного знака равенства (=) указать два (—), то значение по умолчанию программ­но изменить будет нельзя.

Например, следующая запись для свойства класса Менеджер означает, что по умол­чанию всем сотрудникам, замещающим эту должность, первоначально устанавли­вается заработная плата 700 долларов:

Заработная плата [0..*] : Currency = 700 $

ПРИМЕЧАНИЕ------------------------------------------------------------------------------

Язык UML помимо проектирования информационных систем, нашел применение в сфере аналитики бизнеса.

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

Методы класса служат для обработки свойств класса и характеризуют поведение экземпляров класса.

Формат записи метода выглядит так:

видимость имя_метода (список параметров) : тип_значения {строка-свойство}

Ниже перечислены аргументы этой строки.

? видимость — этот аргумент определяется аналогично видимости свойств.

? имя_метода — идентификатор метода.

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

вид_параметра имя_параметра : тип_параметра = значение_по_умолчанию Здесь

■ вид_параметра — входной (передаваемый методу), выходной (возвращаемый методом) или универсальный (значение параметра может изменяться мето­дом) параметр (обозначается соответственно in, out или inout);

■ тип_параметра — тип параметра, определяемый языком реализации класса.

? тип_значения — тип значения. Определяется языком реализации класса.

О строка-свойство — значения свойств, которые могут относиться к данному па­раметру. Метод, не изменяющий состояния объекта, обозначается строкой- свойством {query}. Строка-свойство {concurrency = sequential} указывает на необходимость обращения к методу во время вызова другого метода, стро­ка-свойство {concurrency = concurrent} — на возможность параллельного вы­зова методов. Строка-свойство {concurrency = guarded} обращает внимание на необходимость принятия дополнительных мер по контролю исключитель­ных ситуаций.

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

По умолчанию областью действия метода оп­ределяется экземпляр класса (объект). В данном случае изменение цвета фона окна (формы) затронет только это окно.

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

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

+ open ( )

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

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

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

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

различные отношения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ПРИМЕЧАНИЕ----------------------------------------------------------

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

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

Рис.

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

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

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

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

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

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

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

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

ПРИМЕЧАНИЕ------------------------------------------------------------------------------

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

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

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

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

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

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

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

Помимо классов, на диаграммах классов могут присутствовать интерфейсы, объек­ты (экземпляры классов) и параметризированные классы (метаклассы, шаблоны). Интерфейс на диаграмме классов показывается прямоугольником с двумя секция­ми (рис. 3.18, а). В первой записываются имя интерфейса, ключевое слово «interface» и служебная информация. Вторая секция предназначена для записи методов интерфейса.

Под объектом в языке иМЬ понимается отдельный экземпляр, или пример, клас­са, структура и поведение которого полностью определяется порождающим этот объект классом. Объекты показываются прямоугольниками, как и классы, при этом имя объекта подчеркивается и Содержит указание на класс объекта (рис. 3.18, б). Параметр из ированный класс (метакласс, шаблон) представляет собой семейство клас­сов, каждый член которого может отличаться от других каким-либо параметром, ука­зываемым в пунктирной рамке в правом верхнем углу изображения класса (рис. 3.19, а).

a б

Рис. 3.19. Графическое изображение метакласса

В примере на рис. 3.19, б метакласс может служить основой для создания классов Счет в рублях, Счет в долларах США, Счет в евро или Мультивалютный счет.

<< | >>
Источник: Избачков Ю. С., Петров В. Н.. Информационные системы. 2006

Еще по теме Диаграмма классов:

  1. Девятый сеанс Диаграмма трат, ее зарядка “небесной энергией”
  2. Школьный класс
  3. Одиночки в классе
  4. ПЕРВЫЙ КЛАСС
  5. ПЯТЫЙ КЛАСС
  6. 6.3. Женщина высшего класса
  7. 5. Критическая теория и рабочий класс.
  8. Глава 13. INTJ «Компетентность + независимость = высший класс»
  9. Масса, демократия и рабочий класс
  10. СРАВНИТЕЛЬНАЯ СИСТЕМА КЛАССОВ
  11. ПОТЕНЦИАЛЬНЫЕ ВОЗМОЖНОСТИ ШКОЛЬНОГО КЛАССА КАК ГРУППЫ
  12. 2. Постарайтесь вникнуть в проблему «единственный ребенок – класс»
  13. Статья 54. Лишение воинского, специального звания, ранга, чина или квалификационного класса
  14. 40. Основные теоретические подходы в определении классов. Немарксистские подходы
  15. § 27 Усыновление по русскому закону. – Формы усыновления и его действие. – Приписка в податных классах. – Усыновление в прибалтийских губерниях.
  16. § 33 Общее правило о переходе наследства к детям. – Отличие отделенных от неотделенных. – Право представления. – Право родительское. – Право боковых родственников. – Римская система определения прав по классам и степеням. – Германская система определения прав по линиям и коленам.
  17. Приложение 1 Откуда берется пораженческое поведение
  18. ПОНЯТИЕ: ОБЪЁМ