Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тузовский.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
136.25 Кб
Скачать

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

1. Основные понятия

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

Понятию “объект” сопоставляют ряд дополняющих друг друга определений. Ниже приведены некоторые из них.

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

- Объект - особый опознаваемый предмет, блок или сущность (реальная или абстрактная), имеющая важное функциональное назначение в данной предметной области.

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

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

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

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

- конструктор, создание и инициализация объекта;

- деструктор, разрушающий объект;

- модификатор, изменяющий состояние объекта;

- селектор для доступа к переменным объекта без их изменения;

- итератор для доступа к содержанию объекта по частям в определенной последовательности.

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

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

Объекты могут находиться в определенных отношениях друг к другу. Эти отношения могут быть иерархическими. Основные иерархические отношения - это отношения использования и включения.

Отношение использования реализуется посылкой сообщений от объекта A к объекту B. При этом объект A может выступать в роли:

- активного или воздействующего объекта, когда он воздействует на другие объекты, но сам воздействию не подвергается;

- пассивного или исполняющего, когда объект подвергается воздействию, но сам на другие объекты не воздействует;

- посредника, если объект и воздействует и сам подвергается воздействию.

Отношение включения имеет место, когда составной объект содержит другие объекты.

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

Между классами также могут быть установлены отношения:

- отношение разновидности (кошка - вид определенного биологического семейства или кошка - домашнее животное);

- включения или составной части (лапа - часть кошки);

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

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

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

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

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

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

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

- проведение объектно-ориентированного анализа предметной области;

- объектно-ориентированное проектирование;

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

13. Уточнение отношений выявленных на этапе анализа

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

При переходе к проектированию необходимо уточнить отношения между классами анализа и превратить их в отношения между проектными классами.

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

Например, ни один из широко распространенных ОО языков программирования не поддерживает двунаправленные ассоциации,

классыассоциации или ассоциации многиекомногим.

Чтобы создать проектную модель, необходимо определить, как должны быть реализованы эти ассоциации.

Уточнение аналитических ассоциаций до ассоциаций уровня проектирования включает несколько процедур:

• уточнение ассоциаций до отношений агрегации или композиции в соответствующих случаях;

• реализацию ассоциаций одинкомногим;

• реализацию ассоциаций многиекодному;

• реализацию ассоциаций многиекомногим;

• реализацию двунаправленных ассоциаций;

• реализацию классовассоциаций.

Все ассоциации уровня проектирования должны обладать:

• возможностью навигации;

• кратностью на обоих концах.

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

Процесс проектирования классов начинают с уточнения отношений между ними. На этапе проектирования помимо ассоциации и обобщения различают еще два типа отношения между классами: агрегацию и композицию.  К сожалению, до настоящего времени не существует единой устоявшейся терминологии объектно-ориентированного проектирования. В табл. 6.1 приведены соответствия между основными терминами, используемыми наиболее известными авторами в этой области. Агрегацией называют ассоциацию между целым и его частью или частями. Агрегацию вместо ассоциации указывают, если отношение «целое-часть» в конкретном случае существенно. Например, если колесо нас интересует только как часть автомобиля, то между соответствующими классами целесообразно указать отношении агрегации, а если колесо – товар, так же как и автомобиль, то связь целое часть не существенна. Композиция – более сильная разновидность агрегации, которая подразумевает, что объект-часть может принадлежать только единственному целому. Объект-часть при этом создается и уничтожается только вместе со своим целым. Уточненные отношения между классами фиксируют на диаграмме классов. Для этого используют специальные уловные обозначения (рис. 6.10). Поскольку отношение ассоциации и его подвиды: агрегация и композиция означают наличие обмена сообщениями между объектами классов, целесообразно уточнить направление передачи сообщений. Навигацию (направление ассоциации) показывают стрелкой на конце линии ассоциации. Если стрелки указаны с обеих сторон, то это означает двунаправленную ассоциацию. Специальное обозначение на диаграмме классов этапа проектирования используют для указания абстрактных классов и методов: на диаграмме классов их имена выделяют курсивом, либо перед именем класса указывают стереотип «abstract». UML также включает специальную нотацию для обозначения параметризованных классов или шаблонов (рис. 6.11).  Получение из класса-шаблона класса с конкретными типами элементов называют связыванием. Связывание можно обозначить двумя способами, явно указав тип-параметр (рис. 6.12, а) и используя условное обозначение уточнения (рис. 6.12, б). Диаграммы классов позволяют также отобразить ограничения, которые невозможно показать, используя только понятия, рассмотренные выше (ассоциации, обобщения, атрибуты, операции). Например, показать, что средний балл студентов должен определяться по соответствующей формуле. Подобную информацию на диаграмме классов можно представить в виде записи на естественном языке или в виде математической формулы, поместив их в фигурные скобки.  Особое место в процессе проектирования классов занимает проектирование интерфейсов. Интерфейсы. Интерфейсом в UML называют класс, содержащий т о л ь к о объявление операций. Отдельное описаний интерфейсов улучшает технологические качества ПО. Интерфейсы широко применяют при разработке сетевого ПО, которое должно функционировать в гетерогенных средах, а также для организации взаимодействия с базами данных и т.п., так как механизм полиморфного наследования позволяет создавать различные реализации одного и того же интерфейса. С точки зрения теории объектно-ориентированного программирования интерфейс представляет собой особый вид абстрактного класса, отличающийся тем, что он не содержит методов, реализующих указанные операции, и объявления полей. Другими словами абстрактные классы позволяют определить реализацию некоторых методов, а интерфейсы требуют отложить определение всех методов.  На диаграмме классов интерфейс можно показать двумя способами: с помощью специального условного обозначения (рис. 6.13, а) или, объявив для класса стереотип «interface» (рис. 6.13, б). Реализацию интерфейса также можно показать двумя способами: сокращенно (рис. 6.14, а) или, используя отношение реализации (рис. 6.14, б). Для остальных классов, ассоциированных с интерфейсом, следует уточнить ассоциацию, показав отношение зависимости. Это отношение в данном случае означает, что класс использует указанный интерфейс (рис. 6.15). Одновременно с уточнением отношений классов в пакете следует продумать и отношения классов, включенных в различные пакеты между собой.  Кроме того, анализ структур исходных данных и результатов решаемых задач показывает их существенное различие, следовательно, классы Данные и Результаты необходимо реализовать, как абстрактные, и наследовать от них классы, уточняющие структуры данных и результатов для каждого случая. 

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

В разработке программного обеспеченияшаблон проектирования или паттерн (англ. design pattern) — повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.

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

«Низкоуровневые» шаблоны, учитывающие специфику конкретного языка программирования, называются идиомами. Это хорошие решения проектирования, характерные для конкретного языка или программной платформы, и потому не универсальные.

На наивысшем уровне существуют архитектурные шаблоны, они охватывают собой архитектуру всей программной системы.

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

MVC

  • Model-View-Controller (MVC) Модель-представление-контроллер

  • Model-View-Presenter

  • Model-View-View Model

  • Presentation-Abstraction-Control

15. Шаблоны архитектуры ПО

Архитектура программного обеспечения (англ. software architecture) — это структура программы или вычислительной системы, которая включает программные компоненты, видимые снаружи свойства этих компонентов, а также отношения между ними. Этот термин также относится к документированию архитектуры программного обеспечения.Документирование архитектуры ПО упрощает процесс коммуникации между заинтересованными лицами (англ. stakeholders), позволяет зафиксировать принятые на ранних этапах проектирования решения о высокоуровневом дизайне системы и позволяет использовать компоненты этого дизайна и шаблоны повторно в других проектах.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]