Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Применение объектно-ориентированного подхода при проектировании информационной системы (Понятие объектно-ориентированного подхода )

Содержание:

ВВЕДЕНИЕ

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

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

В начале 80-х годов началось повсеместное внедрение в практику программирования методов проектирования. Например, был введен ГОСТ 19.102—77, обозначающий стадии и этапы разработки программных продуктов. Этот стандарт входит в группу стандартов единой системы программной документации (ЕСПД). Система ЕСПД сыграла значимую положительную роль в практике отечественного программирования и продолжает существовать, пережив без значительных изменений уже несколько новых технологий программирования.

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

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

В связи с этим, было разработано несколько достаточно эффективных подходов декомпозиции, т.е. разбиения большой задачи на меньшие подзадачи. Сначала начал применяться модульный подход, в котором большие программы разделяются на самостоятельные модули. Далее программы начали писать "сверху вниз", описывая сначала крупные модули и постепенно спускаясь к детализации. Методы, основанные на этих подходах, имеют общую черту: в них данные и код, их обрабатывающий, существуют отдельно друг от друга.

В результате многолетних исследований был разработан и опробован так называемый объектно-ориентированный подход (1967г. - язык Simula67, 1983 г. - язык C++). Одно из основных преимуществ ООП по сравнению с более ранними методами построения программных систем - тесная связь данных и кода работающего с ними.

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

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

1. Постановка задачи

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

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

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

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

  1. Понятие объектно-ориентированного подхода;
  2. Понятие информационной системы;
  3. Применение объектно-ориентированного подхода при проектировании информационной системы;
  4. Примеры программных продуктов для реализации объектно-ориентированного подхода;

Все эти подзадачи будут решены в ходе выполнения работы.

2. Понятие объектно-ориентированного подхода

2.1. Описание

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

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

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

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

Основная информация об объектах, классах и принципах ООП хорошо описана в учебнике Камаева [1].

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

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

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

Главные принципы объектно-ориентированного подхода:

  1. Абстракция;
  2. Инкапсуляция;
  3. Наследование;
  4. Полиморфизм.

2.2. Абстракция

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

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

Пример уровней абстракции показан на Рисунке 1.

Рисунок 1. Уровни абстракции.

2.3. Инкапсуляция

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

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

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

Перечислим несколько преимуществ инкапсуляции:

  1. Сокрытие информации. Когда доступ к данным осуществляется только через методы, можно скрыть детали реализации объекта. Позднее, если реализация изменится, нужно будет изменить только реализацию методов доступа к полям. Те же части программы, которые использовали этот класс, не будут затронуты.
  2. Надежность данных. С помощью инкапсуляции можно предотвратить изменение элемента данных, выполнив в методе дополнительную проверку значения на корректность. Таким образом можно обеспечить надежное состояние объекта.
  3. Предусмотренные побочные эффекты. Можно гарантировать, что каждый раз, когда выполняется обращение к полю объекта, синхронно с ним выполняется какое-либо специальное действие.
  4. Целостность ссылок. Перед доступом к объекту, связанному с данным объектом, можно убедиться, что косвенное поле содержит корректное значение (ссылку на экземпляр).

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

Картинки по запросу инкапсуляция

Рисунок 2. Инкапсуляция

2.4. Наследование

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

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

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

  1. моделирует концептуальную структуру предметной области;
  2. позволяет повторно использовать код;
  3. обеспечивает пошаговое программирование больших систем путем многократной конкретизации классов.

На Рисунке 3 приведен пример наследования.

Картинки по запросу наследование ооп

Рисунок 3. Наследование

2.5. Полиморфизм

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

Кратко смысл полиморфизма можно выразить фразой: «один интерфейс, множество реализаций». Возможность определять разную реализацию одному методу называется перегрузкой метода.

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

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

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

Картинки по запросу полиморфизм ооп

Рисунок 4. Полиморфизм

2.6. Достоинства и недостатки

Рассмотри достоинства объектно-ориентированного подхода.

  1. Данный подход помогает справиться с такими сложными проблемами, как:
    1. уменьшение сложности программы;
    2. повышение надежности программы;
    3. обеспечение возможности модификации отдельных модулей программы без изменения остальных его компонентов;
    4. обеспечение возможности повторного использования отдельных модулей программы.
  2. Возможность обработки разнородных структур данных;
  3. Сокращение времени на разработку;
  4. Компоненты многоразового использования содержат меньше ошибок, так как не раз подвергались проверке.

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

  1. Очень важно четко знать и понимать основные принципы: абстракция, инкапсуляция, наследование и полиморфизм. А также понимать концепцию объектов и классов;
  2. Многоразовое использование предполагает знакомство с огромным количеством библиотек классов;
  3. Проектирование классов – сложная, итеративная разработка.

2.7. Выводы

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

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

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

3. Понятие информационной системы

Информационная система – это система, которая предназначена для обработки, хранения и поиска информации. Она способна своевременно обеспечивать надлежащих людей надлежащей информацией, а именно удовлетворять конкретные информационные потребности в рамках определенной предметной области. Об информационных системах основная информация получена из учебников [2] и [3].

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

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

Информационные системы также классифицируются:

  1. По функциональному назначению:
    1. производственные,
    2. коммерческие,
    3. финансовые,
    4. маркетинговые

и др.;

  1. По характеру использования результатной информации:
    1. информационно-поисковые, предназначенные для сбора, хранения и выдачи информации по запросу пользователя;
    2. информационно-советующие, предлагающие пользователю определенные рекомендации для принятия решений (системы поддержки принятия решений);
    3. информационно-управляющие, результатная информация которых непосредственно участвует в формировании управляющих воздействий.
  2. По степени распределённости:
    1. настольные (desktop), или локальные ИС, в которых все компоненты (БД, СУБД, клиентские приложения) находятся на одном компьютере;
    2. распределённые (distributed) ИС, в которых компоненты распределены по нескольким компьютерам.
  3. По степени автоматизации:
    1. автоматизированные: информационные системы, в которых автоматизация может быть неполной (то есть требуется постоянное вмешательство персонала);
    2. автоматические: информационные системы, в которых автоматизация является полной, то есть вмешательство персонала не требуется или требуется только эпизодически.

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

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

4.1. Проектирование пользовательского интерфейса

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

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

UML-диаграммы можно создавать как в средах разработки программного обеспечения (например, Visual Studio), так и в любом графическом редакторе, как и ER-диаграммы. Главное, придерживаться правил построения схем и диаграмм. О принципах построения и использовании UML-диаграмм можно узнать из источника [4].

Самым верхним уровнем UML-диаграмм является диаграмма прецедентов (Use Case Diagram). Главным действующим лицом в таких диаграммах выступает пользователь (Actor).

Диаграмма прецедентов информационной системы представлена на Рисунке 5.

Рисунок 5. Диаграмма прецедентов

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

Следующий шаг в проектировании информационной системы – создание модулей будущего программного продукта. Очень распространенным паттерном проектирования в программировании является паттерн MVP (Model View Presenter). Данный шаблон проектирования в основном применяется для построения пользовательских интерфейсов. Он выделяет три модуля программного продукта, каждый из которых имеет свой функционал. Схематически паттерн представлен на Рисунке 6.

Картинки по запросу mvp паттерн

Рисунок 6. MVP

  1. Модель (Model) – модуль, который хранит в себе всю бизнес-логику и, если это необходимо, получает данные из базы данных.
  2. Вид (View) – модуль, который отображает данные из модели и обращается к представителю за обновлениями.
  3. Представитель (Presenter) – модуль, который реализует взаимодействие между моделью и видом, обновляет данные в модели по мере действия пользователя и визуальное их представление.

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

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

На Рисунке 7 показан пример диаграммы классов для информационной системы малого бизнеса.

Рисунок 7. Модели

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

Модуль вида представляет собой некий объект для отображения информации пользователю. Именно этот объект пользователь видит на своем экране при работе с информационной системой. Вид может быть реализован в виде:

  1. Настольного приложения (Например, Windows Forms). Пример настольного приложения для работы с базой данных показан на Рисунке 8.

Картинки по запросу winforms база данных

Рисунок 8. Windows Forms

  1. Веб-приложения (Например, сайт). Пример сайта для работы с базой данных показан на Рисунке 9.

Картинки по запросу сайт админка база данных

Рисунок 9. Веб-приложение

  1. Приложения на мобильном устройстве (Android или IOS). Пример такого приложения показан на Рисунке 10.

Картинки по запросу android  приложение база данных

Рисунок 10. Android-приложение

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

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

  1. Главное окно с возможностью выбора сущности для работы с данными
  2. Отдельные окна для каждой из сущностей с возможностью просмотра, добавления, изменения, удаления, поиска и сортировки данных.

Диаграмма классов такого вида представлена на Рисунке 11.

Рисунок 11. Вид

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

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

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

Модель внешнего вида главного окна представлена на Рисунке 12.

Рисунок 12. Главное окно

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

Модель внешнего вида для работы с одной из таблиц базы данных можно увидеть на Рисунке 13.

Рисунок 13. Окно "Клиенты"

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

Представитель в виде диаграммы классов показан на Рисунке 14.

Рисунок 14. Представитель

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

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

4.2. Проектирование базы данных

Для проектирования реляционной базы данных будет использована ER-диаграмма («сущность-связь»). Структура базы данных повторяет модели, описанные ранее в пользовательском интерфейсе. В базе данных информационная система хранит все данные, используемые в предметной области. ER-диаграмма базы данных предприятия малого бизнеса приведена на Рисунке 19.

Рисунок 19. ER-диаграмма

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

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

4.3. Общее представление проекта информационной системы

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

Его можно увидеть на Рисунке 20

Рисунок 20. Проект информационной системы

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

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

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

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

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

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

  1. Visual Studio
  2. IntelliJ IDEA
  3. NetBeans
  4. Eclipse
  5. CodeLite

и пр.

ЗАКЛЮЧЕНИЕ

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

Опыт проектирования информационной системы стал значительным вкладом в становление студента как специалиста.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Камаев, В.А. Технологии программирования: учебник / В.А. Камаев, В.В. Костерин. - М.: Высшая школа, 2006. - 454 c.
  2. Грекул, В.И. Проектирование информационных систем: учебник / В.И. Грекул, Г.Н. Денищенко, Н.Л. Коровкина. – М.: Интернет-Университет информационных технологий, 2005. - 304 с.
  3. Избачков, Ю. Информационные системы: учебник / Ю. Избачков, В. Петров. – Москва: Наука, 2014. - 656 c.
  4. Ларман Применение UML и шаблонов проектирования: учебное пособие / Ларман, Крэг. – М.: Вильямс, 2015. - 624 c.