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

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

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

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

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

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

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

Полимор­физм можно интерпретировать, как способность класса принадле­жать более чем одному типу.

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

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

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

Концептуальной основой объектно-ориентированного подхо­да служит объектная модель. Основными ее элементами являются абстрагирование (abstraction), инкапсуляция (encapsulation), мо­дульность (modularity), иерархия (hierarchy).

Кроме основных имеются еще три дополнительных элемента — типизация (typing), параллелизм (concurrency), устойчивость (persistence), не являющихся в отличие от основных строго обяза­тельными.

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

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

Модульность — это свойство системы, обусловленное возмож­ностью ее декомпозиции на ряд внутренне связанных, но слабо объединенных между собой модулей. Инкапсуляция и модульность создают барьеры между абстракциями.

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

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

Параллелизм — это свойство объектов находиться в активном или пассивном состоянии и различать активные и пассивные объек­ты между собой.

Устойчивость — это свойство объекта существовать во времени (независимо от процесса, породившего данный объект) и/или в пространстве (при перемещении объекта из адресного простран­ства, в котором он был создан).

Важным качеством объектно-ориентированного подхода явля­ется согласованность моделей деятельности организации и моде­лей проектируемой системы, начиная со стадии формирования требований и до стадии реализации. Требование согласованности моделей выполняется благодаря возможности применения абст­рагирования, модульности, полиморфизма на всех стадиях разра­ботки. Модели ранних стадий могут быть непосредственно под­вергнуты сравнению с моделями реализации.

Большинство существующих методов объектно-ориентирован­ного анализа и проектирования (ООАП) включают в себя как язык моделирования, так и описание процесса моделирования. Язык мо­делирования — это нотация (в основном графическая), которая используется методом для описания проектов. Графическая нотация представляет собой совокупность графических объектов, кото­рые используются в моделях; она является синтаксисом языка мо­делирования. Процесс — это описание шагов, которые необходимо выполнить при разработке проекта.