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

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

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

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

Добавлен: 04.04.2023

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

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

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

Введение

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

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

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

  1. Понять, что такое объектно-ориентированное программирование, какие основные преимущества ООП и недостатки.
  2. Изучить применяемость объектно-ориентированного программирования при разработке автоматизированных информационных систем, а также рассмотреть примеры АИС построенных на ООП.

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

Глава 1. Что такое «ООП»?

1.1 Основные понятия объектно-ориентированного программирования

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

Исходя из данного определения, следует выделить три основных момента:

В качестве базовых элементов используются объекты, а не алгоритмы;

Любой объект считается экземпляром определенного класса;

Классы имеют иерархическую организацию.

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

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


На рисунке 1 приведено схематическое изображение «инкапсуляции».

Рисунок 1. Схема «Инкапсуляция»

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

На рисунке 2 приведено схематическое изображение схемы «Наследования».

Рисунок 2. Схема «Наследование»

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

На рисунке 3 приведено схематическое изображение схемы «Полиморфизм».

Рисунок 3. Схема «Полиморфизм»

Абстракция – присвоение объекту характеристик, которые выделяют его от всех других объектов, четко определяя его концептуальные границы.

Композиция – объект может быть составным и включать в себя другие объекты.

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

ООП предполагает собой правильное использование конкретных тонкостей объектно-ориентированных языков программирования, а также эффективности их использования.

1.2 Основные понятия объектно-ориентированного проектирования


При проектировании, особое внимание уделяется правильному и эффективному структурированию сложных систем.

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

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

На рисунке 4 представлен схематический пример работы программы-редактора, написанной на ООП.

Рисунок 4. Схема «Иерархия объектов программы-редактора»

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

Объектно-ориентированная декомпозиция является основным принципам ООП.

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

1.3 Обоснование выбора ООП при проектировании информационной системы

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

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

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

Чем объемнее программа, тем важнее разделить ее на большее количество модулей.

В этом смысле, классы, являются самым лучшим методом разделения программы на детали.

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

Рисунок 5. Схема зависимостей ООП


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

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

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

Инкапсуляция информации дает ей наибольшую защиту от несанкционируемого доступа.

Используя ООП у программиста больше возможностей создавать расширяемые системы, так называемые extensible systems. Расширяемые системы являются одним из ключевых преимуществ ООП по сравнению с другими подходами.

Расширение типа и вытекающий из него полиморфизм переменных оказываются полезными преимущественно в следующих ситуациях:

  1. Проведение работ с разнородными структурами данных. Программы могут работать, не утруждая себя изучением вида объектов. Новые виды объектов можно добавить в любой момент.
  2. Возможность изменения поведения во время выполнения операции. Во время выполнения операции один объект, может быть, подвергнут замене другим, без срыва операции.
  3. Реализация первичных компонентов.
  4. При возможности модернизации объектов, алгоритмы можно модифицировать до такой степени, что они смогут работать с несколькими видами объектов, значительно упрощая выполнение операции и разгружая аппаратное обеспечение.

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

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

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

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

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


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

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

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

  1. Необходимо строгое понимание базовых концепций, такие как классы, наследование и динамическое связывание. Программисты, которым знакомо слово «модуль» , а также с абстрактными типами данных, эта задача покажется легче, чем начинающим программистам.
  2. Для многоразового использования модулей, программисту необходимо знать большие библиотеки классов. Порой это оказывается сложнее, чем изучение нового языка программирования. Библиотека классов – это как отдельный виртуальный язык, который включает в себя сотни типов и тысячи различных операций.
  3. Проектирование классов, значительно сложнее и трудозатратнее, чем их дальнейшее использование. При проектировании класса, также как и при проектирование языка от программиста требуется большой опыт. Проектирование производится практически «вслепую», где приходится учится только на своих ошибках.
  4. Без практического применения классов, их изучение дается значительно труднее. Только приобретя небольшой опыт в программировании и работе с языками ООП, начинаешь чувствовать себя увереннее.

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

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

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

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