Skip to content

ООП Лекция 11. UML.

Vladislav Mansurov edited this page May 9, 2022 · 4 revisions

Шаблоны и паттерны проектирования.

Шаблон - готовое решение. А паттерн нужно адаптировать под определённую задачу. Количество паттернов очень большое.

Отличие шаблонов от паттернов:

  • Шаблон - конкретная реализация чего-либо
  • Паттерн - шаблон для решения какой-то задачи (как может решаться данная задача; готовое решение). Паттерн мы всегда адаптируем к своей задаче.
  • Паттерны мы можем сами разрабатывать

Паттерны проектирования(Классификация банды четырех):

  • Порождающие
  • Структурные
  • Паттерны поведения

Архитектурные паттерны (рассматривать не будем)

В основном эти паттерны задают архитектуру системы (будет отдельный курс в дальнейшем). Затронем только КМС(конечная модель состояний) - использовать для событий.

В зависимости от того, как мы используем паттерны, паттерн может быть или структурным или паттерном поведения.

Использование паттернов делает код читабельным, лёгким и безопасным. Будем изучать джентельменский набор паттернов.

Преимущества:

  • Мы имеем готовое решение
  • Засчет готового решения - нюансы все выявлены => надежный код
  • Повышаетcя скорость разработки
  • Повышается читаемость кода
  • Улучшается взаимодействие с коллегами
  • Упрощает разработку, проектирования и написания кода

Недостатки

  • Много механического кода (вместо 1 строки будем писать 50 строчек)

UML (Unified Modeling Language) - язык моделирования

Диаграммы: сущности и связи между ними.

Саму сущность мы разбиваем на части:

  • имя (уникальное)
  • скрытые члены
  • public методы, может и public члены - но это плохо.

Если это методы, перед ними ставим знак +.

image

Связи UML

image

Примечание: Опечатка выше рис. не "исследование", а наследование.

4 типа связи:

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

    • Композиция - по сути это схема включения, т.е. один объект создает подобъект другого => композит отвечает за компоненты (их жизненные циклы совпадают, то есть при удалении композита, удаляются компоненты) - самая жесткая ассоциация.

    • Эти отношения могут быть множественные, мы ставим в соответствии с этим множественность отношений.

      image

Наследование:

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

  • Реализация - тоже наследование, но с условием, что производный класс может расширять (но не сужать) интерфейс базового.

    image

Это все что необходимо, чтобы рисовать UML диаграммы.

Скачать UML программу

Другие ресурсы про UML

Clone this wiki locally