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

Требования заказчика

Цели и задачи

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

Среда выполнения

Windows 7 и старше

СУБД

Бесплатная и простая

Количество пользователей

Один

Входные данные

Сведения о клиенте: имя, учетная записи в google, примечание.

Сведения об оплате: дата платежа, сумма платежа

Сведения о доступе: дата начала, дата окончания, включен/выключен.

Выходные данные

Табличное отображение сведений о доступе клиента к библиотеке и оплате этого доступа.

Процесс обработки

Быстрый ввод данных в таблицу. Сортировка по клиенту и датам.

Дополнительные требования

Максимально простая реализация

Анализ требований заказчика

В нашем первом проекте главным требованием будет простота реализации.

Для этого мы создадим единственную таблицу, в которую будем вводить все данные. По сути, мы создадим что-то вроде листа MS Excel, в котором мы будем хранить:

  • Имя клиента – фамилия и имя
  • Учетная запись Google – адрес для предоставления доступа
  • Примечание – дополнительные сведения: страна, язык и т.д.
  • Дата платежа – дата оплаты
  • Сумма платежа – сумма оплаты
  • Дата начала – дата начала доступа
  • Дата окончания – дата окончания доступа
  • Активность – включен ли доступ

🔨 Внесите данную информацию в проектную документацию.

Выбор СУБД

Исходя из описаний СУБД, которые можно найти в разделе “Обзор возможностей DataExpress“, большого выбора у нас нет и мы будем использовать универсальную СУБД Firebird, встраиваемую (embedded) версию.

📝 По умолчанию DataExpress работает со встраиваемой версией СУБД Firebird, но можно использовать подключение к серверу Firebird в локальной сети, что позволяет организовать многопользовательскую работу.

Проектирование структуры данных

Как правило, для проектирования структуры данных разработчики используют специальные средства проектирования баз данных, обеспечивающие моделирование данных и генерацию схем баз данных (как правило, на языке SQL). К ним относятся ERwin (Logic Works), S-Designor (SDP) и DataBase Designer (ORACLE).

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

Необходимая базовая информация о структуре хранения и типах данных находится в разделе “Обзор возможностей DataExpress” .

 🔨 Теперь мы можем определиться с типом данных для каждого поля нашего проекта. Данную информацию необходимо внести в документацию проекта.

  • Имя клиента – текст
  • Учетная запись Google – текст
  • Примечание – текст
  • Дата платежа – дата
  • Сумма платежа – число
  • Дата начала – дата
  • Дата окончания – дата
  • Активность – флажок

Создание таблицы

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

🔨 На панели инструментов нажимаем кнопку “Добавить форму” (1). Альтернативный вариант: во всплывающем меню дерева форм выбрать пункт “Добавить форму (2)”.

В списке форм появится новая форма с именем по умолчанию, которое необходимо сменить на более понятное. Для этого кликаем по форме и в панели свойств нажимаем кнопку “Имя формы” (1). В появившемся окне нужно заполнить четыре поля и нажать кнопку “ОК” для сохранения результата.

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

📝 Изменение имени формы будет приводить к изменению имени таблицы в БД. 

Для удаления таблицы нужно выбрать форму (1), а затем нажать кнопку “Удалить форму” (2) или выбрать пункт “Удалить форму” из всплывающего меню (3).

Добавление полей

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

🔨 Чтобы ускорить процесс, используем кнопку “Добавить поля” (1), при нажатии которой появляется окно (2) для ввода списка полей, которые нужно добавить. Добавление производится непосредственно в табличной части, где вводится имя поля (3), тип поля (4) и для некоторых типов – размер (точность) (5). Для управления списком полей используются кнопки “Добавить” и “Удалить”, а также кнопки “Вверх” и “Вниз”, которыми меняется очередность полей. Эта очередность в дальнейшем определит место расположения компонентов пользовательского интерфейса на форме редактирования.

СвойствоПолеТип поляРазмер/Точн.
Имя клиентаИмя клиентаТекст50
Учетная запись GMailУчетная запись GMailТекст30
ПримечаниеПримечаниеТекст100
Дата платежаДата платежаДата
Сумма платежаСумма платежаЧисло2
Дата началаДата началаДата
Дата окончанияДата окончанияДата
АктивностьАктивностьФлажок

📝 DX разрешает вводить имена таблиц и полей на русском языке. Обычно я рекомендую использовать латиницу, так как это упрощает написание SQL-запросов, но в случае с DX в этом нет необходимости, так как до запросов к физическим таблицам дело не дойдет. Дело в том, что DX тщательно прячет логику работы с физической базой, в которой таблицы называются Tn, а поля в них – Fk, где n – это внутренний ID формы, а k – порядковый номер поля.

В результате получаем форму, на котором аккуратно расположились компоненты ввода данных указанного типа:

Классы и компоненты

Что такое классы и компоненты, а также перечень доступных визуальных компонент находится в разделе “Обзор возможностей DataExpress” .

В нашем первом проекте нам понадобилась только одна форма frmMain (TdxForm). На ней с помощью мастера мы разместили необходимые визуальные компоненты и настроили их основные свойства.

Свойство Name

Это свойство есть у всех компонент. Оно является идентификатором компонента, используется при настройке свойств и написании скриптов. 

Идентификаторы —- имена объектов и конструкций программы (меток,  констант, типов, переменных, типов, процедур, функций, объектов, модулей, программ, полей в записях и т.д.). 

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

DX поддерживает кириллические (по сути – на любом языке, т.к. редактором поддерживается Unicode) имена для компонент, однако рекомендуется использовать английские слова (существительные в единственном числе, для кнопок – глаголы) и сокращения: они более короткие; при наборе скриптов не нужно будет постоянное переключать язык; если всегда использовать один язык, то не будет путаницы с буквами, имеющими сходное написание (“О”, “H”, “Р” и др.). 

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

КлассПрефиксПримечание
TdxFormfrmФорма (англ. form)

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

Каждая форма должна иметь уникальное имя. Остальные компоненты также должны иметь уникальные имена в пределах одной формы, то есть на разных формах могут быть компоненты с одинаковыми именами, а на одной – нет. Это связано со способом обращения к компонентам из скриптов, о чем я расскажу позже, а пока нужно запомнить данное правило уникальности. Впрочем, если вы его забыли, то DX поправит вас – программа не допускает ввода одинаковых имен компонентов на одной форме и выдает сообщение об ошибке.

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

Настройка табличного представления

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

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

🔨 С помощью мыши настраиваем ширину колонок и меняем их расположение. Сохраняем настройки, нажав кнопку “ОК”.

Сохраняем проект и возвращаемся в режим основной работы (F11).

Подведение итогов

За несколько минут вы создали приложение для работы с базой данных читателей, освоив основные приёмы визуального программирования в DX: 

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

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *