Файл: История и развитие методологии объектно-ориентированного программирования. Сферы применения. (Методология объектно-ориентированного программирования).pdf

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

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

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

Добавлен: 28.03.2023

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

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

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

Рисунок 2 - Form1

Функцию нужно вводить в код программы, в procedure TForm1.HordComponent1Function.

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

Рисунок 3 – Ввод данных

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

Рисунок 4 – Редактор компонента

После того, как заполнены все необходимые поля, следует нажать кнопку «вычислить». Точность и границы отрезка можно задавать также и на вкладке Properties- Epsilon (точность)

LeftBoard (левая граница)

RightBoard (правая граница)

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

Рисунок 5 – Изменяемые данные в редакторе компонента

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

Рисунок 6 – Редактор свойств

И затем нажать на кнопку “Ok”.

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

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

При нажатие на кнопку OK, появляется график функции, где можно увидеть этот корень:

Рисунок 7 - График вычисляемой функции

2.1.1 Тестовый пример

Например, возьмем функцию у = - 2х2+31х+12.

Будем искать корень с точностью E=0,001, на отрезке [10; 20].

Сначала вводим функцию у = - 2х2+31х+12 в код программы, в procedure TForm1.HordComponent1Function. Далее с помощью редактора компонента задаем границы отрезка и точность вычисления:


Рисунок 8 – Данные в редакторе компонентов

Далее нажимаем на кнопку «вычислить» и запускаем программу на выполнение. В появившемся окне нажимаем на кнопку «искать корни» и в качестве результата выводится диалоговые окна с корнем и графиком:

Рисунок 9 – результат вычислений

2.2 Проектирование составляющих архитектуры

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

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

Для реализации системы была выбрана интегрированная среда разработки Delphi 2006 от Borland, которое содержит богатую библиотеку готовых классов для реализации графического интерфейса приложения, а так же коммуникаций с выбранной СУБД. Хорошее приложение должно разделять дизайн экранных форм и программную логику, поэтому необходимо разработать набор классов, которые позволят реализовать все запланированные функциональные возможности информационной системы, но при этом оно не зависело от экранных интерфейсов. Основа RAD-технологии (Rapid Application Development), заключается в том, что бы, на основе экранного прототипа строилась и логика приложения, это позволяет быстро разработать приложение, данные возможности поддерживает и интегрированная среда Delphi, которая активно использует обработчики событий, начинающие программисты, прописывают код непосредственно в процедуры обработки, тем самым вплетая логику приложения в структуру экранных форм, что по сути, не является хорошим показателем, так как всегда существует возможность, что заказчик захочет кардинально изменить интерфейс, или этого потребуют сложившиеся обстоятельства, например изменение законодательной базы, что может привести к сложнейшим реструкторизационным работам. Поэтому профессиональные программисты ни когда не вплетают логику информационной системы в структуру экранных форм. К тому же хорошо спроектированная объектная модель позволит легко обновлять систему, производить улучшения интерфейса пользователя, тем самым не изменяя основной код.


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

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

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

Рисунок 10 - Класс CLibManager

Кроме работы с библиотеками, системе необходим доступ к базе данных, для организации связи с сервером FireBird, был разработан специальный класс, который базируется на трех компонентах IDE Delphi, которые осуществляют связь с СУБД Interbase, но так как FireBird – это клон InterBase, то эти компоненты как раз подойдут для этих целей. Реализация собственного класса необходима, так как использование разрозненных компонентов в сложной системе достаточно осложняет задачу реализации. Гораздо удобнее сделать один класс, который самостоятельно сможет сделать подключение к СУБД, а так же производить забор и выдачу информации в любой части приложения, проблемы с активацией компонентов, их объединении и настройке ложится на класс. К тому же если класс создается в начале инициализации приложения, а ссылка на этот класс представляет собой глобальную переменную, то задача обработки запросов, будет сведена всего к нескольким вызовам процедур класса.


Диаграмма класса для работы с СУБД FireBird дана на рисунке 11.

Рисунок 11 - Диаграмма класса CFireBird

На диаграмме так же показан класс CConfig, это класс конфигуратора системы, который загружает данные из указанного файла конфигурации и передает их классу CFireBird, для подключения к базе данных, поэтому на диаграмме стрелкой показана зависимость CFireBird от CConfig. Кроме загрузки данных для базы данных класс ССonfig так же активно используется другими объектами системы для загрузки параметров, в частности Менеджер библиотек CLibManager, использует его для получения пути к папке с библиотеками, а так же получает значения, какие библиотеки помечены на загрузку, а какие нет.

Проектируемая система, будет работать с документами: печать, экспорт, загрузка и др. Поэтому для реализации печати и экспорта документов, понадобится генератор форм документов, для этих целей практичней всего использовать формат Microsoft Word, так как он установлен на большинстве машин пользователей, и является достаточно популярным. Следовательно для экспорта документов и подготовки к печати, необходим прототип класса который будет выполнять поставленные задачи. Данным классом является класс CWordManager, его можно увидеть на диаграмме (рис.12).

Рисунок 12 - Диаграмме класса CWordManager

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

В данном случае создается компонент “Word.Application” и используются интерфейсы, предоставляемые этим объектом. В данном случае класс имеет возможность запустить приложение MS Word, произвести определение значений переменных полей документа, вставить строки в таблицу, послать документ на печать, манипулировать окном приложения и некоторые другие. Безусловно объект “Word.Application” поддерживает намного больше функциональных возможностей, однако, для создания простого генератора форм документов, достаточно функционала представленного на диаграмме.

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

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


  • Группы товаров;
  • Типы товаров;
  • Модели товаров;
  • Серийные номера;
  • Единицы измерения;
  • Производители;
  • Страны производители;
  • Примечания;
  • Партнеры;
  • Представители;
  • Виды затраты;
  • Должности;
  • Работники;
  • Пользователи;
  • Реквизиты фирмы торговца.

Диаграмма данных классов представлена на рисунке 13(а). На диаграмме отображен класс “CDBObject”, который является общим предком для всех классов справочников, документов и других объектов, которые производят манипуляции с таблицами базы данных. Данный класс использует в своей работе указатель на объект класса “CFirebird”, который должен создаваться при старте системы, и существовать до тех пока не произойдет завершение работы приложения. Особенностью класса “CDBObject” является то, что он представляет ряд виртуальных методов, которые могут переопределены дочерними классами, это позволяет дочерним классам добавлять свои поля в объект для сохранения их в базе данных. Класс обладает тремя основными методами, которые позволяют автоматически сохранить в базу данных любой объект дочернего класса от “CDBObject”. То есть, если создается новый прототип класса от “CDBObject”, то разработчику нет необходимости реализовывать методы для вставки, удаления и модификации. Достаточно определить поля для объекта, а класс предок самостоятельно позаботится об сохранении этих полей. На этом принципе и была построена иерархия классов, указанная на диаграммах классов. Для простых справочников был создан универсальный класс “CSimpleReferer”, который позволяет задать имя таблицы базы данных, а затем выполнять стандартные операции над записями. От данного класса наследуют свои возможности все простые справочники, в конструкторе задается имя таблицы, и после этого справочник становится полностью функциональным.

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

Рисунок 13 - Диаграмма классов справочников

Кроме простых справочников, на диаграмме так же представлены более сложные справочники, которые для своей работы используют данные из других справочников, к таким справочникам можно отнести прототипы классов: “CPersonal”, “CFirm”, “CProduct”, “CManuf”.

Так же необходимо упомянуть о прототипе класс “CField”, данный прототип предназначен для хранения информации о одном поле таблицы базы данных. Данный класс является дочерним от системного класса библиотеки “VCL”, “TField”. Класс “TField” является абстрактным классом, и не содержит в себе поля для хранения информации, а так же методы для обработки данного поля, так же являются абстрактными. Поэтому было принято создать прототип от данного класса, который содержит в себе поле типа “Variant”, для хранения информации, а так же будут реализованы два методы для обработки данного поля.