Стандартные и пользовательские методы можно настраивать, добавляя код Oracle Basic. Для стандартных методов можно или полностью переопределять умолчательную обработку, или вставлять пользовательский код до или после вызова умолчательной обработки.
Метод может быть инициирован одним из двух способов:
1. Через событие. Событие – действие, которое имеет место в интерфейсе приложени. События происходят, когда пользователь выполняет в приложении некоторые манипуляции (например, щелчок на элементе управления или закрытие приложения) или в ответ на системное функционирование.
2. Вызовом метода. Метод можно вызвать явно через код Oracle Basic.
Если метод – функция, он может возвращать значение, которое можно использовать где-либо в выражении или в операторе присваивания. Метод-функция используется, подобно встроенной функции Oracle Basic.
Например, метод GetRecordset() – функция. GetRecordset() возвращает значение типа данного Object, которое можно присваивать переменной. Переменную можно затем использовать везде, где требуется обращение к объекту набора записей.
Если метод – подпрограмма, его имя используется не подобно функции, в операторе присваивания или выражении, а в виде команды, то есть, единственный вызов в строке. Подпрограммы не возвращают значения; однако, подпрограмма может изменять переданный ей параметр.
В ходе выполнения, подпрограмме или функции передаются параметры. Эти параметры специфицируются в круглых скобках рядом с именем метода. Параметры функции могут быть переданы по ссылке (умолчание) или по значению.
При передаче параметра по ссылке, фактически, передается указатель на область памяти, занятой переменной, которая используется для специфицирования параметра, По ссылке могут быть переданы только переменные; другие типы выражений автоматически передаются по значению. Любые изменения, проведенные в параметре при выполнении функции, воздействуют на переменную в вызывающем методе.
С другой стороны, при передаче параметра по значению, передается только «абстрактное» текущее значение, присвоенное параметру, без ссылки непосредственно на сам параметр. В этом случае изменения, проведенные в параметре, не имеют никакого эффекта вне подпрограммы или функции. Все выражения, не содержащие переменных, автоматически передаются по значению. Переменные также могут быть переданы явно по значению, если в объявлении функции используется ключевое слово BYVL.
Чтобы создать пользовательскую функцию или подпрограмму, необходимо объявить ее и ассоциировать ее с объектом в приложении .Чаще всего функцию или подпрограмму добавляют к форме, классу или отчету, откуда она вызывается, но фактически, метод можно добавлять к любому объекту приложения.
Чтобы настроить поведение метода, к нему добавляется программный код. Код метода может быть добавлен к любому стандартному или пользовательскому методу Oracle Power Objects.
В любом методе Oracle Power Objects неявно объявляет набор переменных. Переменная объявляется для каждого параметра в объявлении метода и имеет тип данного, обозначенный в объявлении. Эти переменные можно использовать в коде, подобно любым другим значениям. Необходимо отметить, что присваивание значений этим переменным имеет смысл, только если параметр был передан по ссылке; параметр, переданный по значению, также может быть установлен, но по выполнении метода значение параметра исчезает.
Для методов-функций возвращаемое значение функции назначают, присвоив значение имени функции. Это имя, фактически, не является переменной; Это – просто соглашение для представления возвращаемого значения.
При вводе в метод программного кода Oracle Basic автоматически переопределяется любая умолчательная обработка, обычно выполняемая этим методом.
Эту установленную по умолчанию обработку можно, однако, выполнять, добавляя к коду метода синтаксис Inheried.имя_метода.
Умолчательная обработка выполняется в точке кода метода, где она вызвана. Следовательно, ей может предшествовать или выполняться после ее пользовательский код Oracle Basic. Если вызываемый стандартный метод требует параметров, то их необходимо передать в вызове процедуры Inherited. Имя_метода.
Умолчательная обработка для метода часто включает вызов в предопределенном порядке ряда других методов, В таких случаях, прежде, чем поток управления возвращается в вызывающую процедуру, сразу после оператора Inherited. Имя_метода выполняются эти методы умолчательной обработки.
Любой код, который добавляется к методу, может нуждаться в корректировке. Процедуры не всегда сразу реализуют идею разработчика так, как он это предполагает при написании программного кода.
Отладка – процесс анализа, корректировки и тестирования кода, выполняемый с целью добиться требуемого порядка выполнения приложения и получения требуемых результатов. Когда выполнение сталкивается с проблемами, отладчик Oracle Power Objects показывает, где возникает эта проблема, и позволяет исследовать значения и пошагово пройти через код, чтобы локализовать ее.
Внешний интерфейс: Наборы записей и связанные контейнеры
В клиентских системах с базой данных могут взаимодействовать два различных вида объектов: наборы записей и связанные контейнеры.
Набор записей (объект recordset) – набор строк, запрошенных из таблицы или представления, который хранится в памяти системы клиента. Обычно, для снижения информационной нагрузки сети и экономии памяти клиента, приложение хранит только подмножества всего набора записей. Когда требуется вывести на экран следующие записи или когда приложение должно выполнить некоторую агрегатную операцию, включающую все записи таблицы или представления, оно делает запрос большего количества строк.
Когда пользователь или приложение проводит изменения записей, изменения регистрируются сначала в наборе записей, но не в базе данных. В некоторый момент, приложение передает изменения в базу данных. В ходе этой процедуры приложение может устанавливать блокировки данных, предотвращая редактирования той же самой записи другими пользователями; оно может также отслеживать изменения, проведенные в записи с момента первоначального запроса.
Наборы записей не обязательно должны включать все столбцы из связанных таблиц или представлений. В большинстве случает, когда набор записей связывается с контейнером, он включает только те столбца, которые требуются для вывода на экран данных в текстовых полях, списках и других элементах управления контейнера.
Большинство наборов записей связывается с некоторым контейнером, хотя в Oracle Power Objects можно создавать также несвязанные наборы записей.
Связанный контейнер – объект интерфейса, который выводит на экран данные, полученные из таблицы или представления в результате запроса SQL. После выполнения запроса значения из столбцов набора записей отображаются в связанных элементах управления контейнера. В Oracle Power Objects. Связанным контейнером может быть форма, отчет, внедренная форма, пользовательский класс или окно репитера. Не все связываемые контейнеры должны быть связаны с источником записей: например, многие окна диалога – это формы, которые не имеют связанных таблиц или представлений. Однако, все связанные контейнеры имеют ассоциированные наборы записей, которые заполняются данными запросов базы данных при загрузке контейнера в память.
Внутри связанного контейнера располагаются связанные элементы управления, которые соединены со столбцами связанного набора записей. Например, в форме, предназначенной для работы с записями заказчиков, несколько текстовых полей выводят на экран имя заказчика, адрес, номер телефона и другую важную информацию, Информация в каждом текстовом поле происходит из различных столбцов набора записей.
Контейнер – лишь одно из многих типов объектов приложения. Определения объектов приложений сохраняются в файлах. РОА и, в конечном счете, компилируются в исполняемое приложение. Другие объекты приложения – элементы управления (например, командные кнопки), статические объекты (например, линии). OLE-объекты, импортируемые растровые рисунки и пользовательские классы.
Разработка в объектно-ориентированной среде.
В дополнение к изменению характеристик отдельных объектов, необходимо также определить отношения между объектами. Например, при связывании формы с таблицей определяется отношение между объектом приложения и объектом базы данных.
Если данные, отбираемые из таблицы и представленные в форме, переупорядочиваются, отношение между этими двумя объектами переопределяется. Для командной кнопки, которая, будучи нажата, открывает форму, действует несколько иная зависимость: отношение между командной кнопкой и формой определяет код метода, который добавляется к методу Click() командной кнопки.
Каждый объект имеет большой интервал стандартных свойств и методов. Таким образом, характеристика, которую требуется получить, или действие, которое требуется выполнить, часто уже содержится в свойстве или методе. При необходимости, однако, можно также добавлять новые, пользовательские свойства и методы. Новое свойство может быть добавлено к объекту, когда разработчик решает, что для объекта требуется некоторая дополнительная характеристика (например, дополнительный уровень защиты при открытии формы). Новый метод добавляется, когда требуется определить новую задачу обработки, не охваченную стандартными методами (например, выполнение специфических бухгалтерских вычислений).
В сущности, объектно-ориентированная разработка лишь быстро фиксирует оформившееся представление разработчика относительно приложения. Зная набор средств того или иного инструментального продукта, перед выполнением фактической разработки программист рисует в своем воображении, какие объекты ему требуются, какие характеристики они должны иметь и как действие, которое выполняется над одним объектом (например, командной кнопкой) повлияет на другой (например, форму). Для работы с почти каждым объектом в Oracle Power Objects используется общая методология. Независимо от того, является объект сеансом базы данных или переключателем, для управления объектом разработчик определяет или изменяет одно из свойств или вызывает один из методов этого объекта.