Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы ПИС.docx
Скачиваний:
10
Добавлен:
25.09.2019
Размер:
306.61 Кб
Скачать
  1. Принципы объектного подхода (абстрагирование, инкапсуляция, модульность, иерархия).

Абстрагирование (выделение существенных характеристик объекта).

Инкапсуляция (скрытие внутреннего устройства объекта).

Модульность (раздельное описание отдельного объекта или группы объектов).

Иерархия (расположение объектов по уровням).

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

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

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

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

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

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

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

Согласно Барбаре Лисков "модульность - это разделение программы на фрагменты, которые компилируются по отдельности, но могут устанавливать связи с другими модулями". Мы будем пользоваться определением Парнаса: "Связи между модулями - это их представления друг о друге" [58]. Модульность - это свойство системы, которая была разложена на внутренне связные, но слабо связанные между собой модули. Таким образом, принципы абстрагирования, инкапсуляции и модульности являются взаимодополняющими. Объект логически определяет границы определенной абстракции, а инкапсуляция и модульность делают их физически незыблемыми.

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

Иерархия - это упорядочение абстракций, расположение их по уровням.

  1. Структура сложной системы. Композиция и декомпозиция сложной системы.

На этапе декомпозиции, обеспечивающем общее представление системы, осуществляются:

  1. Определение и декомпозиция общей цели исследования и основной функции системы как ограничение траектории в пространстве состояний системы или в области допустимых ситуаций. Наиболее часто декомпозиция проводится путем построения дерева целей и дерева функций.

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

  3. Описание воздействующих факторов.

  4. Описание тенденций развития, неопределенностей разного рода.

  5. Описание системы как «черного ящика».

  6. Функциональная (по функциям), компонентная (по виду элементов) и структурная (по виду отношений между элементами) декомпозиции системы.

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

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

Декомпозиция — научный метод, использующий структуру задачи и позволяющий заменить решение одной большой задачи решением серии меньших задач, пусть и взаимосвязанных, но более простых.

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

Сложность вызывается четырьмя основными причинами: