Диаграммы классов UML. Логическое моделирование

Автор работы: Пользователь скрыл имя, 03 Марта 2013 в 13:08, реферат

Описание

Диаграммы классов используются при моделировании ПС наиболее часто. Они являются одной из форм статического описания системы с точки зрения ее проектирования, показывая ее структуру. Диаграмма классов не отображает динамическое поведение объектов изображенных на ней классов. На диаграммах классов показываются классы, интерфейсы и отношения между ними.

Работа состоит из  1 файл

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

— 137.46 Кб (Скачать документ)

Диаграммы классов UML. Логическое моделирование

Диаграммы классов  используются при моделировании  ПС наиболее часто. Они являются одной  из форм статического описания системы  с точки зрения ее проектирования, показывая ее структуру. Диаграмма  классов не отображает динамическое поведение объектов изображенных на ней классов. На диаграммах классов  показываются классы, интерфейсы и  отношения между ними.

Представление классов

Класс – это основной строительный блок ПС. Это понятие  присутствует и в ОО языках программирования, то есть между классами UML и программными классами есть соответствие, являющееся основой для автоматической генерации  программных кодов или для  выполнения реинжиниринга. Каждый класс  имеет название, атрибуты и операции. Класс на диаграмме показывается в виде прямоугольника, разделенного на 3 области. В верхней содержится название класса, в средней –  описание атрибутов (свойств), в нижней – названия операций – услуг, предоставляемых  объектами этого класса.

  
Рис.1. Изображение класса в нотации UML

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

Для каждого атрибута класса можно задать видимость (visibility). Эта характеристика показывает, доступен ли атрибут для других классов. В UML определены следующие уровни видимости  атрибутов:

    • Открытый (public) – атрибут виден для любого другого класса (объекта);
    • Защищенный (protected) – атрибут виден для потомков данного класса;
    • Закрытый (private) – атрибут не виден внешними классами (объектами) и может использоваться только объектом, его содержащим.

Последнее значение позволяет реализовать свойство инкапсуляции данных. Например, объявив  все атрибуты класса закрытыми, можно  полностью скрыть от внешнего мира его данные, гарантируя отсутствие несанкционированного доступа к ним. Это позволяет сократить число ошибок в программе. При этом любые изменения в составе атрибутов класса никак не скажутся на остальной части ПС.

Класс содержит объявления операций, представляющих собой определения запросов, которые должны выполнять объекты данного класса. Каждая операция имеет сигнатуру, содержащую имя операции, тип возвращаемого значения и список параметров, который может быть пустым. Реализация операции в виде процедуры – это метод, принадлежащий классу. Для операций, как и для атрибутов класса, определено понятие «видимость». Закрытые операции являются внутренними для объектов класса и недоступны из других объектов. Остальные образуют интерфейсную часть класса и являются средством интеграции класса в ПС.

Отношения

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

Каждая ассоциация несет информацию о связях между объектами внутри ПС. Наиболее часто используются бинарные ассоциации, связывающие два класса. Ассоциация может иметь название, которое должно выражать суть отображаемой связи (см. рис. 2). Помимо названия, ассоциация может иметь такую характеристику, как множественность. Она показывает, сколько объектов каждого класса может участвовать в ассоциации. Множественность указывается у каждого конца ассоциации (полюса) и задается конкретным числом или диапазоном чисел. Множественность, указанная в виде звездочки, предполагает любое количество (в том числе, и ноль). Например, на рис.2 ассоциация связывает один объект класса «Набор товаров» с одним или более объектами класса «товар». Связаны между собой могут быть и объекты одного класса, поэтому ассоциация может связывать класс с самим собой. Например, для класса «Житель города» можно ввести ассоциацию «Соседство», которая позволит находить всех соседей конкретного жителя.

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

Ассоциация сама может обладать свойствами класса, то есть, иметь атрибуты и операции. В этом случае она называется класс-ассоциацией  и может рассматриваться как  класс, у которого помимо явно указанных  атрибутов и операций есть ссылки на оба связываемых ею класса. В  примере на рис.2 ассоциация «включает» по существу есть класс-ассоциация, у  которой есть атрибут «Количество», показывающий, сколько единиц каждого  товара входит в набор (см. рис.4).

Обобщение на диаграммах классов используется, чтобы показать связь между классом-родителем и классом-потомком. Оно вводится на диаграмму, когда возникает разновидность какого-либо класса (например, при развитии ПС – см. рис.4), а также в тех случаях, когда в системе обнаруживаются несколько классов, обладающих сходным поведением (в этом случае общие элементы поведения выносятся на более высокий уровень, образуя класс-родитель – см. рис.3).

  
Рис.3 Наследуются атрибуты и операции

Как уже говорилось ранее, UML позволяет строить модели с различным уровнем детализации. На рис.4 показана детализация модели, представленной на рис.2.

  
Рис. 4 Детализация модели набора товаров  
Обобщение показывает, что набор товаров – это тоже товар, который может быть предметом заказа, продажи, поставки и т.д. Набор включает опись, в которой указывается, какие товары входят в набор, а класс-ассоциация «включает» определяет количество каждого вида товаров в наборе.

Стереотипы  классов

При создании диаграмм классов часто пользуются понятием «стереотип». В дальнейшем речь пойдет о стереотипах классов.Стереотип класса – это элемент расширения словаря UML, который обозначает отличительные особенности в использовании класса. Стереотип имеет название, которое задается в виде текстовой строки. При изображении класса на диаграмме стереотип показывается в верхней части класса в двойных угловых скобках. Есть четыре стандартных стереотипа классов, для которых предусмотрены специальные графические изображения (см. рис.5).

Стереотип используется для обозначения классов-сущностей (классов данных), стреотип описывает пограничные классы, которые являются посредниками между ПС и внешними по отношению к ней сущностями – актерами, обозначаемыми стереотипом <>. Наконец, стереотип описывает классы и объекты, которые управляют взаимодействиями. Применение стереотипов позволяет, в частности, изменить вид диаграмм классов.

  
Рис.5 Стереотипы для классов 

Применение  диаграмм классов

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

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

 

Диаграммы вариантов использования

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

Целями анализа  и моделирования требований являются:

    • достижение соглашения между разработчиками, заказчиками и пользователями о том, что должна делать ПС;
    • достижение лучшего понимания разработчиками поведения ПС;
    • ограничение системной функциональности;
    • создание базиса для планирования разработки проекта;
    • определение пользовательского интерфейса.

Для достижения этих целей используются диаграммы вариантов  использования UML (Use case diagrams).

Общие сведения о диаграммах вариантов использования

На диаграммах вариантов  использования (ВИ) изображаются актеры и варианты использования, между которыми существуютотношения. Здесь можно показывать и другие элементы UML (например, классы могут показывать, какие сущности порождаются или используются в конкретных ВИ – см. рис.1).

  
Рис.1. Диаграмма вариантов использования 

Актеры

Актером будем называть внешнюю по отношению к ПС сущность, которая может взаимодействовать с системой. Актерами могут быть как люди, так и внешние системы или устройства. Следует всегда помнить, что актер – это не конкретный человек или устройство, а роль (должностная обязанность), в которой он выступает по отношению к программной системе. Например, в качестве актера «Бухгалтер» может выступать весь наличный штат бухгалтерии. В то же время один конкретный человек может играть несколько ролей по отношению к системе. Главный бухгалтер может выступать как актер с таким же именем, но может использовать систему так же, как актер «бухгалтер» (то есть, выполнять работу обычного бухгалтера). В то же время актеры – не обязательно люди. Если ПС должна выполнять какие-либо действия в определенные моменты времени, то в качестве актера, инициирующего выполнение этих действий, может быть указан системный таймер.

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

Варианты  использования

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

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

Лучший путь к  нахождению ВИ – рассмотреть, что  требует каждый актер от системы. Следует помнить, что система  существует только для пользователей  и должна строиться, исходя из их потребностей.

Каждый ВИ должен иметь название, отвечающее его назначению. Название должно отражать, что достигается при взаимодействии с актерами. На диаграммах ВИ изображается в виде овала.

Отношения

Ассоциация – единственно возможная связь между актером и ВИ. Она показывает, что актер и ВИ общаются друг с другом, посылая и получая сообщения. Если ассоциация направленная, она показывает направление передачи сообщения. На рис.2а оператор инициирует начало выполнения ВИ открытия нового счета.

Отношения между  ВИ служат для извлечения из ВИ характерных  фрагментов, которые могут рассматриваться  как отдельные абстрактные ВИ. Примерами таких частей могут  быть общие фрагменты, необязательные фрагменты и исключения.

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

Информация о работе Диаграммы классов UML. Логическое моделирование