Файл: Применение объектно-ориентированного подхода при проектировании информационной системы.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 11.03.2024

Просмотров: 23

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Содержание:

Введение

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

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

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

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

Основным источником информации для этой работы является работа известных авторов Буч Г., Рамбо Д., Якобсо И., написавших достаточное количество книг и монографий и получивших мировое признание. Также в качестве источников были взяты работы и учебники высших технических заведений, написанные преподавателями и научными работниками и рекомендованные министерством образования.

1. Объектно-ориентированные концепции

Объектно-ориентированное представление информационных систем строится на основных концепциях построения объектной модели, основными принципами которой являются:

  • Абстрагирование;
  • Инкапсуляция;
  • Модульность;
  • Иерархия.

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


Абстракция концентрирует внимание на внешнем представлении объекта, позволяет отделить основное в поведении объекта от его реализации. Абстракцию можно построить, если выделить основные обязанности объекта. Например, для датчика скорости главной обязанностью будет являться отображение скорости. Однако, какую именно скорость будет отображать датчик является деталями его реализации. Таким образом, абстракция отражает суть объекта, опуская его второстепенные детали. [6, с. 188]

Инкапсуляция — физическая локализация свойств и поведения в рамках единственной абстракции (рассматриваемой как «черный ящик»), скрывающая их реализацию за общедоступным интерфейсом. [3, с. 164]

Инкапсуляция является процессом разделения элементов абстракции на секции с различной видимостью. Инкапсуляция служит для отделения интерфейса абстракции от ее реализации. Например, для регулятора скорости главной его обязанностью будет являться возможность увеличения и уменьшения скорости некоторой машины через некоторый порт. Регулировать скорость необходимо по специальному алгоритму, который выполняется этим регулятором. Предотвращение прямого доступа к порту извне и есть инкапсуляция. [6, с. 189-190]

Модульность — это свойство системы, связанное с возможностью ее декомпозиции на ряд внутренне сильно сцепленных, но слабо связанных между собой подсистем (модулей). [3, с. 165]

В больших системах, состоящих из множества компонентов с сотнями классов, модульность помогает управлять сложностью. Модули в данном случае служат физическими контейнерами, в которых объявляются классы и объекты логической разработки. Важно также отметить, что определение классов и объектов выполняется в ходе логической разработки, а определение модулей – в ходе физической разработки системы. [6, с. 190]

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

Двумя важными инструментами иерархической организации в объектно-ориентированных системах являются [6, с. 191]:

  • Структура классов;
  • Структура объектов.

Иерархическая структура классов строится с помощью наследования. Наследование определяет отношение между классами, где класс разделяет структура или поведение, определенное в другом или нескольких других классах.

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

2. Объектно-ориентированный подход

2.1 Общие положения

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

К основным понятиям объектно-ориентированного ориентированного подхода относятся [3, с. 166]:

  • Объект;
  • Класс;
  • Атрибут;
  • Операция;
  • Полиморфизм;
  • Компонент;
  • Связи.

Объект определяется как осязаемая сущность (tangible entity) предмет или явление (процесс), имеющие четко определяемое поведение. Объект может представлять собой абстракцию некоторой сущности предметной области (объект реального мира) или программной системы (архитектурный объект). Любой объект обладает состоянием (state), поведением (behavior) и индивидуальностью (identity).

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

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


Каждый объект обладает уникальной индивидуальностью. Индивидуальность — это свойства объекта, отличающие его от всех других объектов [3, с. 166].

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

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

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

Операция — это реализация услуги, которую можно запросить у любого объекта данного класса. Операции отражают поведение объекта. Операция-запрос не изменяет состояния объекта. Операция-команда может изменить состояние объекта. Результат операции зависит от текущего состояния объекта

Полиморфизм — это способность скрывать множество различных реализаций под единственным общим интерфейсом.

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

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

Между элементами объектной модели существуют различные виды связей. К основным типам связей относятся связи ассоциации, зависимости и обобщения.

Ассоциация (association) — это семантическая связь между классами. Ассоциация отражает структурные связи между объектами различных классов.

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

Зависимость (dependency) — связь между двумя элементами модели, при которой изменения в спецификации одного элемента могут повлечь за собой изменения в другом элементе.

Обобщение (generalization) — связь «тип-подтип» реализует механизм наследования (inheritance). Большинство объектно-ориентированных языков непосредственно поддерживают концепцию наследования. Она позволяет одному классу наследовать все атрибуты, операции и связи другого [3, с. 166-176].

Непосредственное использование описанных сущностей и компонентов с помощью языка UML будет рассмотрено далее.


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

Объектно-ориентированную технологию зачастую выбирают основной моделью разработки информационных систем по двум причинам [2, с. 199]:

  • Желание вырваться вперед на рынке за счет меньшего времени разработки, лучшей гибкости продукта, лучшей предсказуемости хода работ;
  • Обратившись к новым технологиям, можно решить сложные проблемы.

Использование объектной модели позволяет создает обозримую и достаточно легко понимаемую схему объектно-ориентированного проекта, обладающую всеми преимуществами объектно-ориентированного метода. Основными преимуществами являются [2, с. 199]:

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

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

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

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

Особенностью объектно-ориентированных систем является то, что они состоят их абстракций разных уровней. С точки зрения программного обеспечения такой ИС это означает, что размер методов такой структуры является сравнительно небольшим, так как они составлены из методов, соответствующих более низким уровням абстракций. Многочисленность методов приводит к излишнему количеству вызовов, что приводит к значительному потреблению ресурсов и для некоторых систем вообще является неприемлемым. Такое ухудшение характеристик связано с вложенностью классов: класс, находящийся на самом конце линии наследования, может иметь множество суперклассов. Такое ощутимый удар по производительности информационной системы наносит динамическое создание и уничтожение объектов класса. [2, с. 200-201]