
- •Тема 2.3 Объектно-ориентированное проектирование
- •2.3.1 Объектный подход
- •2.3.2 Сложная система с точки зрения объектного подхода
- •2.3.3 Основные положения объектного подхода
- •Структура классов
- •Архитектура модулей
- •Составляющие объектного подхода.
- •Классы и объекты.
- •Объект.
- •Отношения между объектами.
- •Классы.
- •Отношения между классами.
Тема 2.3 Объектно-ориентированное проектирование
2.3.1 Объектный подход
По мере развития программирования выделились две основные тенденции:
переход от программирования отдельных деталей к программированию более крупных компонентов,
совершенствование языков программирования высокого уровня.
Задачи, решаемые программистами, становились все сложнее, и при их реализации методами структурного проектирования возникали определенные трудности. В результате был создан новый подход, в основу которого было положено понятие “ОБЪЕКТ”, которое объединило в себе данные и обрабатывающие их функции.
Если рассматривать объект, как часть чего-то большего, и базируясь на этом строить иерархию, то мы получим структуру объектов (или структурную иерархию). Если рассматривать объект как нечто, принадлежащее к определенному типу – классу, то мы получим структуру классов (или типовую иерархию).
Объектно-ориентированное проектирование базируется на объектной декомпозиции. В структурном проектировании под декомпозицией мы понимали такое разделение системы, при котором каждый модуль выполняет одну из функций, т.е. один из этапов общего процесса. И этот принцип лежал в основе построения иерархической структуры системы.
При объектной декомпозиции систему можно разделить, выбрав в качестве критерия декомпозиции принадлежность ее элементов к различным абстракциям данной предметной области.
Абстракцией является такая идея, которую можно изложить, проанализировать и понять независимо от механизмов ее реализации. Обнаружение общих абстракций и их механизмов облегчает понимание системы.
Словарем предметной области будем называть набор понятий для данной задачи.
Если при функциональной декомпозиции мы разделяли задачу на шаги:
получить изменения ,
прибавить к контрольной сумме,
то при объектно-ориентированной декомпозиции мы будем идентифицировать объекты:
файл изменений,
контрольная сумма.
Хотя обе эти конструкции служат для решения одной и той же задачи, они делают это различными способами.
К вопросу о том, какой же способ декомпозиции более правильный, необходимо подходить комплексно. Т.е. попытаться разложить систему, как одним, так и другим способом. Однако невозможно сконструировать систему, применяя одновременно и тот и другой метод, т.к. они различны по сути.
Объектная декомпозиция предполагает эволюционный путь развития системы, базирующийся на устойчивых промежуточных формах. При этом снижается риск создания сверх сложной системы, поскольку система развивается на базе небольших подсистем, что делает систему более открытой, гибкой и легко модернизируемой.
Правильно разделив систему на небольшие автономные подсистемы и по отдельности отладив каждую из них, можно получить конечный продукт практически свободный от ошибок.
2.3.2 Сложная система с точки зрения объектного подхода
1)Сложная система представляется в виде иерархии подсистем и состоит из взаимодействующих подсистем, каждая из которых так же может быть разделена на подсистемы, и так до самых нижних уровней абсттракции.
2) Выбор нижнего уровня абстракции произволен :и зависит от наблюдателя. И следовательно нижний уровень для одного может оказаться достаточно высоким для другого. Кроме того, в процессе развития системы объекты, которые на начальных этапах считались сложными на более поздних этапах рассматриваются, как элементы нижних уровней абстракции, из которых строятся более сложные компоненты.
3)Иерархическая система называется разложимой, если она может быть разделена на независимые части и почти разложимой,если ее составляющие не являются абсолютно независимыми.
4)Сложная система, как правило состоит из нескольких подсистем разного типа, которые реализуются в различном порядке и в разных комбинациях.
5)Сложная иерархическая система имеет тенденцию к развитию во времени. Причем этот процесс идет значительно быстрее, если для нее существуют устойчивые промежуточные формы.
Если объединить понятия структуры классов, структуры объектов и вышеперечисленные признаки сложной системы, то легко заметить, что фактически любую программную систему можно представить одной и той же формой сложной декомпозиции.
D1
D5
D6
D7
D8
На схеме мы видим две иерархии принадлежащие одной сложной системе:
структуру классов и
структуру объектов.
Каждая из них является многоуровневой. Как в той, так и в другой более абстрактные элементы строятся на базе более примитивных. Среди объектов одного уровня существуют ярко выраженные связи. Каждому уровню абстракции соответствует свой уровень сложности, причем структура классов и объектов не являются независимыми. Каждый объект в структуре объектов представляет определенный класс. Как правило объектов в сложной системе гораздо больше чем классов.