Основы объектно-ориентированного представления программных систем

Содержание

Слайд 2

Декомпозиция программных систем алгоритмическая объектно-ориентированная В основе алгоритмической декомпозиции лежит разбиение

Декомпозиция программных систем

алгоритмическая
объектно-ориентированная

В основе алгоритмической декомпозиции лежит разбиение по действиям

– алгоритмам. Эта схема представления применяется в обычных ПС.

Объектно-ориентированная декомпозиция обеспечивает разбиение по автономным лицам – объектам реального (или виртуального) мира. Эти лица (объекты) – более «крупные» элементы, каждый из них несет в себе и описания действий, и описания данных.

Слайд 3

Абстрагирование Создавая понятие в интересах какой-либо задачи, мы отвлекаемся (абстрагируемся) от

Абстрагирование

Создавая понятие в интересах какой-либо задачи, мы отвлекаемся (абстрагируемся) от

несущественных характеристик конкретных объектов, определяя только существенные характеристики.

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

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

Слайд 4

Инкапсуляция Инкапсуляция и абстракция – взаимодополняющие понятия: абстракция выделяет внешнее поведение

Инкапсуляция

Инкапсуляция и абстракция – взаимодополняющие понятия: абстракция выделяет внешнее

поведение объекта, а инкапсуляция содержит и скрывает реализацию, которая обеспечивает это поведение.

Инкапсуляция достигается с помощью информационной закрытости. Обычно скрываются структура объектов и реализация их методов.

Слайд 5

Модульность Общая цель декомпозиции на модули – уменьшение сроков разработки и

Модульность

Общая цель декомпозиции на модули – уменьшение сроков разработки

и стоимости ПС за счет выделения модулей, которые проектируются и изменяются независимо.
Каждая модульная структура должна быть достаточно простой, чтобы быть полностью понятой.
Изменение реализации модулей должно проводиться без знания реализации других модулей и без влияния на их поведение.

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

Слайд 6

Свойства модулей Информационная закрытость Связность модуля Сцепление модулей Информационная закрытость означает

Свойства модулей

Информационная закрытость
Связность модуля
Сцепление модулей

Информационная закрытость означает следующее:
все модули независимы,

обмениваются только информацией, необходимой для работы;
доступ к операциям и структурам данных модуля ограничен.
Слайд 7

Свойства модулей Информационная закрытость Связность модуля Сцепление модулей Связность модуля –

Свойства модулей

Информационная закрытость
Связность модуля
Сцепление модулей

Связность модуля – это мера зависимости его

частей.
Связность – внутренняя характеристика модуля.
Чем выше связность модуля, тем лучше результат проектирования.
Слайд 8

Измерение связности – сила связности (СС)

Измерение связности – сила связности (СС)

Слайд 9

Свойства модулей Информационная закрытость Связность модуля Сцепление модулей Сцепление – это

Свойства модулей

Информационная закрытость
Связность модуля
Сцепление модулей

Сцепление – это мера взаимозависимости модулей по

данным.
Сцепление – это внешняя характеристика модуля, которую желательно уменьшать.
Слайд 10

Измерение сцепления – степень сцепления (СЦ)

Измерение сцепления – степень сцепления (СЦ)

Слайд 11

Измерение сцепления – степень сцепления (СЦ)

Измерение сцепления – степень сцепления (СЦ)

Слайд 12

Иерархическая организация Иерархическая организация – это формирование из абстракций иерархической структуры.

Иерархическая организация

Иерархическая организация – это формирование из абстракций иерархической структуры.


Иерархическая организация задает размещение абстракций на различных уровнях описания системы.
Двумя важными инструментами иерархической организации в объектно-ориентированных системах являются:
  структура из классов («is а»-иерархия);
  структура из объектов («part of»-иерархия).
Слайд 13

Основные характеристики иерархической структуры Иерархическая структура программной системы – это основной

Основные характеристики иерархической структуры

Иерархическая структура программной системы – это

основной результат предварительного проектирования. Она определяет состав модулей ПС и управляющие отношения между модулями.
В этой структуре модуль более высокого уровня (начальник) управляет модулем нижнего уровня (подчиненным).

Первичные характеристики – количество вершин (модулей) и количество ребер (связей между модулями).
Глобальные характеристики – высота и ширина.
Локальными характеристиками модулей структуры являются коэффициент объединения по входу Fan_in(i) и коэффициент разветвления по выходу Fan_out(i).

Слайд 14

Общая характеристика объектов Объект – это конкретное представление абстракции. Объект обладает

Общая характеристика объектов

Объект – это конкретное представление абстракции.
Объект

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

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

Слайд 15

Виды отношений между объектами Связь – это физическое или понятийное соединение

Виды отношений между объектами

Связь – это физическое или понятийное

соединение между объектами. Объект сотрудничает с другими объектами через соединяющие их связи.
Связь обозначает соединение, с помощью которого:
объект-клиент вызывает операции объекта-поставщика;
один объект перемещает данные к другому объекту.

Как участник связи объект может играть одну из трех ролей:
актер – объект, который может воздействовать на другие объекты, но никогда не подвержен воздействию других объектов;
cервер – объект, который никогда не воздействует на другие объекты, он только используется другими объектами;
агент – объект, который может как воздействовать на другие объекты, так и использоваться ими. Агент создается для выполнения работы от имени актера или другого агента.

Слайд 16

Агрегация Агрегация обозначает отношения объектов в иерархии «целое/часть». Агрегация обеспечивает возможность

Агрегация

Агрегация обозначает отношения объектов в иерархии «целое/часть».
Агрегация обеспечивает

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

Физическое включение частей в агрегат

Нефизическое включение частей в агрегат

Слайд 17

Общая характеристика классов Класс – это описание множества объектов, которые разделяют

Общая характеристика классов

Класс – это описание множества объектов, которые

разделяют одинаковые свойства, операции, отношения и семантику (смысл). Любой объект – просто экземпляр класса.

Интерфейс может быть разделен на 3 части:
1) публичную (public), объявления которой доступны всем клиентам;
2) защищенную (protected), объявления которой доступны только самому классу, его подклассам и друзьям;
3)     приватную (private), объявления которой доступны только самому классу и его друзьям.

Интерфейс объявляет возможности (услуги) класса, но скрывает его структуру и поведение.

Реализация класса описывает секреты поведения класса. Она включает реализации всех операций, определенных в интерфейсе класса.

Слайд 18

Виды отношений между классами Всего существует четыре основных вида отношений между

Виды отношений между классами

Всего существует четыре основных вида отношений

между классами:
ассоциация (фиксирует структурные отношения – связи между экземплярами классов);
зависимость (отображает влияние одного класса на другой класс);
обобщение-специализация («is а»-отношение);
целое-часть («part of»-отношение).

Для покрытия основных отношений большинство объектно-ориентированных языков программирования поддерживает следующие отношения:
1)      ассоциация;
2)      наследование;
3)      агрегация;
4)      зависимость;
5)      конкретизация;
6)      метакласс;
7)      реализация.

Слайд 19

Ассоциация Примеры отношений между классами Агрегация Композиция Наследование

Ассоциация

Примеры отношений между классами

Агрегация

Композиция

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