Диаграмма классов (class diagram). Объект Объект (object) – это некоторая сущность реального мира Объект обладает тремя характеристиками: состоянием,

Презентация:



Advertisements
Похожие презентации
Диаграммы UML Диаграмма классов (Class Diagram). Основные вопросы Что такое диаграмма классов Компоненты диаграммы классов и их назначение Пример диаграммы.
Advertisements

8. Моделирование логической структуры системы Диаграмма классов Диаграмма классов служит для моделирования классов и отношений между ними.
Докладчик: Проектирование информационных систем всегда начинается с определения цели проекта. Основная задача любого успешного проекта.
WORK WITH UML Универсальный язык моделирования (UML) Studybook for students Author Dudnik Oxana.
1 Диаграммы реализации (implementation diagrams).
Методология объектно- ориентированного программирования.
Методология IDEF1X (IDEF1 Extended) – язык для семантического моделирования данных, основанных на концепции « сущность - связь ». Является расширением.
В. Дихтяр ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ (для бакалавров) Российский университет дружбы народов Институт гостиничного бизнеса и туризма Раздел 1.Разработка.
Объектно-ориентированный анализ и дизайн Copyright © Мухортов В. В., Няньчук-Татарский Н. А., Copyright © ООО «Интекс»,
В. И. Дихтяр ИНФОРМАТИКА Российский университет дружбы народов Институт гостиничного бизнеса и туризма Раздел 3Моделирование объектов и процессов и его.
Моделирование данных Модель «сущность-связь». Рассматриваемые вопросы: Элементы модели «сущность-связь» Диаграммы «сущность-связь» Слабые сущности Подтипы.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Элементы модели «сущность-связь» Сущность - Класс сущностей - Экземпляр сущности Атрибуты - Композитные атрибуты - Многозначные атрибуты Идентификаторы.
Мельников П.П. Кафедра Информационные технологии П.П. Мельников.
Теория экономических информационных систем Семантические модели данных.
Технология программирования в историческом аспекте.
Разработка объектно- ориентированного ПО Итеративная модель разработки (развитие водопадной модели) анализ проектирование кодирование тестирование.
4. Моделирование функциональных требований к системе.
7. Классы и отношения между ними Классы Класс это реализация типа объектов, т.е. класс определяет множество объектов и множество операций, допустимых.
Диаграммы UML Диаграмма вариантов использования. Основные вопросы Назначение диаграммы вариантов использования Компоненты диаграммы вариантов использования.
Транксрипт:

Диаграмма классов (class diagram)

Объект Объект (object) – это некоторая сущность реального мира Объект обладает тремя характеристиками: состоянием, поведением, индивидуальностью Состояние (state) определяется набором свойств, называемых атрибутами (attribute), и их значениями Студент имеет атрибуты номер зачетной книжки, фамилию, адрес Поведение (behavior) определяет что может делать сам объект и что могут делать другие с данным объектом. Поведение реализуется с помощью набора операций. Для объекта учебный курс могут быть определены операции добавить студента, удалить студента. Индивидуальность (identity) означает, что один объект всегда можно отличить от другого объекта, т.е. каждый объект уникален. Объекты отличаются друг от друга значениями атрибутов. Два студента всегда будут различаться по номеру зачетки, даже если они однофамильцы и живут по одному адресу Объект может быть связан некоторыми отношениями с другими объектами. Студент записывается на определенные курсы лекций

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

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

Графическое изображение класса Класс изображается в виде прямоугольника, разделенного на 3 части: имя, атрибуты, операции На изображении класса всегда указывается имя. Остальные части могут отсутствовать Не обязательно сразу показывать все его атрибуты и операции. Их может быть слишком много для одного рисунка. Класс обычно сворачивают, то есть изображают лишь некоторые из имеющихся атрибутов и операций, или не изображают их совсем. Пустой раздел в соответствующем месте прямоугольника может означать не отсутствие атрибутов или операций, а только то, что их не сочли нужным изобразить. Явным образом наличие дополнительных атрибутов или операций можно обозначить, поставив в конце списка многоточие.

Класс Учебный курс

Описание атрибутов (attributes) Имя атрибута – текстовая строка, которая используется для обозначения атрибута. Оно должно быть уникальным в пределах класса. Имя – единственный обязательный элемент при описании атрибута фамилия_студента, название_курса Тип (type) определяет множество допустимых значений атрибута. Допустимые типы определяются языком программирования, который будет использоваться для реализации системы. string, float, int Множественность (multiplicity) – количество атрибутов данного типа [0..1], [0..*], [1..*], [1..5] фамилия_имя_отчество [1..3]: string Видимость (visibility) определяет доступность атрибута из других классов. Возможные значения: + – общедоступный (public) атрибут. Доступен из любого класса данного пакета # – защищенный (protected) атрибут. Недоступен для других классов, за исключением подклассов данного класса. - - закрытый (private) атрибут. Недоступен для всех классов. Может использоваться только операциями данного класса. Начальное значение (initial value) – значение, которое принимает атрибут при создании объекта данного класса номер_семестра: int = 1

Описание операций (operations) Имя операции – текстовая строка, которая используется для обозначения операции. Оно должно быть уникальным в пределах класса. Имя – единственный обязательный элемент при описании операции Список параметров (parameters) – набор параметров, которые использует операция. Параметр описывается именем, типом, видом. Вид параметра (kind) принимает одно из значений: in – входной параметр оut – выходной параметр inout – входной параметр, значение которого может быть изменено Тип возвращаемого значения (return type) – тип возвращаемого значения после выполнения операции Видимость (visibility) определяет доступность операций из других классов. Возможные значения: + – общедоступная (public) операция. Доступна из любого класса данного пакета # – защищенная (protected) операция. Недоступна для других классов, за исключением подклассов данного класса. - - закрытая (private) операция. Недоступна для всех классов. Может использоваться только операциями данного класса. Свойство параллельности (call concurrency). Возможные значения свойства: последовательная (sequential) – к операции должны обращаться последовательно. Если к операции обратятся несколько параллельных процессов, то система не гарантирует правильность ее выполнения. параллельная (concurrent) – к операции могут одновременно обращаться несколько параллельных процессов охраняемая (guarded) – если к операции будут обращаться несколько параллельных процессов, то операция будет выполнена только для одного из них, остальные будут блокированы. Свойство полиморфизма (Polymorphic) означает, что данная операция может быть переопределена в подклассе Свойство запрос (Query) означает, что данная операция не меняет состояние системы

Отношения между классами (relationships) Отношение зависимости (dependency) Отношение ассоциации (association) Отношение агрегации (aggregation) Отношение композиции (composition) Отношение обобщения (generalization)

Отношение зависимости (dependency) Отношение зависимости используется, когда некоторое изменение одного элемента может потребовать изменения другого зависимого от него элемента модели. На диаграмме классов таким элементом является класс. Класс_B является источником некоторой зависимости, а Класс_А - клиентом этой зависимости Один класс (A) может зависеть сразу от нескольких классов (B и C)

Стереотипы для отношения зависимости Для большинства отношений достаточно обычной зависимости без каких-либо дополнений. Но если необходимо выделить некоторую особенность, то в UML определен целый ряд стереотипов, применимых к зависимостям. Например: "bind" - класс-клиент может использовать некоторый шаблон для своей последующей параметризации; "derived" - атрибуты класса-клиента могут быть вычислены по атрибутам класса-источника; "import" - открытые атрибуты и операции класса-источника становятся частью класса-клиента, как если бы они были объявлены непосредственно в нем; "refine" - указывает, что класс-клиент служит уточнением класса- источника в силу причин исторического характера, когда появляется дополнительная информация в ходе работы над проектом. friend- указывает, что классу-клиенту доступны все атрибуты и операции класса-источника не зависимо от их видимости.Этот стереотип используется для моделирования отношений, подобных отношениям между классом и его друзьями в языке C++;

Отношение ассоциации (association) Отношение ассоциации соответствует наличию некоторого отношения между классами. Бинарная ассоциация связывает два класса и, как исключение, может связывать класс с самим собой. Направление ассоциации (стрелка) указывает порядок следования классов в ассоциации. Сотрудник работает на предприятии. Множественность (multiplicity) "1" для класса Предприятие" означает, что каждый сотрудник может работать только в одной компании. Множественность "1..*" для класса "Сотрудник" означает, что на предприятии могут работать несколько сотрудников, общее число которых заранее неизвестно и ничем не ограничено. Объект класса играет определенную роль в ассоциации. Предприятие выступает в роли работодателя, а сотрудник в роли работника.

N-арная ассоциация В отношении ассоциации могут участвовать N классов.

Ассоциация-класс Некоторый класс может быть присоединен к ассоциации пунктирной линией. Это означает, что данный класс обеспечивает поддержку свойств соответствующей N-арной (в частном случае бинарной) ассоциации, а сама N-арная ассоциация имеет атрибуты, операции и/или ассоциации. Такая ассоциация сама является классом с соответствующим обозначением в виде прямоугольника и является самостоятельным элементом языка UML - ассоциацией-классом (Association Class).

Пример ассоциации-класса для тернарной связи

Отношение агрегации (aggregation) Отношение агрегации имеет место между несколькими классами в том случае, если один из классов представляет собой некоторую сущность, включающую в себя в качестве составных частей другие сущности Отношение агрегации показывает, из каких компонентов состоит система и как они связаны между собой. Это отношение позволяет описать декомпозицию или разбиение сложной системы на более простые составные части, которые также могут быть подвергнуты декомпозиции Агрегация в Visio задается с помощью отношения ассоциации со значением shared для поля Aggregation в свойствах отношения

Пример агрегации

Отношение композиции (composition) Отношение композиции является частным случаем отношения агрегации. Это отношение служит для выделения специальной формы отношения "часть-целое", при которой составляющие части в некотором смысле находятся внутри целого. Специфика взаимосвязи между ними заключается в том, что части не могут выступать в отрыве от целого, т. е. с уничтожением целого уничтожаются и все его составные части Композиция в Visio задается с помощью отношения ассоциации со значением scomposite для поля Aggregation в свойствах отношения

Отношение обобщения (generalization) Отношение обобщения является отношением между более общим элементом (родителем или предком) и более частным или специальным элементом (дочерним или потомком) Отношение обобщения описывает иерархическое строение классов и наследование их свойств и поведения. Класс-потомок обладает всеми свойствами и поведением класса-предка, а также имеет свои собственные свойства и поведение, которые отсутствуют у класса-предка.

Пример отношения обобщения

Абстрактный класс Абстрактный класс (abstract class) – это класс, у которого нет экземпляров, т.е. нельзя создать объект этого класса Абстрактный класс нуждается в уточнении. Требуется создать потомок абстрактного класса, для которого можно создавать объекты Класс, у которого не реализована хотя бы одна операция, автоматически является абстрактным Класс, у которого реализованы все операции может быть абстрактным, но это нужно специально указать

Пример абстрактного класса Абстрактный класс Letter (письмо) содержит операции: –getNextSentence - возвращает текст следующего не прочитанного предложения (это абстрактная функция) –resetCursor – устанавливает курсор в начало текста Конкретные классы: –EncryptedLetter (зашифрованное письмо) –NonEncryptedLetter (не зашифрованное письмо) Содержат реализацию функции getNextSentence

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

Примеры интерфейсов

Параметризованный класс (parametrized class) Параметризованный класс или шаблон (template) предназначен для обозначения такого класса, который имеет один или несколько формальных параметров. Параметризованный класс определяет целое семейство или множество классов, каждый из которых может быть получен связыванием этих параметров с действительными значениями. Параметрами шаблонов могут быть классы или значения. Шаблон не может быть непосредственно использован в качестве класса, поскольку содержит неопределенные параметры. В качестве шаблона выступает некоторый суперкласс, параметры которого уточняются в его классах-потомках. Между ними существует отношение зависимости с ключевым словом "bind", когда класс-клиент может использовать некоторый шаблон для своей последующей параметризации.

Пример параметризованного класса

Объекты Объект (object) является отдельным экземпляром класса, который создается на этапе выполнения программы. Он имеет свое собственное имя и конкретные значения атрибутов. Между объектами существуют те же связи, что и между классами модели. Все связи между объектами изображаются сплошными линиями с помощью связей Link Объекты также могут присутствовать на других диаграммах UML (диаграмме деятельности, диаграммах взаимодействия)

Пример объекта квадрат

Пакеты Пакет (package)- это способ организации элементов модели в более крупные блоки У каждого пакета должно быть имя, отличающее его от других пакетов. Пакет может владеть другими элементами, в том числе классами, интерфейсами, компонентами, диаграммами и даже другими пакетами. Пакеты отображают архитектуру всей системы (ее деление на подсистемы и зависимости между ними) Графическое изображение пакета.

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