- •1 Определение проекта и проектирования. Основные особенности и проблемы современных программных проектов
- •2 Жизненный цикл программного обеспечения. Стандарты, регламентирующие жизненный цикл
- •3 Общие принципы проектирования систем. Модели программного обеспечения и их место в процессе проектирования
- •4 Объектная модель
- •5 Определение и история создания языка uml. Состав диаграмм uml
- •Назначение диаграммы вариантов использования. Основные обозначения. Отношения на диаграмме вариантов использования
- •Диаграмма классов. Разновидности классов. Атрибут класса. Операции класса. Отношения на диаграмме классов
- •8 Назначение диаграммы последовательности. Объекты, их графическое представление. Линия жизни и фокус управления. Особенности изображения моментов создания и уничтожения объектов
- •Проектирование классов. Проектирование баз данных
- •10 Технология создания программного обеспечения. Rational Unified Process (rup)
- •Управление требованиями;
Диаграмма классов. Разновидности классов. Атрибут класса. Операции класса. Отношения на диаграмме классов
Диаграмма классов (class diagram) — диаграмма, предназначенная для представления модели статической структуры программной системы в терминологии классов объектно-ориентированного программирования.
Диаграмма классов представляет собой граф, вершинами или узлами которого являются элементы типа “классификатор”, которые связаны различными типами структурных отношений.
Классификатор (classifier) – специальное понятие, предназначенное для классификации экземпляров, которые имеют общие характеристики.
Характеристика (feature) – понятие, предназначенное для спецификации особенностей структуры и поведения экземпляров классификаторов:
структурная характеристика (structural feature) является типизированной характеристикой классификатора, которая специфицирует структуру его экземпляров;
характеристика поведения (behavioral feature) является характеристикой классификатора, которая специфицирует некоторый аспект поведения его экземпляров.
Класс (class) – элемент модели, который описывает множество объектов, имеющих одинаковые спецификации характеристик, ограничений и семантики.
Основные обозначения на диаграмме
Варианты графического изображения класса на диаграмме классов
Разновидности классов:
абстрактный (abstract) класс не имеет экземпляров или объектов, для обозначения его имени используется наклонный шрифт (курсив);
активный класс (active class) – класс, каждый экземпляр которого имеет свою собственную нить управления;
пассивный класс (passive class) – класс, каждый экземпляр которого выполняется в контексте некоторого другого объекта.
Квалифицированное имя (qualified name) используется для того, чтобы явно указать, к какому пакету относится тот или иной класс. Для этого применяется специальный символ в качестве разделителя имени – двойное двоеточие “::”.
Имя класса без символа разделителя называется простым именем класса.
Атрибут (attribute) класса – служит для представления отдельной структурной характеристики или свойства, которое является общим для всех объектов данного класса:
<атрибут>::= [<видимость>] [‘/’] <имя> [‘:’ <тип атрибута>] [‘[‘<кратность>‘]’] [‘=’ <значение по умолчанию>] [‘{‘<модификатор атрибута> [‘,’ <модификатор атрибута>]* ’}’]
Примеры записи атрибутов:
+ имяСотрудника : String {readOnly}
~ датаРождения : Data {readOnly}
# /возрастСотрудника : Integer
+ номерТелефона : Integer [1..*] {unique}
– заработнаяПлата : Currency = 500.00
Операция (operation) класса служит для представления отдельной характеристики поведения, которая является общей для всех объектов данного класса
Общий формат записи отдельной операции класса следующий:
<операция>::=[<видимость>] <имя операции> ‘(‘ [<список параметров>] ‘)’ [‘:’ [<тип возвращаемого результата>] ‘{‘ <свойство операции> [‘,’ <свойство операции>]* ‘}’]
Примеры записи операций
добавить(in номерТелефона : Integer [*] {unique})
–изменить(in заработнаяПлата : Currency)
+создать() : Boolean
toString(return : String)
toString() : String
Отношения на диаграмме классов
Ассоциация (association) – произвольное отношение или взаимосвязь между классами
Имя конца ассоциации специфицирует роль (role), которую играет класс, расположенный на соответствующем конце рассматриваемой ассоциации
Видимость конца ассоциации специфицирует возможность доступа к соответствующему концу ассоциации с других ее концов.
Кратность конца ассоциации специфицирует возможное количество экземпляров соответствующего класса, которое может соотноситься с одним экземпляром класса на другом конце этой ассоциации.
Символ наличия навигации (navigable) изображается с помощью простой стрелки в форме буквы «V» на конце ассоциации.
Символ отсутствия навигации (non navigable) изображается с помощью буквы «X» на линии у конца ассоциации.
Ассоциация с навигацией и эквивалентное ему представление класса с атрибутом
Варианты изображения навигации и кратности у концов ассоциации
Исключающая ассоциация между тремя классами
Пример тернарной ассоциации
Пример 4-арной ассоциации
Ассоциация класс (association class) – элемент модели, который имеет свойства, как ассоциации, так и класса, и предназначенный для спецификации дополнительных свойств ассоциации в форме атрибутов и, возможно, операций класса.
Обобщение (generalization) – таксономическое отношение между более общим классификатором (родителем или предком) и более специальным классификатором (дочерним или потомком)
Примеры отношения обобщения
Множественное наследование – в языке UML разрешено
Агрегация (aggregation) – направленное отношение между двумя классами, предназначенное для представления ситуации, когда один из классов представляет собой некоторую сущность, которая включает в себя в качестве составных частей другие сущности
Пример отношения агрегации
Композиция (composition) или композитная агрегация предназначена для спецификации более сильной формы отношения "часть-целое", при которой с уничтожением объекта класса-контейнера уничтожаются и все объекты, являющимися его составными частями.
Пример отношения композиции
