1 of 37

Объектно-ориентированное программирование и проектирование

© Хуторова Ольга Германовна

Лекция 7

2 of 37

Темы лекции

    • Объектная модель системы
    • Структурные диаграммы
      • Классы и объекты в UML
      • Построение структурной модели системы

3 of 37

Структурные сущности

4 of 37

Структурные диаграммы

  • Диаграмма классов

Показывает классы, их атрибуты и связи между классами.

  • Диаграмма объектов

Показывает структуру системы в конкретный момент времени, объекты, их атрибуты...

  • Диаграмма компонентов

Показывает компоненты (программы и данные) и связи между ними

  • Диаграмма пакетов

Показывает, как система раскладывается на крупные составные части и связи между этими частями

  • Диаграмма развертывания

Показывает, как ПО размещается на аппаратуре (серверах, рабочих станциях...)

5 of 37

Объектная модель системы�и Структурные диаграммы

  • Объектная модель описывает структуру объектов, составляющих систему, их атрибуты, операции, взаимосвязи с другими объектами

    • Диаграмма классов
    • Диаграмма объектов

6 of 37

Жизненный цикл ПО

      • Анализ предметной области и сбор требований к ПО
        • Варианты использования

      • Проектирование
        • (строится структурная модель ПО)

7 of 37

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

  • Диаграмма вариантов использования: Актеры + Варианты использования.
  • Вариант использования: сценарий (диаграмма действия).
  • На основе результатов анализа формируем список классов, основные поля и методы.
    • Определяем, как классы связаны между собой.

8 of 37

Словарь системы�

    • Определение элементов для описания задачи или ее решения.
    • Разработка атрибутов и операций, необходимых для выполнения классами своих обязанностей.

9 of 37

На основе анализа и словаря

    • Подготовка словаря данных
    • Выделение возможных классов из постановки задачи
    • Исключение ненужных классов
    • Определение зависимостей между классами
    • Исключение ненужных зависимостей

10 of 37

Моделирование классов

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

11 of 37

Пример словаря. Банкомат. Классы.

Банкомат

Проводка

программное обеспечение

Банк

Карта

центральный компьютер

банковская сеть

Пользователь

проверка безопасности

данные проводки

Клиент

служба ведения записей

данные счета

компьютер банка

Счет

Деньги

Пин-кон

12 of 37

Исключение ненужных классов

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

13 of 37

Пример. Банкомат. Классы.

Клиент

Банкомат

Счет

Банк

Карта

14 of 37

Открытые и закрытые атрибуты и операции

Счет

баланс

кредит

категория

закрытые

открытые

проверить

снять

поместить

налог

Общедоступные

Приватные

15 of 37

Классы

  • представляют собой описание совокупности объектов с общими атрибутами, операциями, отношениями и семантикой.

Объект

4121155888

сберегательный

1227,23 р.

10000 р.

проверить

снять

поместить

Класс

Счет

категория

баланс

кредит

проверить

снять

поместить

16 of 37

Классы в UML

Класс

Имя класса

Поля (атрибуты)

Методы

(операции)

+ public

# protected

- private

Видимость: + # - (public, protected, private)

17 of 37

Организация атрибутов и операций

  • При изображении класса можно свернуть его атрибуты и операции.

18 of 37

Шаблоны классов в UML

Шаблон (template) – класс с параметрами

  • Параметром может быть всё!
  • имя параметра : тип

19 of 37

Стереотип (Stereotype)

  • Стереотип–новый вид элемента модели, созданный на основе существующего.
    • Виды строительных блоков, специфичные для данной задачи. Стереотип представлен в виде имени, заключенного в кавычки и расположенного над именем другого элемента.
    • Некоторый метатип, поскольку каждый стереотип создает эквивалент нового класса в метамодели UML.
    • Класс (class)
      • Интерфейс (interface)
      • Тип данных (data type)

20 of 37

Некоторые стандартные стереотипы классов�

  • «metaclass» – экземпляры являются классами
  • «utility» – нет экземпляров (служба)
  • «interface» – нет атрибутов и все операции абстрактные
  • «datatype» – тип данных
  • «enumeration» – перечислимый тип данных
  • «signal» – экземплярами являются сообщения

21 of 37

Пример - Типы данных�

  • Тип – класс со стереотипом «datatype»
  • Примитивные типы

(и типовые выражения) из целевого языка программирования

( Числа, строки)

  • Перечисляемые типы «enumeration»

Пример: трехзначная логика

22 of 37

Интерфейсы

  • Интерфейс – это набор операций, предоставляемых классом или компонентом.
  • Интерфейсы являются абстрактными классами, следовательно, объекты данных классов не могут быть созданы напрямую. Они могут содержать методы, но не атрибуты.
  • Смысл использования: отделить детали реализации от функциональности. «Внешние» методы выносятся в интерфейс.
  • Один и тот же объект может иметь несколько интерфейсов.

23 of 37

Интерфейсы в UML

IDataAccess

24 of 37

Интерфейсы в UML

25 of 37

Спецификации�Visual Paradigm

  • Стереотип
  • Помеченное значение
  • Ограничение
  • Атрибуты, Операции, Шаблоны классов (для классов)
  • др.

26 of 37

Спецификации�Star UML

  • Имя
  • Стереотип
  • Видимость
  • Атрибуты, Операции, Шаблоны классов (для классов)
  • др.
  • Документация

27 of 37

Пример: Стек. Постановка задачи

  • Выполнить проектирование и реализацию структуры хранения стека.
  • Не учитывать необходимость перераспределения памяти.
  • Считать, что элементы целого типа.

28 of 37

Пример: Стек. Анализ и проектирование

Данные:

  • MemSize – максимальное количество элементов.
  • DataCount – количество элементов в стеке.
  • pMem – указатель на память для хранения значений.

Операции:

  • IsFull – проверка на полноту.
  • IsEmpty – проверка на пустоту.
  • Get – взять элемент с вершины.
  • Put – положить элемент в стек.

DataCount

pMem

MemSize

29 of 37

Пример: Стек. Анализ и проектирование

30 of 37

Объекты в UML�Класс - это абстракция, объект - конкретная материализация этой абстракции

Объект

Именованный объект

31 of 37

Диаграмма объектов

32 of 37

Диаграмма объектов

33 of 37

Пакеты (packages) в UML

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

34 of 37

35 of 37

Пример диаграммы пакетов ИС работы с базой данных

36 of 37

37 of 37

Литература к лекции

  1. И. Соммервиль. Инженерия программного обеспечения, 6 изд. – И.д. "Вильямс", 2002.
  2. Г. Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на C++. Второе издание. – Бином, 1998.
  3. Г. Буч, Дж. Рамбо, А. Джекобсон. UML. Руководство пользователя. – ДМК-Пресс, Питер, 2004.
  4. www.uml.org
  5. www.visual-paradigm.com
  6. http://www.umljokes.com/