Уважаемый посетитель!
Так как в Вашем браузере запрещено использование JavaScript для web-страниц, меню сайта Вам не доступно.
Для навигации по сайту используйте пожалуйста карту сайта.

Сделать стартовой Добавить в избранное Обратная связь

партнеры

SQL.RU

Детский Дворик - Портал детских фотографий

ГавГав.Инфо - портал для собаководов-любителей и профессиональных кинологов

информация

реклама

Скачать RAR архив. 59Kb
« Глава 3 Оглавление Глава 5 »

Глава 4
Учим теорию

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

Итак, язык, на котором мы с вами пишем программы, называется не PowerBuilder, (т.к. PowerBuilder - это среда разработки программного обеспечения) а PowerScript. Он представляет собой структурную систему синтаксиса, включающую в себя объектно-ориентированное коллекции операторов, команд, встроенных и определенных пользователем функций, блоки операторов и команд SQL и т.д. Сценарии PowerScript пишутся для событий объектов приложения, которыми вы хотите управлять. Рассмотрим некоторые его компоненты.

Объекты. Объект PowerBuilder - это компонент приложения, обладающий определенным набором характеристик и поведением. Характеристики объекта называются атрибутами (иначе свойствами). Поведение объекта определяется его методами, которые представляют собой набор событий, возникающих в объекте и системе при выполнении каких либо действий с объектом или системой, и набор функций, выполняемых этим объектом. Некоторые объекты, называемые объектами-контейнерами могут включать в себя (нести на себе) другие объекты. Например, на окно можно положить элемент управления вкладками ("табпейдж"), на нем разместить элемент группировки, на котором располагаются несколько переключателей ("радиобатонов").

Атрибуты объекта описывают то, как он будет выглядеть, будет ли он видим на экране, или будет скрыт от пользователя, его цвет, размеры, положение на экране, будет ли пользователь иметь возможность изменять размеры объекта или нет, и т.д. Подавляющее большинство атрибутов объекта задается разработчиком при создании приложения, но так же можно изменять атрибуты объекта и в процессе работы приложения. Для этого PowerScript, как и практически все современные языки программирования, использует точечную нотацию. Синтаксис точечной нотации заключается в том, что слева на право, через точку перечисляются все объекты-контейнеры, включающие в себя необходимый объект, потом указывается сам объект, и, после последней точки, указывается необходимый атрибут, метод или функция. Например: w_main.cb_open.Visible = True. Методы объектов мы рассмотрим несколько позже.

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

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

Имя переменной должно начинаться с буквы, включать в себя символы тире (–), подчеркивания(_), доллара($), решетки (#) и процента (%). Длинна имени переменной ограничена 99-ю символами!
По оценке специалистов, тот факт, что PowerScript допускает использование тире (–) в имени переменной (а так же объекта, функции, и др.) является очень странным и может привести к ошибкам в работе приложения, по этому делать это не рекомендуется.

Переменные имеют три 2 области видимости : Global, Instance и Local.
Область видимости Global означает, что переменная принадлежит всему приложению, обратиться к ней можно из любого места в коде приложения, и она будет уничтожена (а память, которую она занимает - освободится) только вместе с окончанием работы приложения и выгрузкой его из памяти.
Область видимости Instance означает, что переменная принадлежит объекту, в котором она объявлена, обратиться к ней можно либо напрямую из этого объекта, либо, как к свойству объекта из другой точки приложения, и она будет уничтожена при уничтожении объекта.
Область видимости Local означает, что переменная принадлежит событию или функции, к ней нельзя обратиться ниоткуда кроме как из этого события или функции, и она будет уничтожена сразу, как только код события или функции будет выполнен или прерван.

Переменные глобальные и инстансные (областей видимости Global и Instance) объявляются в специально отведенном подокне ScriptPainter`а среды (рис.1). Переменные локальные (области видимости Local) могут объявляться в любом месте кода любого события или функции. Для удобства и повышения читаемости кода переменные должны иметь значащие названия. Хорошим тоном считается добавление в начало имени переменной двух буквенного префикса и знака подчеркивания (_). Первая буква префикса, в этом случае определяется областью видимости переменной (g - Global, i - Instabce, l - Local), а вторая - определяется типом данных переменной. Знак подчеркивания выполняет функцию разделителя для лучшей читаемости кода. Например, gi_nomer - будет глобальная переменная с типом данных Integer, id_summa - инстансная переменная с типом данных Decimal, а ls_name - локальная с типом String. Так же хорошим тоном программирования считается размещение всех объявлений локальных переменных в начале кода события или функции.


Рис. 1

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

во второй строке объявления константой станет только oper_name, а oper_version будет переменной. Каждая константа должна объявляться на отдельной строке.

Функции. Функция в PowerScript - это блок кода, который выполняет определенную последовательность действий и может быть многократно использован в приложении. Например, если вам нужно в определенной ситуации проверять наличие соединения с БД и эта проверка состоит из нескольких строк кода, то вместо того, чтобы каждый раз писать эти несколько строк, вам достаточно написать их один раз, создав функцию, а потом просто вызывать ее в нужной ситуации. Существуют встроенные и пользовательские функции PowerScript. Встроенные функции, такие как GetParent() или Reverse(), являются функциями среды или системы, а пользовательские - это те функции, которые вы создаете самостоятельно при разработке приложения. Пользовательские функции имеют две области видимости - Global и Object. Глобальные функции, как и глобальные переменные, доступны из любой точки приложения, а объектные (Object) - доступны в пределах объекта, которому они принадлежат, или в качестве метода этого объекта.
Объявление функции производится с помощью следующего синтаксиса:

Function <имя функции> (<имя аргумента> <тип данных аргумента> [,<имя второго аргумента> <тип данных второго аргумента>]) [Return <тип данных возвращаемого значения>]

Например:

Из этого объявления следует, что глобальная функция gf_check_connect() принимает один аргумент в виде объекта транзакции и возвращает логическое значение. Если при объявлении функции использовано ключевое слово Return с указанием типа данных возвращаемого значения функции, то тело функции должно обязательно заканчиваться оператором Return (<возвращаемое значение>).
На самом деле этот синтаксис в PowerScript используется только для объявления внешних функций Windows API или системных библиотек (DLL), а для создания внутренних пользовательских функций используется мастер создания функции (рис.2).


Рис. 2

События. События происходят (включаются) тогда, когда пользователь с помощью элементов управления (клавиатуры, мыши и иных устройств ввода-вывода) или система воздействует на объект. При возникновении события инициируется код, записанный в обработчике события. PowerBuilder имеет множество обработчиков событий, отвечающих за выполнение кода при возникновении широчайшего спектра событий операционной системы и приложения. Так же PowerBuilder позволяет пользователю (программисту) создавать свои события. Кроме того, события можно вызывать (порождать, инициировать) непосредственно из кода в процессе выполнения приложения. Для этого в PowerScript существуют две встроенные функции - TriggerEvent() и PostEvent().
Обе функции вызываются как <имя объекта>.<имя функции (событие)> и отличаются тем, что событие вызванное с помощью TriggerEvent() будет выполнено немедленно, а событие, вызванное с помощью PostEvent() будет помещено в очередь и начнет выполняться сразу после окончания выполнения кода из которого произошел вызов.

Местоимения. В Главе 1 я уже затрагивал тему местоимений. Местоимение, в PowerScript, это четыре зарезервированных ключевых слова (This, Parent, ParentWindow и Super) позволяющих сократить точечную нотацию при обращении к свойствам и методам объекта. Так, чтобы обратиться к свойству кнопки расположенной на закладке элемента управления вкладками, которая лежит на окне из события Clicked этой кнопки, вместо синтаксиса:

мы напишем:

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

Аналогично используется и местоимение ParentWindow. Местоимение Super используется для обращения к предку из наследованного объекта. Что такое наследование и его механизм мы рассмотрим позже.

Единицы PowerBuilder. Все размеры визуальных объектов в PowerBuilder измеряются в собственных единицах измерения - PBU (PowerBuilder Unit). Для перевода этих единиц в пиксели и обратно используются встроенные функции UnitsToPixels() и PixelsToUnits(). Синтаксис этих функций очень хорошо описан в справке PowerBuilder, по этому я не буду его описывать.

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

Тип данныхОписание
AnyНеобъявленный тип данных. Для определения фактического типа данных необходимо использовать функцию ClassName()
BlobБольшой двоичный объект
BooleanЛогическое значение (True или False)
CharСимвол
DateДата в формате yyyy-mm-dd. Дефисы и ведущие нули обязательны, пробелы не допускаются
DateTimeДата и время, объединенные в одном значении
DecimalДесятичные числа со знаком и точностью 18 цифр. Сокращается как Dec
DoubleЧисла с плавающей точкой со знаком, с точностью 15 цифр
Integer16-разрядные числа со знаком в диапазоне от -32768 до +32767. Сокращается как Int
Long32-разрядные числа со знаком в диапазоне от -0 147 483 648 до +2 147 483 647
RealЧисла с плавающей точкой, с точностью 6 цифр
StringСтрока длинной от 0 до 60 000 символов
TimeВремя в 24-часовом формате hh:mm:ss. Двоеточия и ведущие нули обязательны, пробелы не допускаются
UnsignedInteger16-разрядные целые числа без знака в диапазоне от 0 до 65 535. Сокращается как UnsignedInt или Uint
UnsignedLong32-разрядные целые числа без знака в диапазоне от 0 до4 294 96 7 295. Сокращается как Ulong

Преобразование типов данных. Очень часто необходимо преобразовать какое либо значение из одного типа данных в другой. Для этого используются те же ключевые слова, что и для объявления типа данных переменной. Например, если мы имеем число в строковом формате, а нам нужно произвести с ним какие либо математические действия, то перевод осуществляется с помощью ключевого слова Decimal (для десятичного числа) или Integer (для целого). Например:

После этих преобразований, переменная li_nomer будет иметь значение 123, а переменная ld_summa - значение 12.3 как целое и дробное число. Аналогично производятся и обратные преобразования. Так после выполнения следующих строк:

значения переменных ls_nomer и ls_summa будут равны "12.3" и "123" в виде строковых величин. При переводе некоторых типов данных в тип данных String (строка), можно использовать маску, по которой будет отформатировано переведенное значение. Например. Мы имеем переменную ld_date содержащую в себе значение даты 01 января 2001 года. Простое преобразование значения этой переменной в строку даст нам значение "2001-01-01". А чтобы получить дату в строке в более привычном виде, необходимо задать маску преоразования:

После такого преобразования, в переменной ls_date будет строковое значение "01.01.2001", что нам и требовалось.

Ну вот, теперь мы имеем некий минимальный теоретический базис, необходимый для программиста. В следующей главе я постараюсь описать одно из главнейших преимуществ среды PowerBuilder, в разработке программного обеспечения для работы с базами данных, над другими языками программирования - объект DataWindow и технологию его работы и использования.

19 января 2004 г.

IKAR,
Программист-разработчик
PowerBuilder.
Ikar Home Center
GSS,
Программист-разработчик
PowerBuilder.
gss_work@zmail.ru


1 Единственный язык программирования не требующий явного объявления переменных, который я знаю, это Microsoft Visual Basic. С одной стороны это может показаться удобным - не нужно заботится об объявлениях, а с другой стороны это сильно затрудняет написание и отладку приложения и повышает вероятность ошибки, которую очень сложно отыскать.
Вернуться к тексту^

2 На самом деле существует четвертая область видимости - Shared, но ее можно рассматривать тогда, когда ваши знания в программировании достигнут определенного, весьма высокого уровня.
Вернуться к тексту^



Последнее обновление: 11.08.2016
реклама
ссылки


Продвижение сайтов

Биржа ссылок

статистика

Яндекс цитирования

(c)2002-2024 Ikar
Ikar Home Center
ICQ: 167220388
На сайте могут быть опубликованы рекламные материалы и ссылки. Всю ответственность за содержание рекламных материалов, текстов ссылок и контент рекламируемых сайтов несет рекламодатель.
hosted on pets-tree
.