Объектно-ориентированный подход к проектированию программного обеспечения Тема 9 Сущность Объектноориентированного подхода Объектно-ориентированный подход использует объектную декомпозицию, при этом статическая структура системы описывается в терминах объектов и связей между ними, а поведение системы описывается в терминах обмена сообщениями между объектами. Схема взаимодействия объектов Начать работу Проверить есть ли деньги и снять 1000 рублей Выдать 1000 руб. клиент банкомат Сообщить идентификационный код счет Определение объекта Объект определяется как осязаемая реальность (tangible entity) - предмет или явление, имеющие четко определяемое поведение. Объект обладает состоянием, поведением и индивидуальностью; структура и поведение схожих объектов определяют общий для них класс. Определение объекта Состояние объекта – одно из множества условий, в которых он может существовать. Поведение объекта определяет действие объекта и его реакцию на запросы от других объектов Индивидуальность – свойство объекта отличающая его от всех других объектов Объектная модель имеет четыре главных свойства абстрагирование (abstraction); инкапсуляция (encapsulation); модульность (modularity); иерархия (hierarchy). Абстрагирование — это выделение существенных характеристик некоторого объекта, которые отличают его от всех других видов объектов. Инкапсуляция – скрытие внутренней реализации объекта за предоставляемым этим объектом интерфейсом. Модульность — это свойство системы, связанное с возможностью ее декомпозиции на ряд внутренне связных, но слабо связанных между собой модулей. Иерархия - это упорядочивание абстракций, расположение их по уровням. Объектная модель имеет три дополнительных свойства типизация (typing); параллелизм (concurrency); устойчивость (persistence). Типизация — это ограничение, накладываемое на класс объектов и препятствующее взаимозаменяемости различных классов. Параллелизм — способность системы обрабатывать несколько сообщений или задач параллельно. Устойчивость - свойство объекта существовать во времени (вне зависимости от процесса, породившего данный объект) и/или в пространстве (при перемещении объекта из адресного пространства, в котором он был создан). Определение класса Класс — это множество объектов, связанных общностью структуры и поведения. Любой объект является экземпляром класса. Состояние объекта Атрибут – поименованное свойство класса, определяющее диапазон допустимых значений, которые могут принимать экземпляры данного свойства. Интерфейс объекта Определенное воздействие одного объекта на другой с целью вызвать соответствующую реакцию называется операцией. Операция – это реализация услуги, которую можно запросить у любого объекта Свойства класса Наследование – это отношение между классами, при котором один класс разделяет структуру или поведение одного или нескольких классов Счет баланс Снять Положить Проверить Расчетный счет Депозит Срок процент Истек ли срок Свойства класса Полиморфизм – это способность скрывать множество различных реализаций под единственным общим интерфейсом Полиморфизмом называется возможность взаимодействия с объектом, не зная, к какому конкретному классу он относится Виды связи Между элементами объектной модели существую следующие виды связей: Отношение ассоциации Отношение Отношение зависимости Отношение обобщения Отношение агрегации Класс _А Класс_Б Виды связи Отношение ассоциации соответствует наличию некоторого отношения между классами. Компания Работа 1 1..* Сотрудник Виды связи Отношение зависимости используется в такой ситуации, когда некоторое изменение одного элемента модели может потребовать изменения другого зависимого от него элемента модели. Класс _А Класс_ Б Виды связи Отношение обобщения является обычным таксономическим отношением между более общим элементом (родителем или предком) и более частным или специальным элементом (дочерним или потомком) Класс-предок Класс-потомок Виды связи Отношение агрегация имеет место между несколькими классами в том случае, если один из классов представляет собой некоторую сущность, включающую в себя в качестве составных частей другие сущности. композиция Целое Часть Целое Часть Виды связи Унифицированный язык моделирования UML Унифицированный язык моделирования UML (Unified Modeling Language) предназначен для определения, представления, проектирования и документирования программных систем, организационно-экономических, технических и др. UML содержит стандартный набор диаграмм и нотаций. Набор диаграмм стандарта UML диаграммы вариантов использования (use case diagrams) — для моделирования бизнес-процессов организации (требований к системе); диаграммы классов (class diagrams) — для моделирования статической структуры классов системы и связей между ними; Набор диаграмм стандарта UML диаграммы поведения системы (behavior diagrams); диаграммы состояний (statechart diagrams) для моделирования поведения объектов системы при переходе из одного состояния в другое; диаграммы деятельностей (activity diagrams) - для моделирования поведения системы в рамках различных вариантов использования или моделирования деятельностей; Набор диаграмм стандарта UML диаграммы взаимодействия (interaction diagrams) - для моделирования процесса обмена сообщениями между объектами. Существуют два вида диаграмм взаимодействия: • диаграммы последовательности (sequence diagrams); • кооперативные диаграммы (collaboration diagrams). Набор диаграмм стандарта UML диаграммы реализации (implementation diagrams): диаграммы компонентов (component diagrams) — для моделирования иерархии компонентов (подсистем) системы; диаграммы размещения (deployment diagrams) — для моделирования физической архитектуры системы Диаграмма вариантов использования служит для описания функционального назначения системы и определения требований к ней Диаграмма вариантов использования Вариант использования представляет собой последовательность действий (транзакций), выполняемых системой в ответ на событие, инициируемое некоторым внешним объектом (действующим лицом). Действующее лицо (actor) — это роль, которую пользователь играет по отношению к системе. Диаграмма вариантов использования Диаграмма вариантов использования Диаграмма класса Диаграммы классов являются центральным звеном объектноориентированных методов. Диаграмма классов определяет типы объектов системы и различного рода статические связи, которые существуют между ними. Диаграмма класса Класс (class) служит для обозначения множества объектов, которые обладают одинаковой структурой, поведением и отношениями с объектами из других классов. Видимость атрибута: Public (общий, открытый) Private (закрытый, секретный) Protected (защищенный) Диаграмма класса Диаграмма класса Объектная модель сказки Диаграммы взаимодействия Диаграммы взаимодействия (interaction diagrams) являются моделями, описывающими поведение взаимодействующих групп объектов. Как правило, диаграмма взаимодействия охватывает поведение объектов в рамках только одного варианта использования. На такой диаграмме отображаются ряд объектов и те сообщения, которыми они обмениваются между собой. Диаграмма взаимодействия Кооперативная диаграмма с десятичной нумерацией Диаграмма деятельности Диаграмма деятельности Преобразовать уравнение к каноническому виду Символ ветвления Вычислить дискриминант [дискриминант >=0] [дискриминант <0] Вычислить корни (корень) квадратного уравнения Диаграмма состояний Диаграмма состояний Установить телефонное соединение (тел. номер) [тел. соединение установлено] Активация почтовой программы Загрузка почты с сервера провайдера Закончить загрузку почты [почтовый ящик на сервере пуст]/ разорвать тел. соединение(тел. номер) Событие Диаграмма состояний Диаграмма компонентов для клиентов Диаграмма компонентов для клиентов Исполняемые компоненты Библиотеки кода Диаграмма компонентов для клиентов Диаграмма размещения Диаграмма размещения Диаграмма размещения Диаграмма размещения Пакет — основной способ организации элементов модели Каждый пакет владеет всеми своими элементами, т. е. теми элементами, которые включены в него. Каждый элемент может принадлежать только одному пакету. Одни пакеты могут быть вложены в другие пакеты. В этом случае первые называются подпакетами. Для элементов модели задается отношение вложенности пакетов, которое представляет собой иерархию. Имя пакета Имя пакета Содержимое пакета (а) (б) Пакет_1 Пакет_2 Пакет_3 Диаграмма пакетов