Определение классов бизнес-сущностей
Определение и разработка класса бизнес-сущности включает ряд задач:
- Определение класс интерфейса, который будет использоваться всеми классами бизнес-сущностей.
- Определение класс бизнес-сущности, используя класс интерфейса.
- Добавление кода, чтобы убедиться, что один экземпляр бизнес-сущности работает в AVM.
- Определение набора данных для класса бизнес-сущности.
- Реализация конструкторов, методов и деструктора класса бизнес-сущности.
В этом разделе вы узнаете, как определить класс интерфейса и использовать его для определения класса бизнес-сущности.
Примечание. Поскольку вы ещё не научились разрабатывать уровень доступа к данным (Data Access) приложения, вы пока не сможете полностью разработать код для бизнес-сущности.
Определение класса интерфейса
Класс интерфейса подобен шаблону, который разработчики могут использовать для стандартизации определения набора классов. Это особенно полезно для большого приложения, для которого нескольким разработчикам необходимо стандартизировать определение и использование классов. Класс интерфейса определяет общедоступные элементы данных и методы, необходимые для набора классов.
Класс интерфейса создаётся в Developer Studio с помощью мастера создания нового интерфейса ABL (New ABL Interface wizard) из каталога, в котором вы хотите создать файл .cls , с присвоением имени класс интерфейса. Затем в редакторе добавляются общедоступные элементы данных и методы класса.
Синтаксис для определения класса интерфейса:
interface <package>.<class name>: [<public data member definitions>] <public method definitions> end interface.
Элемент синтаксиса |
Описание |
<package> | Директория, в которой расположен исходный файл в проекте. |
<class name> | Имя класса интерфейса. Это также может быть имя файла с расширением .cls. Рекомендуется начинать имя с “i”. |
<public data member definitions> | Любые публичные элементы данных необходимые интерфейсу. Это могут быть временные таблицы, наборы данных или свойства. Примечание. Общедоступные переменные не допускаются. |
<public method definitions> | Определения всех общедоступных методов, требуемых интерфейсом. Вы определяете тип возвращаемого значения, имя и список параметров метода так же, как и в определение класс, за исключением того, что оператор заканчивается точкой после списка параметров, а не двоеточием. Нет операторов тела и завершения метода. |
Пример: IBusinessEntity
Рекомендуется определить класс интерфейса для ваших бизнес-сущностей. Наличие стандарта определения каждой бизнес-сущности упрощает разработку и поддержку вашего приложения.
Вот класс IBusinessEntity для приложения-примера. Все классы бизнес-сущности, определенные для использования этого класса интерфейса, должны реализовывать методы GetData () и UpdateData ().
interface BusinessEntity.IBusinessEntity: method public void GetData( input pFilter as character, output phds as handle). method public void UpdateData( input-output phdsChange as handle ). end interface.
Определение класса, использующего класс интерфейса
Когда вы определяете класс, который использует класс интерфейса, определенный класс должен иметь те же имена элементов данных и имена методов с параметрами, что и класс интерфейса. Вам не нужно писать код для тел методов, определенных в интерфейсном классе, но они должны существовать, по крайней мере, с пустым телом метода. Кроме того, вы можете добавить в класс любые элементы данных или методы, которые помогут реализовать поведение класса. Например, вы можете добавить элемент данных набора данных, который требуется определенной бизнес-сущности. Кроме того, вы можете добавлять методы в класс бизнес-сущности.
Самый простой способ создать класс, реализующий интерфейс, — использовать мастер New ABL Class .
Синтаксис для определения класса, который будет использовать класс интерфейса:
using <package>.<interface class name>. . . . class <class name> implements <interface class name>: <interface data members> [<other data members>] <interface methods> [<other methods>] end class.
Элемент синтаксиса |
Описание |
<package> | Имя пакета (каталога), в котором находится класс интерфейса. |
<interface class name> | Имя класса интерфейса. |
<class-name> | Имя класса, который использует класс интерфейса. Это также имя файла, созданного с расширением .cls. |
<interface data members> | Те же определения, что и определения элементов данных из класса интерфейса. Вы не должны изменять их имена или типы. |
<other data members> | Любые другие элементы данных, необходимые для этого класса. Вы можете добавить любое количество общедоступных, частных или защищённых элементов данных для вашего приложения по мере необходимости. |
<interface methods> | Полные определения всех методов, определенных в классе интерфейса. Вы не должны изменять их имена или параметры. Вы должны предоставить реализацию для методов, которые будут использоваться во время выполнения. Метод может иметь пустое тело. |
<other methods> | Любые другие общедоступные, частные или защищённые методы, необходимые для этого класса. |
Процедура создания класса, использующего класс интерфейса
Действия для создания класса бизнес-сущности, использующего класс интерфейса, с использованием мастер New ABL Class в Developer Studio.
Шаг |
Действие |
1. | Выберите каталог, в котором вы хотите создать класс. |
2. | Щёлкните правой кнопкой мыши и выберите New > ABL Class. |
3. | В поле Class name укажите имя класса. |
4. | В области Implements нажмите кнопку Add… |
5. | В окне выбора интерфейса найдите и выберите интерфейс, который вы хотите использовать в качестве шаблона для своего класса. |
6. | Нажмите OK. |
7. | Укажите любую другую информацию, которую вы хотите для нового класса. Если это класс бизнес-сущности, вы должны определить конструктор по умолчанию. |
8. | Нажмите Finish. Новый класс откроется в редакторе. |
Пример: класс CustomerBE
Когда вы создаёте класс с помощью мастера New ABL Class , указав класс интерфейса, начальный код для класса будет создан автоматически.
Бизнес-сущность, с которой вы будете работать далее, — это класс CustomerBE . Его данные представляют клиентов и их заказы. Ниже представлен сгенерированный код для класса CustomerBE . Обратите внимание, что оператор using находится в верхней части файла класса для использования класса интерфейса. Класс CustomerBE определен для использования класса IBusinessEntity путём указания ключевого слова Implements. Этот класс бизнес-сущности имеет конструктор по умолчанию без аргументов, который является обязательным требованием для класса бизнес-сущности. Каждый метод, определенный в классе IBusinessEntity определен здесь с телом по умолчанию, которое выдаёт ошибку о том, что метод не реализован. Вы не можете изменить определения любого из этих методов из класса интерфейса. Все, что вы можете изменить, это тело кода внутри методов. Вы можете добавить дополнительные элементы данных и методы в класс бизнес-сущности.
using Progress.Lang.*. using BusinessEntity.IBusinessEntity. block-level on error undo, throw. class BusinessEntity.CustomerBE implements IBusinessEntity: constructor public CustomerBE ( ): super (). end constructor. method public void GetData( input pFilter as character, output phds as handle ): undo, throw new Progress.Lang.AppError( "METHOD NOT IMPLEMENTED"). end method. method public void UpdateData( input-output phdsChange as handle ): undo, throw new Progress.Lang.AppError( "METHOD NOT IMPLEMENTED"). end method. end class.