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

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

Содержание:

Введение

Многие современные языки намеренно сформированы с целью облегчения объектно-ориентированного программирования.

Одни языки соответствуют основам объектно-ориентированного подхода (ООП) в абсолютной мере – в них все без исключения ключевые элементы являются объектами, которые имеют состояние и связанные методы. Образцы подобных языков – Smalltalk, Eiffel. Имеются гибридные языки, сочетающие объектную подсистему в целостном виде с подсистемами других парадигм как «два и более языка в одном», дающие совмещать в одной программе объектные модели с иными, и размывающие грань между объектно-ориентированной и другими парадигмами за счёт нестандартных возможностей, балансирующих между ООП и другими парадигмами (таких как множественная диспетчеризация, параметрические классы, возможность манипулировать методами классов как самостоятельными объектами, и др.). Примеры таких языков: CLOS, Dylan, OCaml, Python, Ruby, Objective-C. Но, наиболее распространены языки, включающие средства эмуляции объектной модели поверх более традиционной императивной семантики. Алан Кэй назвал такие языки «склеиванием возможностей» (англ. agglutination of features) в противовес «чистоте стиля» (англ. crystalization of style) языков, воплощающих определенную парадигму непосредственно. Образцы таких языков – Симула, C++, Visual Basic, Delphi, Модула, Модула-2, Java, C#, PHP.

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

Изучением применения объектно-ориентированного подхода при проектировании информационной системы занимались такие ученые как: В.В. Бахтизин [1], Л.Г. Гагарина [5], Е.Ю. Головина [7], Г.Н. Исаев [10] и др.

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

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

Объект исследования: объектно-ориентированный подход.

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

Для достижения цели были поставлены следующие задачи:

  1. Раскрыть объектно-ориентированный подход: сущность и основные понятия.
  2. Рассмотреть преимущества и недостатки объектно-ориентированного подхода.
  3. Изучить объектно-ориентированный подход в Visual Basic при проектировании информационной системы.
  4. Изучить объектно-ориентированный подход в Delphi при проектировании информационной системы.
  5. Изучить объектно-ориентированный подход в C++ при проектировании информационной системы.

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

1.Теоретические основы объектно-ориентированного подхода

1.1.Объектно-ориентированный подход: сущность и основные понятия.

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

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

Понятие «объект» в первый раз было использовано около тридцати лет назад в технических средствах при попытках отойти от традиционной архитектуры фон Неймана и преодолеть барьер между высоким уровнем программных абстракций и низким уровнем абстрагирования на уровне компьютеров. С объектно-ориентированной архитектурой также непосредственно сопряжены объектно-ориентированные операционные системы. Но более существенный вложение вклад в объектный подход был внесен объектными и объектно-ориентированными языками программирования [17, с. 217].

На объектный подход проявили воздействие кроме того развивавшиеся проявили воздействие кроме того методы моделирования баз данных, особо подход «сущность – связь».

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

  • абстрагирование (abstraction);
  • инкапсуляция (encapsulation);
  • модульность (modularity);
  • иерархия (hierarchy).

Помимо ключевых существуют ещё 3 добавочных элемента, никак не представляющих в различие с ключевых определённо неотъемлемыми:

  • типизация (typing);
  • параллелизм (concurrency);
  • устойчивость (persistence) [16, с. 89].

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

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

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

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

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

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

Устойчивость – свойство объекта существовать во времени (вне зависимости от процесса, породившего данный объект) и (или) в пространстве (при перемещении объекта из адресного пространства, в котором он был основан) [10, с. 183].

Основные понятия объектно-ориентированного подхода: объект и класс.

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

Объект обусловливается равно как осязаемая реальность (tangible entity) – предмет или явление, имеющие четко определяемое поведение. Объект обладает состоянием, поведением и индивидуальностью. Состав и поведение похожих объектов определяют общий для них класс. Термины «экземпляр класса» и «объект» являются эквивалентными. Состояние объекта характеризуется перечнем всех возможных (статических) свойств данного объекта и текущими значениями (динамическими) каждого из этих свойств. Поведение определяет влияние объекта на другие объекты и, наоборот, относительно изменения состояния этих объектов и передачи сообщений. По другому изъясняясь, поведение объекта полностью определяется его действиями. Индивидуальность – это свойства объекта, отличающие его с абсолютно всеми иными объектами.

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

Класс – это большое число объектов, сопряженных одинаковостью структуры и действия. Каждый объект считается экземпляром класса. Установление классов и объектов – одна из самых трудных задач объектно-ориентированного проектирования [8, с. 56].

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

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

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

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

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

1.2.Преимущества и недостатки объектно-ориентированного подхода.

Главное превосходство ООП – возможность формировать классы и объекты визуальным способом, т.е. прорисовывать на экране ключевые элементы, определять цвет, местоположение элементов и т.д. При определённом навыке объекты можно моментально формировать, записывая в методы фрагменты программного кода, определяющие их поведение при наступлении определённых событий. В дальнейшем из визуальных элементов и этих программных фрагментов генерируется общая программа. Этим занимается сама система [4, с. 223].

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

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

В объектно-ориентированных системах декомпозиция системы на объекты осуществляется с учётом удобства последующего детального анализа, разработки и внедрения системы. Один из более значимых критериев выделения компонентов системы является минимизация числа аппаратно-зависимых её компонент. Это дает возможность уменьшить расходы на адаптацию системы при переносе на другую аппаратную платформу, а кроме того сократить число неприменяемых компонент при работе на конкретной платформе. Решение данной трудности осуществляется путём исследования существующих платформ, оценки направлений их развития, анализа возможностей использования принятых и (либо) предписания новейших стандартов взаимодействия системы с аппаратной платформой [1, с. 73].

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

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

  • Классы дают возможность осуществлять конструирование из полезных компонент, обладающих простыми инструментами, что дает возможность абстрагироваться от деталей реализации.
  • Данные и операции вместе формируют определенную сущность и они не «размазываются» по всей программе, как это нередко бывает в случае процедурного программирования.
  • Локализация кода и данных делает лучше наглядность и удобство сопровождения программного обеспечения.
  • Инкапсуляция информации оберегает наиболее критичные данные от несанкционированного доступа [5, с. 273].

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

Расширение типа (type extension) и происходящий из него полиморфизм переменных становятся нужными в большей степени в следующих ситуациях.

  • Обработка неоднородных структур данных. Программы могут работать, не утруждая себя изучением вида объектов. Новые виды могут быть добавлены в любой момент.
  • Изменение поведения во время выполнения. На этапе исполнения я один объект может быть заменен другим. Это может привести к изменению алгоритма, в котором применяется данный объект.
  • Реализация родовых компонент. Алгоритмы можно обобщать до такой степени, что они уже смогут работать более, чем с одним видом объектов.
  • Доведение полуфабрикатов. Компоненты нет надобности подстраивать под определенное приложение. Их возможно сохранять в библиотеке в варианте полуфабрикатов (semifinished products) и расширять по мере необходимости до различных законченных продуктов.
  • Расширение каркаса. Независимые от приложения доли предметной области могут быть реализованы в виде каркаса и в дальнейшем расширены за счет добавления частей, специфичных для конкретного приложения.

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

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

Отметим недостатки ООП

Объектно-ориентированное программирование требует знания 4-х вещей.

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

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

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

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

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

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

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

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

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

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

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

Часто можно слышать, что ООП считается малоэффективным. Как же дело обстоит в действительности? Мы обязаны отчетливо проводить грань между неэффективностью на этапе выполнения, неэффективностью в смысле распределения памяти и неэффективностью, связанной с излишней универсализацией [2, с. 63].

Неэффективность на этапе исполнения. В языках типа Smalltalk сообщения интерпретируются во время исполнения программы путем осуществления поиска их в одной или нескольких таблицах и за счет выбора подходящего метода. Безусловно, это медленный процесс. И в том числе при использовании наилучших методов оптимизации Smalltalk-программы в 10-ть раз медленнее оптимизированных C-программ.

В гибридных языках типа Oberon-2, Object Pascal и C++ посылка сообщения приводит только к вызову через указатель процедурной переменной. На отдельных машинах сообщения выполняются лишь на 10% медленнее, чем обычные процедурные вызовы. И так как сообщения попадаются в программе значительно реже других операций, их воздействие на время исполнения влияния почти никак не проявляет.

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

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

Излишняя универсальность. Малоэффективность ь может также означать, что программа имеет ненужные возможности. В библиотечном классе часто содержится больше методов, чем это реально необходимо. А так как излишние методы не могут быть удалены, то они становятся мертвым грузом. Это не воздействует на время выполнения, но влияет на возрастание размера кода.

Одно из возможных решений – строить базовый класс с минимальным числом методов, а затем уже реализовывать различные расширения этого класса, которые позволят увеличить функциональность [9, с. 128].

Иной аспект – дать возможность компоновщику устранять излишние методы.

Такие интеллектуальные компоновщики уже легкодоступны для разных языков и операционных систем.

Oberon выбрал 3-ий подход освобождения от избыточной универсальности.

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

Таким образом, не следует говорить, что ООП вообще малоэффективно.

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

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

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

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

2.1.Объектно-ориентированный подход в Visual Basic при проектировании информационной системы.

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

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

Объект – определенная сущность, которая отчетливо выражает свое поведение и является представителем некоторого класса подобных себе объектов. Практически все без исключения, с чем выполняется работа в VB, является объектами. Например: форма, командная кнопка, текстовое поле и т. д.

Каждый объект характеризуется:

  • свойствами;
  • методами;
  • событиями [13, с. 37].

Свойство – это имеющий имя атрибут объекта. Свойства определяют характеристики объекта (цвет, положение на экране, состояние объекта).

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

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

Приложение, создаваемое в среде Visual Basic, называется проектом. Программный проект – это совокупность частей, составляющих будущее WINDOWS-приложение. Любой проект должен обязательно состоять из экранных форм (хотя бы одной) и программных модулей (хотя бы одного). Visual Basic хранит каждый проект в отдельном файле с расширением vbp.

Экранная форма – это графическое представление WINDOWS-приложения вместе с содержанием этого окна. Содержание включает в себя:

  • совокупность свойств этого окна с их значениями;
  • совокупность, объектов, находящихся в этом окне;
  • совокупность свойств этих объектов с их значениями.

Событие – данное характеристика класса объекта, описывающая внешнее воздействие, на которое реагирует объект этого класса во время работы приложения [18, с. 326].

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

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

Пример экранной формы «Автоматический конфигуратор системного блока ПК» в базе данных «Склад компьютерных комплектующих» с использованием Visual Basic приведен на рисунке 2.1.

Рис. 2.1 Форма «Автоматический конфигуратор системного блока ПК» в режиме «Формы»

В Visual Basic экранная форма находятся в отдельном файле с расширением frm.

Пример кода на языке Visual Basic для элементов управления формы «Автоматический конфигуратор системного блока ПК» приведен на рисунке 2.2.

Рис. 2.2 Код на языке Visual Basic для элементов управления формы «Автоматический конфигуратор системного блока ПК»

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

В Visual Basic программный код почти всегда привязывается к какому-либо событию, которое является сигналом к началу работы программы. Например, щелчок мыши по какому-либо объекту экранной формы; загрузка новой экранной формы; перемещение указателя мыши вдоль полосы прокрутки; нажатие какой-либо клавиши на клавиатуре.

Например, код на языке Visual Basic для элементов управления Формы «Автоматический конфигуратор системного блока ПК» имеет следующий вид:

Option Compare Database

Private Sub Кнопка0_Click()

DoCmd.OpenForm "Видеоадаптер", acNormal, "", "", , acNormal

End Sub

Private Sub Кнопка1_Click()

DoCmd.OpenForm "Жесткий диск", acNormal, "", "", , acNormal

End Sub

Private Sub Кнопка13_Click()

DoCmd.OpenForm "Выборка", acNormal, "", "", , acNormal

End Sub

Private Sub Кнопка14_Click()

DoCmd.OpenQuery "8_Сумма на складе", acViewNormal, acEdit

End Sub

Private Sub Кнопка15_Click()

DoCmd.OpenQuery "Сумма продажи", acViewNormal, acEdit

End Sub

Private Sub Кнопка16_Click()

DoCmd.OpenQuery "5_Материнская плата", acViewNormal, acEdit

End Sub

Private Sub Кнопка17_Click()

DoCmd.OpenQuery "2_Жесткий диск", acViewNormal, acEdit

End Sub

Private Sub Кнопка18_Click()

DoCmd.OpenQuery "3_Клавиатура", acViewNormal, acEdit

End Sub

Private Sub Кнопка19_Click()

DoCmd.OpenQuery "7_Мониторы", acViewNormal, acEdit

End Sub

Private Sub Кнопка2_Click()

DoCmd.OpenForm "Клавиатура", acNormal, "", "", , acNormal

End Sub

Private Sub Кнопка20_Click()

DoCmd.OpenQuery "6_Модули памяти", acViewNormal, acEdit

End Sub

Private Sub Кнопка21_Click()

DoCmd.OpenQuery "1_Видеоадаптер", acViewNormal, acEdit

End Sub

Private Sub Кнопка22_Click()

DoCmd.OpenQuery "4_Манипулятор мышь", acViewNormal, acEdit

End Sub

Private Sub Кнопка3_Click()

DoCmd.OpenForm "Мониторы", acNormal, "", "", , acNormal

End Sub

Private Sub Кнопка4_Click()

DoCmd.OpenForm "Модули памяти", acNormal, "", "", , acNormal

End Sub

Private Sub Кнопка5_Click()

DoCmd.OpenForm "Материнские платы", acNormal, "", "", , acNormal

End Sub

Private Sub Кнопка6_Click()

DoCmd.OpenForm "Манипулятор мышь", acNormal, "", "", , acNormal

End Sub

Private Sub Кнопка8_Click()

DoCmd.Close acForm, "Автоматический конфигуратор системного блока ПК"

End Sub

Private Sub Кнопка7_Click()

On Error GoTo Err_Кнопка7_Click

Screen.PreviousControl.SetFocus

DoCmd.FindNext

Exit_Кнопка7_Click:

Exit Sub

Err_Кнопка7_Click:

MsgBox Err.Description

Resume Exit_Кнопка7_Click

End Sub

Private Sub Кнопка9_Click()

DoCmd.OpenForm "Отбор", acNormal, "", "", , acNormal

End Sub

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

Создание любого приложения состоит из следующих этапов:

  1. Постановка задачи. Описание принципа работы будущего приложения, видов экранных форм (окон) этого приложения.
  2. Разработка интерфейса. Создание экранных форм приложения со всеми находящимися на этих формах объектами и свойствами этих объектов.
  3. Программирование. Определение того, какие события будут происходить в процессе работы приложения, составление алгоритмов процедур для этих событий и написание программы (программных кодов) этих процедур.
  4. Отладка программы. Устранение логических ошибок в процедурах и чтобы приложение работало удовлетворительно в среде проектирования.
  5. Сохранение проекта и при желании – компиляция (превращение проекта в исполняемое приложение, способное работать самостоятельно за пределами среды проектирования) [12, с. 241].

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

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

2.2.Объектно-ориентированный подход в Delphi при проектировании информационной системы.

Внешний вид главного рабочего окна системы ООП Delphi показано на рис. 2.3.

Рис. 2.3 Внешний вид главного рабочего окна системы ООП Delphi

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

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

Проект содержит в себе программные модули форм и самостоятельные программные модули в виде отдельно взятых файлов [15, с. 24].

Проект может быть запущен только из системы ООП.

Для поддержки ООП в язык Delphi введены объектные типы данных, с помощью которых одновременно описываются данные и операции над ними. В языке Delphi применяют объектные типы данных, которые называют классами, а их экземпляры – объектами.

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

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

type

TForm1 = class(TForm)

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: Tform1

Это описание класса исходной, пустой формы приложения и объявление объекта – формы приложения.

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

Благодаря ООП в язык Delphi довольно удобно на формах добавлять дополнительные объекты управления [15, с. 26].

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

1. В палитре компонентов среды Delphi выбрать вкладку Win32;

Рис. 2.4 Создание нескольких вкладок на одной форме в среде Delphi

Рис. 2.5 Вызов правой кнопкой мыши контекстно независимое меню в среде Delphi

2. Выбрать компонент PageControl;

3. Создать на форме объект pageControl нужного размера;

4. Правой кнопкой мыши вызвать контекстно независимое меню (рис. 2.5);

5. Выбрать пункт New Page.

После этого появится дополнительная вкладка.

В Delphi классы объектов определяются в секции type глобального блока. Описание класса начинается с ключевого слова class и заканчивается ключевым словом end. По форме объявления классы похожи на обычные записи, но помимо полей данных могут содержать объявления пользовательских процедур и функций. Такие процедуры и функции обобщенно называют методами, они предназначены для выполнения над объектами различных операций. Приведем пример объявления класса, который предназначен для чтения текстового файла в формате "delimited text" (файл в таком формате представляет собой последовательность строк; каждая строка состоит из значений, которые отделены друг от друга символом-разделителем):

type

TDelimitedReader = class

// Поля

FileVar: TextFile;

Items: array of string;

Delimiter: Char;

// Методы

procedure PutItem(Index: Integer; const Item: string);

procedure SetActive(const AActive: Boolean);

function ParseLine(const Line: string): Integer;

function NextLine: Boolean;

function GetEndOfFile: Boolean;

end;

Класс содержит поля (FileVar, Items, Delimiter) и методы (PutItem, SetActive, ParseLine, NextLine, GetEndOfFile). Заголовки методов, (всегда) следующие за списком полей, играют роль упреждающих (forward) описаний. Программный код методов пишется отдельно от определения класса.

Класс обычно описывает сущность, моделируемую в программе. Например, класс TDelimitedReader представляет собой "читатель" текстового файла с разбором считываемых строк на элементы (подстроки), которые отделены друг от друга некоторым символом, называемым разделителем.

Класс имеет несколько полей: FileVar - файловая переменная, необходимая для доступа к файлу; Delimiter – символ, который служит разделителем элементов; Items – массив элементов, полученных разбором последней считанной строки.

Класс также содержит ряд методов (процедур и функций):

  • PutItem – помещает элемент в массив Items по индексу Index; если индекс превышает верхнюю границу массива, то размер массива автоматически увеличивается;
  • SetActive – открывает или закрывает файл, из которого производится чтение строк;
  • ParseLine – осуществляет разбор строки: выделяет элементы из строки и помещает их в массив Items; возвращает количество выделенных элементов;
  • NextLine – считывает очередную строку из файла и с помощью метода ParseLine осуществляет ее разбор; в случае успешного чтения очередной строки функция возвращает значение True, а иначе - значение False (достигнут конец файла);
  • GetEndOfFile – возвращает булевское значение, показывающее, достигнут ли конец файла [15, с. 27].

Обратим внимание, что приведенное выше описание является ничем иным, как декларацией интерфейса для работы с объектами класса TDelimitedReader.

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

2.3.Объектно-ориентированный подход в C++ при проектировании информационной системы.

Бьярни Страуструп создал этот язык в начале 80-х годов. Страуструп добавил в язык С элементы ООП и обобщенного программирования, не изменяя при этом существенно сам язык С. Таким образом, C++ является расширением языка С, а это означает, что любая корректная программа на С является также корректной программой на C++. В программах на C++ могут использоваться существующие библиотеки языка С. (Библиотеки это совокупности программных модулей, которые можно вызывать из программ. Такие модули обеспечивают готовые решения многих широко распространенных задач программирования, позволяя сэкономить большое количество времени и сил.) Только после того, как язык C++ получил некоторое признание, Страуструп добавил в него шаблоны, обеспечив тем самым возможность обобщенного программирования [3, с. 163].

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

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

Рис. 2.6 Внешний вид главного рабочего окна C++ с примером базового и производных классов

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

В C++ полиморфное поведение объектов обеспечивается механизмом виртуальных функций-элементов. Рассмотрим пример «полиморфизма», реализованного на языке С. Допустим, программа должна в числе всего прочего выводить на экран различные геометрические фигуры. Она определяет класс «фигура», в котором предусмотрен виртуальный метод «нарисовать» (в C++ это был бы абстрактный класс). От данного класса «фигура» можно произвести несколько классов – «точка», «линия», «круг» и т. д., – каждый из которых будет по-своему определять метод «нарисовать» [3, с. 167].

Указатель на класс «фигура» может ссылаться на объект любого из производных классов (поскольку все они являются фигурами), и для указываемого им объекта можно вызвать метод «нарисовать», не имея представления о том, что это на самом деле за фигура.

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

Когда C++ стал развитым языком и его популярность возросла, все больше и больше разработчиков стали создавать компиляторы C++, которые генерировали объектный код непосредственно из исходного кода C++. Такой подход ускоряет процесс компиляции и в какой-то степени подчеркивает тот факт, что C++ является отдельным языком программирования, хотя и похож на язык С. Часто различия между транслятором cfront и компилятором почти невидимы для пользователя [11, с. 191].

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

Заключение

В результате нашего исследования мы пришли к следующим выводам:

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

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

2. Основное преимущество ООП – возможность создавать классы и объекты визуальным способом, т.е. прорисовывать на экране основные элементы, определять цвет, местоположение элементов и т.д.

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

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

4. Система ООП визуального программирования в Delphi является системой программирования, так как позволяет кодировать алгоритмы на данном языке. С другой стороны, система ООП является средой проектирования, так как позволяет осуществлять визуальное проектирование графического интерфейса.

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

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

Список литературы

  1. Бахтизин В.В. Технологии разработки программного обеспечения / В.В. Бахтизин. – Минск: БГУИР, 2010. – 267 с.
  2. Брауде Э.Дж. Технология разработки программного обеспечения / Э.Дж. Брауде. – СПб: Питер, 2014. – 487 с.
  3. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++ / Г. Буч. – М.: Бином, 2015. – 373 с.
  4. Вигерс К. Разработка требований к программному обеспечению / К. Вигерс. – М.: Русская редакция, 2016. – 381 с.
  5. Гагарина Л.Г. Технология разработки программного обеспечения / Л.Г. Гагарина. – М.: Форум, ИНФРА-М, 2008. – 400 с.
  6. Гамма Э. Приемы объектно-ориентированного проектирования. Паттерны проектирования / Э. Гамма. – СПб: Питер, 2017. – 373 с.
  7. Головина Е.Ю. Модели и методы проектирования информационных систем / Е.Ю. Головина. – М.: МГТУ, 2015. – 105 с.
  8. Евсеев А.В. Проектирование информационных систем / А.В. Евсеев. – М.: МГУПП, 2014. – 190 с.
  9. Заботина Н.Н. Проектирование информационных систем / Н.Н. Заботина. – М.: НИЦ ИНФРА-М, 2013. – 331 с.
  10. Исаев Г.Н. Проектирование информационных систем / Г.Н. Исаев. – М.: Омега-Л, 2015. – 424 с.
  11. Коваленко В.В. Проектирование информационных систем: Учебное пособие / В.В. Коваленко. – М.: Форум, 2015. – 320 с.
  12. Липаев В.В. Системное проектирование сложных программных средств для информационных систем / В.В. Липаев. – М.: Синтег, 2015. – 357 с.
  13. Мирошниченко Е.А. Технология программирования / Е.А. Мирошниченко. – Томск: ТПУ, 2008. – 124 с.
  14. Соловьев И.В. Проектирование информационных систем / И.В. Соловьев. – М.: Проект, 2016. – 398 с.
  15. Туманова О.Н. Программирование в среде DELPHI / О.Н.Туманова. – Ухта: УГТУ, 2005. – 40 с.
  16. Федоров Н.В. Проектирование информационных систем на основе современных CASE-технологий / Н.В. Федоров. – М.: МГИУ, 2014. – 280 с.
  17. Элиенс А. Принципы объектно-ориентированной разработки программ / А. Элиенс. – М.: Бек, 2014. – 377 с.
  18. Якобсон А. Унифицированный процесс разработки программного обеспечения / А. Якобсон. – СПб.: Питер, 2012. – 497 с.