Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Modelirovanie_sistem_uch_posobie_izdatelstvo.doc
Скачиваний:
101
Добавлен:
15.04.2019
Размер:
5.93 Mб
Скачать

7.1. Принципы и методология объектно-ориентированного подхода.

Начиная с 70-80-ых годов прошлого века развитие аппаратных средств существенно опережало развитие систем и средств программирования. Чтобы выправить положение, были предложены различные подходы к увеличению производительности труда программиста. Среди этих попыток выделяется такое популярное направление, как объектно-ориентированный подход (ООП) к конструированию и кодированию программ. Особую роль в популярности этого подхода сыграло как его тесная связь с графическими интерфейсами пользователя, так и включение элементов этого подхода в реализации объектно-ориентированных языков программирования, таких как C++, C#, Java, Object Pascal и др.

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

OOП базируется на пяти фундаментальных понятиях: объект, класс, инкапсуляция, наследование и изоморфизм, [13].

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

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

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

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

  • обеспечит защиту объектов непреднамеренного изменения или удаления.

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

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

Следует отметить два момента:

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

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

Объектно-ориентированная методология (ООМ). ООМ ориентирована, прежде всего, на создание больших сложных систем, коллективную их разработку, последующее активное сопровождение при эксплуатации и регулярные модификации (реижиниринг), [14].

ООМ включает следующие части:

  • объектно-ориентированный анализ (OOA),

  • объектно-ориентированное проектирование (OOD),

  • объектно-ориентированное программирование (OOР).

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

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

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

OOP ‑ это технологии, использующие для реализации OOD-проектов языки объектно-ориентированные программирования (ООЯП). Подробности этих технолгий будут описаны в разд. 7.5.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]