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

Структура классов

СТРУКТУРА ОБЪЕКТОВ

Архитектура модулей

АРХИТЕКТУРА ПРОЦЕССОВ

Л огическая

модель

Ф изическая

модель

статические аспекты

динамические аспекты

      1. Составляющие объектного подхода.

При объектном подходе можно выделить четыре главных составляющих:

  • абстрагирование,

  • ограничение доступа,

  • модульность,

  • иерархия,

без которых подход не может считаться объектно-ориентированным.

Кроме главных существуют три дополнительных:

  • типизация,

  • параллелизм,

  • устойчивость,

которые являются полезными, но не обязательными.

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

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

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

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

Существует множество абстракций рассмотрим некоторые из них:

  1. абстракция сущности объекта – объект представляет собой модель существенных сторон предметной области,

  2. абстракция поведения – объект состоит из множества операций, каждая из которых выполняет определенную функцию,

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

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

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

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

Все абстракции обладают, как статическими, так и динамическими свойствами.

НАПРИМЕР. Рассмотрим объект - файл. Он требует определенного объема памяти, имеет имя и содержание. Эти атрибуты являются статическими, а их конкретные значения, которые изменяются в процессе использования объекта, являются динамическими.

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

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

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

Рассмотрим ограничение доступа НА ПРИМЕРЕ стека. Пусть у нас объявлен массив, организованный, как стек. Мы можем пользоваться им как стеком, но можем так же, при необходимости, обратиться непосредственно к каждому элементу, т.к. объявлен он как массив. А если мы объявим его, как стек, то доступ будет ограничен, и мы сможем им пользоваться как стеком и только.

Модульность. В таких ЯП, как С++ модульность является элементом конструкции, а классы и объекты составляют логическую структуру системы. Эти абстракции организуются в модули, формируя физическую структуру системы.

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

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

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

Основным видом иерархии по типу является иерархия наследования. Наследование – это такое соотношение между классами, когда один класс использует структурную или функциональную часть другого класса или классов, соответственно простое или множественное наследование.

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

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

Строгая типизация ограничивает перечень абстракций, которые могут быть использованы в конкретных процедурах. Т.е. ЯП строго типизирован, если требует описания типа каждой переменной, параметра или поля. В таких ЯП все переменные проходят проверку на соответствие типов.

Если концепция строгой типизации связана с контролем соответствия типов, то концепция связей относится ко времени, когда имена связываются с определенными типами. Статическая или ранняя связь означает, что типы всех переменных определены уже на этапе компиляции. При динамической или поздней связи типы переменных определяются только на этапе выполнения программы.

Концепции типизации и связей являются независимыми, а следовательно ЯП может быть строго типизирован как со статическими, так и с динамическими связями.

Параллелизм. Каждая программа включает по крайней мере один канал управления. В параллельной системе таких каналов может быть несколько. Некоторые из них могут быть временными, а другие сохраняться в течении всего времени выполнения программы. Реальная параллельность достигается только в многопроцессорных системах, а системы с одним процессором имитируют параллельность только за счет разделения времени. Параллелизм связан с абстрагированием процессов и синхронизацией. Объект является основой, объединяющей обе эти концепции. Каждый объект, как абстракция реальности может представлять собой отдельный канал управления, т.е. абстракцию процесса. Такой объект называется активным. Для сложных систем, построенных на основе OOD реальность может быть представлена, как совокупность взаимодействующих объектов , часть которых является активными. Исходя из этого, параллелизм можно определить как свойство объектов находиться в активном или пассивном состоянии. Проще говоря, параллелизм – это возможность одновременного функционирования некоторого числа объектов.

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

Существует несколько видов устойчивости объектов:

  • промежуточные результаты вычислений,

  • локальные переменные,

  • глобальные переменные,

  • данные, сохраняемые между вызовами основной программы,

  • данные, не изменяющиеся в различных версиях программы,

  • данные, которые переживают программу.

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