20170

Создание объектов на основе базовых классов

Лекция

Информатика, кибернетика и программирование

Для создания экземпляра выбранного класса достаточно перенести пиктограмму выбранного класса в форму и разместить ее в требуемом месте формы. Созданный объект будет обладать всеми характеристиками базового класса. Синтаксис этой функции: CREATEOBJECT имя класса [ параметр 1 параметр 2 . Каждый из объектов созданных на основе базовых классов наследует свойства базового класса.

Русский

2013-07-25

63 KB

1 чел.

Лекция 2

Создание объектов на основе базовых классов

Создание объектов на основе базовых классов при создании формы обычно осуществляется просто. Список всех базовых классов содержится на панели инструментов конструктора формы. Для создания экземпляра выбранного класса достаточно перенести пиктограмму выбранного класса в форму и разместить ее в требуемом месте формы. Созданный объект будет обладать всеми характеристиками базового класса.

Имена объектов формы определяются при их помещении в форму. Наименование объектов содержат тип объекта и порядковый номер объекта в форме (например, Command 1, Label 2).

Вы можете создавать некоторые объекты не только в конструкторе форм, но и с помощью функции CREATEOBJECT языка Visual FoxPro. Синтаксис этой функции:

CREATEOBJECT (имя класса [ , параметр 1, параметр 2, ... ] )

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

frmTest=CREATEOBJECT (“FORM”)

frmTest.Caption=“Заголовок новой формы”

frmTest . Show ( )

Свойства объектов.

Каждый из объектов, созданных на основе базовых классов, наследует свойства базового класса. Свойства подобны переменным, однако в отличие от последних они не существуют вне объекта.

Возможность изменения свойств объектов в Visual FoxPro  является мощным инструментом управления данными в интерактивном режиме. Например, вы можете:

изменить свойства экранной формы (заголовок, размер и т.п.);

изменить цвета полей ввода, формат отображения;

запретить ввод в поля, переход на них или же сделать их невидимыми и многое другое.

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

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

* присваиваем переменной cName значение заголовка формы

cName=frmest . Caption

* назначаем новый заголовок формы

frmTest . Caption=“новый заголовок формы”

Visual FoxPro позволяет изменять свойства объектов в процессе выполнения программы.

Свойства, определенные для объектов с помощью окна свойств или программным путем, сохраняются в описании формы. Поэтому, если во время одного сеанса работы вы изменили свойства объектов, они сохраняются до следующего изменения.

Изменение свойств объекта не приводит к генерации события, за исключением изменения свойства Value.

Visual FoxPro позволяет не только использовать свойства, наследованные из базового класса, но и создавать новые свойства, которые вы можете использовать для хранения характеристик объектов и связанных с ними данных. Для создания нового свойства объекта используется команда Form | New Property конструктора форм, которая открывает окно диалога ”New Property”.Определите в этом окне диалога имя свойства и его описание. Созданное вами свойство появляется в вкладке “Other” окна свойств объекта. Далее вы можете присвоить созданному свойству требуемое значение в окне свойств объекта или программным путем и использовать его при выполнении приложения.

События и методы.

Аналогично свойствам наследуются события и методы базового класса, на основе которого создается объект. Список методов, определенных для объекта, отображается во вкладке “Methods” окна свойств объекта.

Для каждого события определен соответствующий ему метод, который выполняется при возникновении данного события. Например, метод Click выполняется при нажатии кнопки мыши. Список доступных методов обработки событий определяется базовым классом. Именно эти методы обеспечивают обработку всех действий пользователя (нажатие клавиш, управление мышью). Visual FoxPro предоставляет возможность модифицировать действия, выполняемые при обработке события данного объекта. Для редактирования метода установите курсор на этот метод в списке методов и нажмите два раза на кнопку мыши. На экране открывается окно редактирования метода, в котором вы можете написать программу обработки события. Например, для кнопки вы можете определить программу создания отчета, которая вызывается при нажатии на данную кнопку.

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

Методы, выполняющиеся при наступлении событий, в окне свойств объекта в списке методов в дополнение к имени метода содержит слово “Event” .

Команда MOUSE позволяет вам программным путем имитировать события Click, DoubleClick, MouseMove и DragDrop. Остальные события не могут имитироваться программно, но вы можете вызвать методы , связанные с этими событиями.

Кроме методов, связанных с событиями, объект может содержать и дополнительные методы, которые выполняются только при их вызове. Например, для формы могут быть определены методы перехода на следующую запись, удаления записи и т.п. Эти методы могут наследоваться из базового класса, но вы можете создавать новые методы и для отдельных объектов. Для создания нового метода выполните команду  Form| New Method конструктора форм  и в окне диалога “New Method” определите имя и краткое описание метода. Созданный вами метод добавляется в список методов объекта и вы можете открыть окно редактирования метода для ввода программного кода.

Для выполнения метода необходимо указать не только имя метода, но и объект, к которому будет применяться данный метод, Имя объекта и имя метода разделяются точкой.

Вложенность объектов.    

Объекты, созданные на основе классов-контейнеров, могут содержать другие объекты. Ссылка на вложенный объект осуществляется путем перечисления объектов, содержащих этот объект. Элементы списка разделяются точками. Например, для ссылки на столбец colCountry объекта-сетки grdADDRESS, которая в свою очередь также является объектом, необходимо написать grdADDRESS.colCountry. Такая ссылка называется абсолютной ссылкой. Если глубина вложения объекта большая, абсолютная ссылка может включать слишком много объектов и будет слишком громоздкой. В  Visual FoxPro имеются средства, которые позволяют сократить список объектов ссылки.

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

_SCREEN.ActiveForm.Caption=‘’Новый заголовок формы”

Аналогично, свойство ActiveControl позволяет вам получить доступ к активному объекту формы, а свойство ActivePage - к активной странице формы. Например, следующее выражение позволяет изменить надпись активной кнопки.

_SCREEN.ActiveControl.Caption=“Печать ведомости

При ссылке на вложенный объект вы можете использовать свойство Parent и ключевые слова для идентификации объекта, к которому вы хотите получить доступ. Свойство Parent содержит ссылку на непосредственный контейнер объекта. Список ключевых слов и определяемые ими ссылки приведены в таблице.

                                   

Наименование

Ссылка

THIS

На сам объект

THISFORM

На форму, которая содержит объект

THISFORMSET

На группу форм, которая содержит объект

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

THIS.BackColor=RGB(255,255,255)

THIS.Parent.BackColor=RGB(195,0,0)

THISFORM.Caption=`Форма, содержащая объект`

THISFORMSET.Caption=`Группа форм, содержащая объект`

Каждый объект обрабатывает связанные с ним события независимо. Поэтому контейнер не может реагировать на события вложенного в него объекта даже в том случае, если данный объект не содержит метода для обработки события, а контейнер может реагировать на данное событие.

Использование свойств, событий и методов.

Свойство - атрибут элемента управления, поля или базы данных, который вы устанавливаете для определения одной из характеристик объекта или какого-либо аспекта его поведения.

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

Метод - действие, которое способен выполнить объект. Методы, не связанные с событиями, могут вызываться из методов, выполняемых при наступлении событий.

Устанавливать свойства объекта можно как в процессе выполнения, так и в процессе создания объекта следующим образом:

Parent.Object.Property = Value

(ссылка на объект-контейнер элемента управления.объект.свойство.=значение)

Например, Forma1.Text1.Enabled = .T.

Методы вызываются после создания объекта.

Синтаксис:

Parent.Object.Method

Например, FormSet1.Form1.Show

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

Например, Form1.Caption = Form1.GetNewCaption( )

(заголовок формы принимает значение, возвращаемое методом, определенным пользователем GetNewCaption)

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

Например,  Form1.Init(v) передает параметр v обработчику события Init для объекта Form1.

Чтобы выполнить метод родительского класса в среде метода подкласса, используют оператор разрешения области видимости:  (::)

Имя класса::Метод

При создании подкласса его методы автоматически наследуются из родительского класса. Оператор :: позволяет выполнить метод родительского класса внутри метода подкласса, а затем выполнить дополнительные действия для метода подкласса.

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

1. Набор событий базовых классов Visual FoxPro фиксирован и не может быть расширен.

2. Каждый класс распознает ряд фиксированных стандартных событий, минимальный набор которых включает в себя события  Init (Имеет место при создании объекта), Destroy (имеет место, когда освобождается объект) и Error(Имеет место при возникновении в методе ошибки этапа выполнения).

3. Если в определении класса имя метода совпадает с именем события, распознающегося этим классом, то метод будет выполняться при наступлении соответствующего события.

4. Метод добавляется к классу после включения процедуры или функции в определение класса.

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

Создание и использование классов.

Для создания класса можно использовать: команду меню File/New (опция "Class") или команду: Create Class. В результате появляется диалог New Class.

В поле ввода Class Name указывается имя создаваемого класса, в поле Based On - имя класса, на основе которого создается новый класс. Поле From доступно только для чтения  и содержит имя библиотеки классов, из которой выбран базовый класс. При использовании базовых классов VFP данное поле остается пустым. В поле Store in вводится имя библиотеки, в которой будет храниться создаваемый класс. Библиотека классов представляет собой файл с расширением VCX. Вы можете выбрать созданные ранее библиотеки или указать новую библиотеку. Для создания библиотеки классов можно также использовать команду Create Classlib. После ввода значений на экране появится окно конструктора классов, аналогичное окну конструктора форм. Если создаваемый класс является контейнером, то вы можете размещать в классе объекты, которые в свою очередь могут создаваться на основе пользовательских классов. Для каждого объекта класса можно определить свойства и методы, а при необходимости добавить новые.

 Например, был создан класс типа форма, содержащий определенный фон и заголовок.

Форма, созданная на основе данного класса, будет содержать размещенный в классе текст заголовка. Разработчику формы потребуется только изменить содержание этого текста, при этом будут соблюдены все стандарты на создаваемую форму.

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

 В случае необходимости можно копировать класс из одной библиотеки в другую. Для этого во вкладке "Class" окна проекта надо раскрыть обе библиотеки и перетащить мышью нужный класс в новую библиотеку.

 Для удаления класса из библиотеки классов можно использовать команду Remove class или кнопку Remove в окне проекта. Для изменения имени класса - команду Rename class или опцию Rename в окне проекта.

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

 Например можно определить класс - типа кнопка с определенным шрифтом и текстом заголовка. На его основе можно создать класс-кнопку для выхода из программы. В этом случае в диалоге "New class" указывается не только имя класса, на основе которого создается новый класс, но библиотеку, в которой он хранится (он - класс). У создаваемого класса в окне конструктора классов вами изменяется заголовок кнопки и определяются действия, выполняемые при нажатии на эту кнопку. В данном случае - это процедура закрытия формы.

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

 В создаваемых классах можно размещать объекты созданных ранее пользовательских классов. Для этого на панели инструментов выберите кнопку View class. Появляющееся всплывающее меню содержит список библиотек классов. С помощью опции Add можно добавить в этот список новую библиотеку.

Команда Class/class info открывает окно диалога Class info, с помощью которой можно просмотреть основную информацию о классе и определить пиктограмму для обозначения класса. Имя 1-й из них вводится в поле Toolbar Icon и в дальнейшем отображается на панели инструментов "Form controls" в окнах конструктора форм и конструктора классов, содержащей данный класс. Имя 2-й пиктограммы вводится в поле Containes icon и отображается в окне диалога Class Browse.

 Если вы не определите пиктограммы для создаваемых классов, на панели инструментов Form controls будут отображаться пиктограммы базовых объектов, на базе которых создается класс. Если в вашей библиотеке классов содержится несколько однотипных классов, все они будут иметь одинаковые пиктограммы. В этом случае выбрать требуемый класс можно только по всплывающей подсказке, содержащей имя класса.

 Вкладка "Members" окна диалога "Class info" содержит список объектов, входящих в класс и список методов класса. При нажатии кнопки Modify появляется окно, в котором можно определить область видимости объектов:  Hidden – указывает, является ли объект скрытым, Protected указывает, защищен ли данный объект (если установлен, то свойства данного объекта можно изменять только при редактировании данного класса).

Для выбора пользовательского класса, используемого при создании формы, в области "Template classes" установите флажок Form и выберите требуемый класс. Аналогичным образом можно установить и пользовательский класс для создания набора форм. При создании форм в составе набора форм можно выбрать тип используемой формы из библиотек классов аналогично выбору других объектов.

 Существующую форму можно использовать для создания класса. Причем вы можете сохранить всю форму в виде класса или выбрать определенные объекты формы и сохранить их в виде класса. Для сохранения формы-класса команда меню File/Save as class и в открывающемся окне диалога переключатель Save ставится в положение "Сurrent form", а для сохранения объектов формы в виде класса - в положение Selected controls, для сохранения набора форм - в положение Entire Form set.

Class Browser.

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

 Для открытия окна "Class browser" выполните команду Class browser из меню Tools или в командном окне выполните команду Do (-browser).

 В центральной части окна Class browser отображается список классов выбранной библиотеки. Знак (<<), перед именем класса указывает на то, что в окне не отображается его родительский класс, поскольку он находится в другой библиотеке. Двойное нажатие кнопки мыши на имени этого класса автоматически добавляет библиотеку, содержащую родительский класс, в окно Class browser. При этом в окно добавляются все классы из этой библиотеки.

 В окне "Class browser" отображаются несколько библиотек классов. Добавить новую библиотеку можно также с помощью кнопки View additional file.  Если вас интересуют классы одного типа (например, класс кнопок), вы можете выбрать их из списка Type. С помощью контекстного меню, вызываемого нажатием правой кнопки мыши, можно установить свойства объекта класса, модифицировать класс, переименовать, удалить класс и т.д. Например, с помощью опции Empty отображаются пустые методы в списке элементов класса.

 Над списком классов находится пиктограмма выбранного класса. Ее можно установить в окне конструктора классов с помощью команды Class/Class info.   Кнопка View class code - отображает исходный текст описания класса, который можно использовать при создании собственных классов программным путем.   Кнопка Find - предназначена для поиска класса и элементов класса по имени класса, описанию класса, имени элемента класса и его описанию.


 

А также другие работы, которые могут Вас заинтересовать

41258. Криві титрування та індикатори редоксометрії 102 KB
  Криві титрування та індикатори редоксометрії. План Криві титрування. Індикатори редоксометрії Криві титрування.
41259. Встановлення нормальності перманганату калію за вихідними речовинами 83.5 KB
  З рівняння видно що окиснювальний потенціал сильно залежить від рН розчину. В іншому випадку можливий перебіг побічних процесів наприклад: Для підкислення розчину застосовуеться звичайно сірчана кмслота оскільки HCl відновлюється перманганатом а азотна кислота сама здатна виступати як окисник що зрозуміло у кількісному аналізі неприпустимо. Приготування робочого розчину Як видно з рівняння реакції еквівалентна маса KMnO4 дорівнює Ми ділемо молярну масу на 5 у даному випадку тому що молярні маси еквівалентів в окисновідновних реакціях...
41260. Приготування та встановлення нормальності робочих розчинів йодометрії 92.5 KB
  Загальна характеристика методу Методи які базуються на виділенні або поглинанні йоду називаються йодометрією і займають особливе місце серед інших методів редоксометрії. Сильні відновники SnCl2 N3SO3 та інші визначають прямим титруванням робочим розчином йоду подібно перманганатометрії дихроматометрії тощо. До розчину окисника додають спочатку надлишок йодиду калію при цьому виділяється еквівалентна кількість йоду який відтиттровують тіосульфатом натрію. Деякою перепоною для широкого впровадження йодометрії при масових аналізах є...
41261. Комплексна функція електричного кола і частотні характеристики лінійних електричних кіл 247 KB
  Аналіз ланцюгів синусоїдального струму показує що амплітуди і початкові фази струмів у гілках і напруг на елементах ланцюга в загальному випадку залежать не тільки від схеми і параметрів її елементів не тільки від амплітуди і початкової фази коливань джерел що діють у ланцюзі але і від частоти цих коливань. Іншими словами характеристики процесів у ланцюгах істотно залежать від частоти. Визначаючи реакції одного і того ж ланцюга на гармонійні впливи з однаковими амплітудною і початковою фазою але різною частотою і порівнюючи них легко...
41262. ЗАГАЛЬНІ ВІДОМОСТІ ПРО ПЕРЕХІДНІ ПРОЦЕСИ В ЕЛЕКТРИЧНИХ ЛАНЦЮГАХ 255.5 KB
  Розрізняють два режими роботи ланцюга: сталий стаціонарний і несталий перехідний нестаціонарний. Несталим режимом або перехідним процесом у електричного ланцюга називають элекромагнитный процес що виникає у ланцюзі при переході від одного сталого режиму до іншого. Цей процес виникає в електричних ланцюгах при підключенні до них або відключенні від них джерел елект...
41263. Перехідні процеси в нерозгалужених колах першого порядку 190 KB
  Перехідні процеси у нерозгалужених ланцюгах першого порядку с джерелом постійної напруги Перехідні процеси в ланцюгах першого порядку з джерелом постійної напруги можуть виникнути як при підключенні джерела до ланцюга так і при стрибкоподібній зміні її чи схеми параметрів її елементів. Методику аналізу перехідних процесів що виникають у нерозгалуженому ланцюзі першого порядку при підключенні до неї джерела постійної напруги при нульових початкових умовах розглянемо на прикладі ланцюга r мал. На підставі другого закону...
41264. Аналіз проходження сигналів через лінійні електричні кола методом інтегралу Дюамеля 116.5 KB
  При малій тривалості Δτ реакція ланцюга на кожен імпульс fвх kt відповідно до формули 18.3 визначається за допомогою її імпульсної характеристики як добуток: fвых kt= tτSиk = tτ fвх τΔτ.8 Реакцію ланцюга на вплив fвх t відповідно до принципу накладення: знайдемо як суму реакцій fвых kt n τ=nΔt fвых t= Σ fвых kt= Σ fвхτtτΔτ.9 k=0 τ=0...
41265. Операторні передавальні функції 180.5 KB
  Операторной передатною функцією лінійного електричного ланцюга ДОр називають відношення зображення вихідної величини Xρ до зображення вхідної величини Fp при нульових початкових умовах: дор=Xρ Fρ.23...
41266. Числівник як повнозначна частина мови 69 KB
  Розряди числівників за значенням та граматичними ознаками. Особливості відмінювання та правопису числівників. Сполучення числівників з іменниками Пономарів Правопис. Вся складна система числівників базується на: десяти назвах чисел першого десятка: один два три чотири п’ять шість сім вісім дев’ять десять шести числових назвах: нуль сорок сто тисяча мільйон мільярд.