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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



 

Все методы проектирования программных систем можно объединить в три группы:

– структурное проектирование сверху вниз, в основе которого лежит алгоритмическая декомпозиция, и которое не может обеспечить создание сложных систем и неэффективно в объектно-ориентированных языках;

– метод потоков данных, когда система рассматривается как преобразователь входных потоков в выходные;

– объектно-ориентированное проектирование.

Объектно-ориентированное программирование (OOP – Object-oriented programming) – это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования. Следует различать «объектные» («объектно-базированные») и «объектно-ориентированные» языки программирования.

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

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

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

Объектная модель

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

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

Выбор правильного набора абстракций – самая главная задача.

Абстракции можно объединить в 4 группы.

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

Абстракция поведения: объект состоит из обобщенного множества операций.

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

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

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

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

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

(Следует обратить внимание: «Инкапсуляция не спасает от глупости; она защищает от ошибок, но не от жульничества» – Б. Страуструп).

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

Модульность – это свойство системы разлагаться на внутренне связные, но слабо связанные между собой модули. Логическое продолжение инкапсуляции, ее «практическая проекция».

Иерархия – это упорядочение абстракций, расположение их по уровням. Различают два вида иерархических структур: структура классов («is-a») и структура объектов («part of»).

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

Структура объектов представляет иерархию типа «агрегация», в которой один объект содержится внутри другого. Пример: «окно содержит полосы прокрутки, меню, строку состояния», «управляющий элемент в теплице содержит датчики температуры, влажности, кислотности и освещения».

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

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

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

Спектр сохраняемости объектов охватывает:

– промежуточные результаты вычисления выражений;

– локальные переменные в подпрограммах;

– собственные (глобальные) переменные и динамически создаваемые данные;

– данные, сохраняющиеся между сеансами выполнения программы;

– данные, сохраняемые при переходе на новую версию программы;

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

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

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

 



Поделиться:


Последнее изменение этой страницы: 2017-02-10; просмотров: 217; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.20.238.187 (0.006 с.)