Шаг 7 - Объектно-ориентированное программирование на VFP

Принципы объектно-ориентированного программирования на VFP классические, как и в других языках. Только классов гораздо меньше, чем у MFC.

Начнем создавать объект для работы с таблицами. В папку нашего проекта добавим папку Include. В проекте на закладке Other в разделе Text Files добавим файл Define.H (папка Include). Посветим его курсором и нажмем кнопку справа Modify. Добавляем в файл Define.H следующий код для работы препроцессора:

*
* Define.H
*
#DEFINE DEF_MAXWORKAREA 200

Рабочих областей много, но за расходом памяти мы будем следить. Добавим в наш проект новый программный файл DefineGlobalVariables.PRG(закладка Code раздел Programs папка Programs).

В нем создадим код:

* включаем файл
#INCLUDE .\Include \Define.H
* создаем глобальный массив для управления рабочими областями
public arrPblWorkArea[DEF_MAXWORKAREA]
* локальные переменные
local intLocCount
* цикл по нашим рабочим областям
for intLocCount = 1 to DEF_MAXWORKAREA
* создаем в памяти объекты рабочих областей
    arrPblWorkArea[intLocCount] = createobject("ClassWorkArea" , intLocCount)
endfor
* описываем класс рабочей области на основании базового класса VFP
define class ClassWorkArea as Custom
* свойство класса - номер рабочей области (перфикс Prp означает property)
   intPrpWorkArea = 0
* свойство псевдоним рабочей области
   strPrpAlias = ""
* свойство файл DBF
   strPrpDBF = ""
* описываем метод Init - выполняется в момент 
* создания объекта в памяти на основании класса
   function Init
* параметр, передаваемый в метод или в функцию
      lparameter intLocPrmWorkArea
* присваиваем значение рабочей области ствойству класса
      This.intPrpWorkArea = intLocPrmWorkArea
* создаем алиас нашей рабочей области
   endfunc
enddefine
*

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

Я специально описал класс в программном коде, чтобы показать такую возможность. Почти все классы мы можем создавать и визуально. Добавим в папку нашего проекта папку Classes. В окне проекта выбираем закладку Classes и нажимаем кнопку New. В появившемся диалоговом окне указываем имя нашего класса ClassWorkArea, выбираем из списка базовый класс Custom и указываем имя и расположение нашей библиотеки: \Classes\MyClasses.

При редактировании визуального класса мы имеем удобный интерфейс для доступа к методам и свойствам нашего класса. Можем создавать новые методы и новые свойства. В дальнейшем, когда классов станет много, их можно расположить в разных библиотеках. Например, библиотеки MyForms, MyControls, MyButtons, MyLabels и т.д. При создании библиотеки классов получается два файла:

MyClasses.VCX - аналог DBF - таблица
MyClasses.VCT - аналог FPT - MEMO поля

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

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

set classlib to MyClasses.vcx additive
set classlib to MyForms.vcx additive
set classlib to MyControls.vcx additive

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


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Сергей Платонов.