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

Свойства, которые определяет класс, указывают характеристики объекта этого класса. Например, класс командной кнопки CommandButton имеет свойство Name, которое определяет имя командной кнопки, которое в свою очередь, противопоставляется свойству Caption, которое определяет текст, который командная кнопка отобразит пользователю.

Методы класса определяют и хранят процедурный код, который исполняется всякий раз, когда вы вызываете метод объекта этого класса. Например, класс командной кнопки CommandButton имеет метод Move, который перемещает командую кнопку в указанные вами координаты.

События класса определяют код, который будет исполняться всякий раз, когда система или пользователь включает это событие для объекта этого класса. Например, класс командной кнопки CommandButton содержит событие Click, которое представляет собой процедурный код, который исполняется всякий раз, когда пользователь щелкает по ней.

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

Приведенные ниже разделы предоставляют подробную информацию о классах Visual FoxPro:

Для получения более подробной информации об объектах в Visual FoxPro, смотрите описание Работа с объектами в Visual FoxPro.

Преимущества использования классов

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

  • Инкапсуляция

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

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

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

  • Создание субклассов

    Для получения более подробной информации, смотрите их описание Субклассы в Visual FoxPro.

  • Наследование (Inheritance)

    Для получения более подробной информации, смотрите их описание Subclasses in Visual FoxPro.

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

Типы классов Visual FoxPro

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

Контейнерные классы и классы управляющих элементов.

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

Например, предположим, что вы создаете контейнерный класс, который состоит из двух listbox'ов и двух командных кнопок. Затем вы добавляете объект, основанный на контейнерном классе в форму. Вы можете управлять каждым объектов в контейнере, как в design, так в run time; например, вы можете изменить позиции listbox'ов или заголовки командных кнопок. Кроме того, вы можете добавлять другие объекты в контейнер в design time; например, вы можете добавить метки для идентификации listbox'ов.

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

Контейнер Может содержать

Column

Может содержать Заголовки (Headers) и любые другие объекты, за исключение наборов форм, самих форм, панелей инструментов, таймеров и других колонокКомандные кнопки

CommandGroup

Command buttons - командные кнопки

Container

Любые управляющие элементы

Control

Любые управляющие элементы

Custom

Любые управляющие элементы, data environment, page frame - страничный фрейм, container - контейнер, custom - специальный пользовательский класс (не путать с произвольно создаваемым пользователем классом - это невозможно в Visual FoxPro)

DataEnvironment

Курсоры, отношения и курсоры-адаптеры

FormSet

Формы и панели инструментоы

Form

Page frames, data environment, Любые управляющие элементы, containers, custom

Grid

Columns - колонки

OptionGroup

Option buttons - отдельные радиокнопки

PageFrame

Pages - страницы

Page

Любые управляющие элементы, контейнеры, custom

Project

Файлы,сервера (не путать с компьютерным железом! :))

Toolbar

Любые управляющие элементы, page frame, container

Визуальные и невизуальные классы

В Visual FoxPro, объекты и управляющие элементы, созданные из визуальных классов отображают визуальные элементы как в design, так и в run time. Объекты и элементы, основанные на невизуальных классах, таких, как класс Custom и элемент Timer, отображают визуальный элемент только в среде разработки - design time, но не в run time.

Смотрите также