Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Объектно-ориентированное моделирование




Разработка программного обеспечения связана с изготовлением высококачественных систем при умеренных затратах на выполнение работ, а следовательно, и умеренной стоимости. При разработке систем повышенной сложности все попытки решить проблему качества программного обеспечения с помощью функциональных методов разработки, языков программирования сверхвысокого уровня (Very High Level Language, VHLL), CASE-средств, технологий прототипирования, систем баз данных и генераторов кода не приводили к успеху.

Толчком к переходу на объектно-ориентированные методы послужило то, что разработка многих сложных сиcтем функциональными методами либо не завершались в срок, либо требовали резкого увеличения бюджета, либо не использовались, потому что в них содержались существенные ошибки. Так отчеты Standish Group (1995—1997гг.) подтвердили, что почти 59% проектов США были аннулированы или выходили за рамки выделенных на них ассигнований и сроков разработки.

Интерес к объектно-ориентированному моделированию существенно возрос в связи с тем, что объектные модели коренным образом изменили традиционную функциональную архитектуру программных систем. На основе таких моделей строится архитектура управляемая моделями (Model-Driven Architecture, MDA, состоящая из взаимосвязанных определёнными отношениями и строго типизированных групп (классов) программных объектов, моделирующих динамические сущности[14] реального или идеального мира.

Подчеркнём, что имитационное и функциональное моделирование ориентированы на моделирование процессов функционирования информационных систем. Для полномасштабного моделирования сложных информационных систем, таких как АСУ/КИС, этого явно недостаточно. Модели таких систем должны быть комплексными, (охватывающими достаточно широкий набор их архитектурных компонентов – информационных, программных, инфраструктурных, подсистем управления и т.д.) и объектно-ориентированными, в основе которых лежат концептуальные модели предметных областей таких систем.

Современные инструментальные средства разработки объектно-ориентированных систем характеризуются следующими свойствами:

· Поддержка генерации кода и обратного проектирования (т.е. восстановление визуальной модели по программному коду) сразу для нескольких языков, включая: Object Pascal, Visual Basic, C++, C#, Java, PowerBuilder, CORBA Interface Definition Language (IDL), а также языков определения данных (Data Definition Languages) для большинства СУБД.

· Поддержка визуального объектно-ориентированного моделирования и полная совместимость с языком UML (Unified Modeling Language), который начиная с 1997 года, определён как стандарт для графического описания динамических моделей.

· Ориентация на проектировщиков информационных систем, менеджеров и программистов.

Объектно-ориентированное моделирование обеспечивает следующие преимущества:

· обеспечивает возможность повторного использования объектов и удобный способ их изменения;

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

· упрощает изменение моделей, поскольку изменения в объекте-предке отображаются в объектах-потомках;

· предоставляет возможность нескольким программистам работать над одним большим проектом.

· Существенно облегчает разработку, отладку, сопровождение и модернизацию сложных программных систем.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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







Дата добавления: 2014-11-12; просмотров: 4702. Нарушение авторских прав


Рекомендуемые страницы:


Studopedia.info - Студопедия - 2014-2019 год . (0.003 сек.) русская версия | украинская версия