815.35K
Категория: ПрограммированиеПрограммирование

Объектно-ориентированный подход к моделированию систем. Тема 1

1.

Дисциплина
«Объектно-ориентированное
моделирование и программирование»
Ст. Преподаватель
Баймурзина Лилия
Ифтаровна

2.

Тема 1: Объектно-ориентированный
подход к моделированию систем

3.

Понятие объектноориентированного подхода (ООП)
• Объектно-ориентированное программирование
(ООП) — методология программирования, основанная на
представлении программы в виде совокупности объектов,
каждый из которых является экземпляром
определённого класса, а классы образуют иерархию
наследования.
• ООП – подход, использующий объектную декомпозицию
• В ООП статическая структура системы описывается в
терминах объектов и связей между ними
• Динамическая структура объекта описывается в терминах
обмена сообщениями между объектами
• От структурного подхода ООП отличает способ
декомпозиции системы

4.

Объект
• Класс это тип, описывающий устройство объектов. Понятие «класс»
подразумевает некоторое поведение и способ представления. Понятие
«объект» подразумевает нечто, что обладает определённым поведени
ем и способом представления. Говорят, что объект это экземпляр клас
са. Класс можно сравнить с чертежом, согласно которому создаются о
бъекты. Обычно классы разрабатывают таким образом, чтобы их объе
кты соответствовали объектам предметной области.
• Объект – осязаемая реальность, имеющая четко
определенное поведение.
• Объект обладает состоянием, поведением,
индивидуальностью
• Структура и поведение схожих объектов определяют
общий для них класс
• => Объект = экземпляр класса

5.

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

6.

Различие между классом и объектом
• Множество объектов со схожими свойствами
(состояние, поведение, индивидуальность) = КЛАСС
• => Каждый объект = экземпляр класса
• Классы и объекты в ООП — различные понятия.
Понятие класса в ООП – это тип данных (такой же
как, например, Real или String), а объект –
конкретный
экземпляр
класса
(его
копия),
хранящийся в памяти компьютера как переменная
соответствующего типа. Весь реальный мир состоит
из объектов. Города состоят из районов, в каждом
районе есть свои названия улиц, на каждой улице
находятся жилые дома, которые также состоят из
объектов.

7.

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

8.

Абстракция фокусируется на существенных с точки зрения наблюдателя
характеристиках объекта.

9.

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

10.

Составные части объектного подхода
Модульность - это свойство системы, которая была разложена на внутренне
связные, но слабо связанные между собой модули.
Связи между модулями - это их представления друг о друге.
В C++ модулями являются раздельно компилируемые файлы.
Для C/C++ традиционным является помещение интерфейсной части модулей в
отдельные файлы с расширением .h (так называемые файлы-заголовки).
Реализация хранится в файлах с расширением .с (в программах на C++ часто
используются расширения .ее, .ср и .срр). Связь между файлами объявляется
директивой макропроцессора #include.
Модульность позволяет хранить
абстракции раздельно.

11.

Составные части объектного подхода
Иерархия - это упорядочение абстракций,
расположение их по уровням.
Основными видами иерархических структур
применительно к сложным системам
являются структура классов (иерархия "isa") и структура объектов (иерархия "part
of").

12.

Составные части объектного подхода
Типизация - это способ защититься от использования объектов одного класса
вместо другого, или по крайней мере управлять таким использованием.

13.

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

14.

Составные части объектного подхода
Сохраняемость - способность объекта существовать во времени, переживая
породивший его процесс, и (или) в пространстве, перемещаясь из своего
первоначального адресного пространства.
Спектр сохраняемости объектов охватывает:
- Промежуточные результаты вычисления выражений.
- Локальные переменные в вызове процедур.
- Собственные переменные (как в ALGOL-60), глобальные переменные и
динамически создаваемые данные.
- Данные, сохраняющиеся между сеансами выполнения программы.
- Данные, сохраняемые при переходе на новую версию программы.
-Данные, которые вообще переживают программу.
Первыми тремя уровнями занимаются языки программирования, а последними
- базы данных.

15.

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

16.

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

17.

Принципы ООП. Наследование
• Наследование – принцип, в соответствии с
которым знание о более общей категории
разрешается применять для более частной
категории
• Наследование -> иерархия классов:
• Родительский класс обладает фиксированным
набором свойств => производный от него класс
содержит тот же набор свойств + дополнительные
свойства, характеризующие его уникальность

18.

Принципы ООП. Наследование
Автомобиль
ВАЗ 2110
Автомобиль ВАЗ
Автомобиль

19.

Универсальный язык
моделирования UML. Предыстория
• В начале 90-х гг. 20 века – создание новых объектноориентированных языков программирования (Smalltalk, C++, Java)
• Разработано огромное количество методов проектирования
объектно-ориентированного ПО .
Метод Буча ( Гради Буч) + Object Modeling Technique ( Джеймс
Рамбо) +Object-Oriented Software Engineering (Ивар Якобсон)
Результат – разработка UML, с целью объединения
достоинств различных подходов в один
независимый от производителей язык
моделирования.

20.

Универсальный язык
моделирования UML
• Сегодня UML по-прежнему является стандартной практической
нотацией для разработчиков, а также для руководителей проектов,
владельцев бизнеса, технических предпринимателей и специалистов из
разных отраслей.
• Формальная спецификация версии UML 2.0 опубликована в августе
2005 года. Семантика языка была значительно уточнена и расширена
для поддержки методологии Model Driven Development — MDD.
Последняя версия UML 2.5 опубликована в июне 2015 года.
• UML 2.4.1 принят в качестве международного
стандарта ISO/IEC 19505-1, 19505-2

21.

Универсальный язык
моделирования UML
• UML – Unified Modeling Language –
унифицированный язык моделирования, который
предназначен для визуализации и документирования
объектно-ориентированных систем и бизнеспроцессов с ориентацией на их последующую
реализацию в виде программного обеспечения.
• UML является стандартным инструментом для
создания "чертежей" программного обеспечения. С
помощью UML можно визуализировать,
специфицировать, конструировать и документировать
артефакты программных систем.

22.

Основные компоненты языка UML.

23.

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

24.

Язык UML предназначен прежде всего для разработки
программных систем. Его использование особенно
эффективно в следующих областях:
• информационные системы масштаба
предприятия;
• банковские и финансовые услуги;
• телекоммуникации;
• транспорт;
• оборонная промышленность, авиация и
космонавтика;
• розничная торговля;
• медицинская электроника;
• наука;
• распределенные Web-системы.

25.

Общая структура языка UML
С самой общей точки зрения описание языка UML состоит из двух
взаимодействующих частей, таких как:
· Семантика языка UML. Представляет собой некоторую метамодель, которая
определяет абстрактный синтаксис и семантику понятий объектного моделирования
на языке UML.
· Нотация языка UML. Представляет собой графическую нотацию для визуального
представления семантики языка UML.
Семантика определяется для двух видов объектных моделей: структурных моделей и
моделей поведения. Структурные модели, известные также как статические модели,
описывают структуру сущностей или компонентов некоторой системы, включая их
классы, интерфейсы, атрибуты и отношения. Модели поведения, называемые иногда
динамическими моделями, описывают поведение или функционирование объектов
системы, включая их методы, взаимодействие и сотрудничество между ними, а также
процесс изменения состояний отдельных компонентов и системы в целом.

26.

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

27.

Одним из типов отношений между пакетами является отношение вложенности
или включения пакетов друг в друга. С одной стороны, в языке UML это
отношение может быть изображено без использования линий простым
размещением одного пакета-прямоугольника внутри другого пакетапрямоугольника (рис. 3). Так, в данном случае пакет с именем Пакет 1 содержит в
себе два подпакета: Пакет_2 и Пакет_3.
Рис. 3. Графическое изображение вложенности пакетов друг в друга

28.

С другой стороны, это же отношение может быть изображено с помощью отрезков линий
аналогично графическому представлению дерева. В этом случае наиболее общий пакет
(метапакет или контейнер) изображается в верхней части рисунка, а его подпакеты - уровнем
ниже. Метапакет соединяется с подпакетами сплошной линией, на конце которой,
примыкающей к метапакету, изображается специальный символ (знак плюс в кружочке).
Этот символ означает, что подпакеты являются "собственностью" или частью контейнера, и,
кроме этих подпакетов, контейнер не содержит никаких других подпакетов. Рассмотренный
выше пример (рис. 3) может быть представлен с помощью явной визуализации отношения
включения (рис. 4).
Рис. 4. Графическое изображение вложенности пакетов друг в друга с помощью явной
визуализации отношения включения

29.

Возвращаясь к рассмотрению языка UML, напомним, что основой его
представления на метамодельном уровне является описание трех его логических
блоков или пакетов: Основные элементы, Элементы поведения и Общие
механизмы (рис.5).
Рис. 5. Основные пакеты метамодели языка UML

30.

Эти пакеты в свою очередь делятся на отдельные подпакеты. Например, пакет Основные
элементы состоит из подпакетов: Элементы ядра, Вспомогательные элементы, Механизмы
расширения и типы данных (рис.6). При этом пакет Элементы ядра описывает базовые
понятия и принципы включения в структуру метамодели основных понятий языка, таких как
метаклассы, метаассоциации и метаатрибуты. Пакет Вспомогательные элементы определяет
дополнительные конструкции, которые расширяют базовые элементы для описания
зависимостей, шаблонов, физических структур и элементов представлений. Пакет
Механизмы расширения задает правила уточнения и расширения семантики базовых
элементов моделей. Пакет Типы данных определяет основные структуры данных для языка
UML.
Рис. 6. Подпакеты пакета Основные элементы языка UML

31.

Пакет Элементы ядра
Специфицирует базовые конструкции, требуемые для описания исходной метамодели, и определяет
архитектурный "скелет" для присоединения дополнительных конструкций языка, таких как
метаклассы, метаассоциации и метаатрибуты.
В него входят метаклассы языка UML:
• класс (Class),
• атрибут (Attribute),
• ассоциациях (Association),
• ассоциация-класс (AssociationClass),
• конец ассоциации (AssociationEnd),
• свойство поведения (BehavioralFeature),
• классификатор (Classifier),
• ограничение (Constraint),
• тип данных (DataType),
• зависимость (Dependency),
• элемент (Element),
• право на элемент (ElementOwnership),
• свойство (Feature),
• обобщение (Generalization),
• элемент отношения обобщения (GeneralizableElement),
• интерфейс (Interface), метод (Method),
• элемент модели (ModelElement),
• пространство имен (Namespace),
• операция (Operation),
• параметр (Parameter),
• структурное свойство (StructuralFeature),
• правила правильного построения выражений (Well-formedness rules).

32.

Пакет Вспомогательные элементы
Пакет Вспомогательные элементы является подпакетом пакета Основные
элементы и специфицирует дополнительные конструкции языка UML,
которые расширяют пакет Элементы ядра.
• Вспомогательные элементы обеспечивают понятийный базис для
зависимостей, шаблонов, физических структур и элементов представлений.
• В этот пакет входят следующие метаклассы:
• связывание (Binding),
• комментарий (Comment),
• компонент (Component),
• узел (Node),
• презентация (Presentation),
• уточнение (Refinement),
• цепочка зависимостей (Trace),
• потребление (Usage),
• элемент представления (ViewElement),
• зависимость (Dependency),
• элемент модели (ModelElement),
• правила правильного построения выражений (Well-formedness rules).
При этом три последних метакласса взяты из пакета Элементы ядра и
используются для спецификации остальных.

33.

Пакет Механизмы расширения
• Пакет Механизмы расширения также является подпакетом пакета
Основные элементы и специфицирует порядок включения в модель
элементов с уточненной семантикой, а также модификацию
отдельных компонентов языка UML для более точного отражения
специфики моделируемых систем. Механизм расширения определяет
семантику для стереотипов, ограничений и помеченных значений и
используется
• ограничение (Constraint),
• стереотип (Stereotype)
• помеченное значение (TaggedValue).

34.

Пакет Элементы поведения
• Этот пакет является самостоятельной компонентой языка UML и, как
следует из его названия, специфицирует динамику поведения в
нотации UML. Пакет Элементы поведения состоит из четырех
подпакетов: Общее поведение, Кооперации, Варианты использования
и Автоматы (рис. 7).
Рис.7 Подпакеты пакета Элементы поведения языка UML

35.

Виды диаграмм

36.

Спасибо за внимание
English     Русский Правила