Лекция 2. Основные определения ООП.

Введение в UML. Краткая историческая справка. Диаграммы классов, диаграммы последовательностей.

 

 

UML появился на волне развития объектно-ориентированных технологий анализа и дизайна в конце 80-ых начале 90-ых годов. UML стандартизован OMG (Object Management Group) и на настоящий момент является стандартом.

 

UML это язык моделирования а не метод.

 

UML определяется нотацией (т.е. синтаксисом) и метамоделью (набором диаграмм).

 

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

  • Необходимость в коммуникации между разработчиками (включая документацию);
    • Обычный язык слишком неточен для обсуждения концептов дизайна, в то время как язык программирования слишком детальный. UML позволяет опустить незначимые детали и подчеркнуть значимые.
  • Обучение объектно-ориентированным методикам;
    • Диаграммы классов могут применяться для иллюстрации статических моделей классов;
    • Диаграммы взаимодействия (Sequence, Collaboration) для иллюстрации динамических моделей системы;

 

 

Диаграмма классов описывает типы объектов в системе и их статические взаимоотношения. Существует два основных типа отношений между объектами:

  • Ассоциации
  • Подтипы

Кроме этого, диаграммы классов показывают атрибуты и операции над классами.

 

Для ассоциации может указываться навигация:

  • Однонаправленная
  • Двунаправленная

 

Диаграммы классов могут быть расширены с помощью стереотипов.

 

Атрибуты и операции могут быть помечены как доступные для класса (static scope), так и только для объекта (instance scope).

 

Дополнительно на диаграммах классов можно показывать зависимости между классами.

 

Можно показывать область видимости (visibility):

  • + public
  • - private
  • # protected

 

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

 

Диаграммы взаимодействия описывают то, как группы объектов взаимодействуют друг с другом, т.е. представляют динамическую модель.

 

Существует два типа диаграмм взаимодействия:

  • Sequence – диаграмма последовательности
  • Collaboration – диаграмма сотрудничества

 

Sequence diagram

Вертикальная линия называется линией жизни объекта (object lifeline).

Каждое сообщение отображается в виде стрелки между двумя линиями жизни объектов.

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

  • Condition – условие выполнения. Сообщение будет передано только при условии что condition==true.
  • Iteration marker – итерация – указывает сколько раз передаётся сообщение (происходит вызов метода).

 

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

 

Асинхронные сообщения (вызовы методов) можно показывать «одноуголковой» стрелкой.

 

Пример Sequence Diagram:

 

Collaboration diagram

Объекты на таких диаграммах рисуются в виде прямоугольников, сообщения так же в виде стрелок. Однако, в отличие от sequence diagram на collaboration diagram порядок сообщений указывается с помощью номеров. И хотя нумерование сообщений не столь наглядна как последовательное отображение сообщений на sequence diagram, возможность пространственного расположения объектов предоставляет дополнительные преимущества, так как можно показать статические отношения между объектами, что способствует логической группировке объектов.

 

Пример Collaboration Diagram:

 

 

 

Объект обладает состоянием, поведением и идентичностью; структура и поведение схожих объектов определяет общий для них класс; термины «экземпляр класса» и «объект» взаимозаменяемы.

 

Состояние объекта характеризуется перечнем всех свойств данного объекта и текущими значениями каждого из этих свойств.

 

Поведение – это то, как объект действует и реагирует; поведение выражается в терминах состояния объекта и передачи сообщений.

 

В объектно-ориентированных языках операции, выполняемые над данным объектом, называются методами и входят в определение класса объекта. (В C++ они называются функциями-членами.)