Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tekhnologia_Programmirovania_-_ekzamen.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.33 Mб
Скачать

Объектно-ориентированный подход к разработке по

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

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

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

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

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

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

В данном определении можно выделить три части: 1) OOП использует в качестве базовых элементов объекты, а не алгоритмы; 2) каждый объект является экземпляром какого-либо определенного класса; 3) классы организованы иерархически. Программа будет объектно-ориентированной только при соблюдении всех трех указанных требований. В частности, программирование, не основанное на иерархических отношениях, не относится к OOП, а называется программированием на основе абстрактных типов данных.

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

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

  • Объекты относятся к соответствующим типам (классам).

  • Типы (классы) могут наследовать атрибуты и методы супертипов (суперклассов)

1. Абстрагирование и инкапсуляция

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

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

Виды абстракций: абстракция сущности объекта - модель существен­ных внутренних свойств (структура объекта); абстракции пове­дения - модель внешних свойств объекта; абстрактная функция - метод класса, для которого задана сигнатура (описание), но не задана реализация.

Задача абстрагирования: выбор необходимого и достаточного набора свойств.

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

Клиентом называется любой объект, использующий ресурсы другого объекта (называемого сервером).

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

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

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

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

Степени ограничения доступа, которые поддерживает С++

- public – определяет интерфейсную часть (абсолютно доступно);

- protected – определяет часть доступную для потомков класса;

- private – определяет полностью закрытую часть.

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

В UML абстрактный класс обозначается курсивом.

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