Классы (для пользователей Visual Basic 6.0)

Обновлен: Ноябрь 2007

Классы являются строительными блоками объектно-ориентированного приложения. Класс — это программная конструкция, представляющая объект в системе. При разработке приложения требуется разработать необходимые объекты, содержащуюся в эти объектах информацию и действие этих объектов. Дополнительны сведения о классах и объектно-ориентированном программировании см. в разделе Объектно-ориентированное программирование в Visual Basic.

Модули класса

Visual Basic 6.0

В версии Visual Basic 6.0 поддерживается определение классов через модуль класса. Определение класса хранится в файле специального типа с расширением CLS. В каждом модуле класса определяется один класс. Часть определения класса включается в файл с расширением CLS, и только эта часть является редактируемой через систему проекта.

Visual Basic 2008

В версии Visual Basic 2008 класс определяется Оператор Class (Visual Basic), а не именем файла. Классы в Visual Basic 2008 определяются в файлах исходного кода, имеющих расширение VB. В одном файле может быть определено несколько классов. В исходном коде можно увидеть определение класса полностью в виде простого текста.

Глобальные классы

Visual Basic 6.0

При создании в версии Visual Basic 6.0 нового класса допустимыми значениями свойства Instancing являются GlobalSingleUse и GlobalMultiUse. Они указывают, что другие компоненты могут вызывать свойства и методы этого нового класса, как если бы они были общими членами. Экземпляр класса создается неявно при первом вызове одного из его членов.

Visual Basic 2008

В версии Visual Basic 2008 свойство Instancing не поддерживается. В версии Visual Basic 2008 те же функциональные возможности обеспечиваются путем представления доступа к членам стандартного модуля. Доступ к общим свойствам и методам класса можно осуществлять с помощью оператора Imports. Тот же результат, что и при использовании GlobalMultiUse, можно получить при доступе к классу с атрибутом Public и к соответствующему конструктору.

Классы данных

Visual Basic 6.0

В версии Visual Basic 6.0 также поддерживаются классы источников данных и потребителей сложных данных.

Visual Basic 2008

Прямого эквивалента в версии Visual Basic 2008 не существует. Дополнительные сведения о работающих с данными классах см. в разделе Практическое руководство. Подключение к данным в объекте.

Члены по умолчанию

Visual Basic 6.0

В версии Visual Basic 6.0 любой отдельный метод или элемент данных может быть определен как член класса, используемый по умолчанию.

Visual Basic 2008

В версии Visual Basic 2008 в качестве члена класса или структуры по умолчанию может быть указано только свойство, которое принимает один или несколько аргументов. Это обеспечивает взаимодействие с другими языками программирования. Дополнительные сведения см. в разделе Практическое руководство. Объявление и вызов свойства по умолчанию в Visual Basic.

Время существования объекта

Visual Basic 6.0

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

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

Visual Basic 2008

В версии Visual Basic 2008 деструктор необязательно должен вызываться сразу после освобождения последней ссылки. Это происходит потому, что общеязыковая среда выполнения поддерживает дерево ссылок, а не отдельные счетчики ссылок. Сборщик мусора отслеживает дерево ссылок в фоновом режиме. При обнаружении объекта или группы объектов, на которые отсутствуют ссылки из исполняемого в данный момент кода, вызываются деструкторы всех таких объектов. Порядок этого удаления невозможно предсказать, также как и время, которое требуется сборщику мусора, чтобы отследить дерево ссылок. Таким образом, время жизни объекта является неопределенным. Дополнительные сведения см. в разделах Время существования: создание и уничтожение объектов и Сборка мусора.

Параметры обновления

Мастер обновления создает прямую обновленную версию модулей классов с минимальными изменениями кода. Кроме перечисленных выше изменений программисты языка Visual Basic могут выбрать какие-то из нескольких новых конструкций, имеющих конкретное отношение к объектно-ориентированному программированию. Некоторые из них перечислены ниже.

  • Конструкторы   Конструкторы заменяют использование Class_Initialize версии Visual Basic 6.0. Дополнительные сведения см. в разделе Изменения Class_Initialize для пользователей Visual Basic 6.0..

  • Стандартные индексированные свойства Стандартные индексированные свойства используются для доступа к элементам коллекций исключительно в пределах платформы .NET Framework. Дополнительные сведения см. в разделе Изменения свойств по умолчанию для пользователей Visual Basic 6.0.

  • ReadOnly В версии Visual Basic 6.0 при отсутствии процедуры Get свойство неявным образом определяется как предназначенное только для чтения. В версии Visual Basic 2008 необходимо ключевое слово ReadOnly, чтобы явным образом объявить это поведение. Дополнительные сведения см. в разделе Оператор Property.

  • Позднее связывание Так как в версии Visual Basic 6.0 позднее связывание используется по умолчанию, то наиболее вероятным путем обновления кода без ошибок является присвоение Option Strict значения Off. Изменение значения Option Strict на On принудительно обеспечивает безопасность типов во время компиляции и может приводить к небольшим ошибкам во время компиляции, а не во время выполнения. Дополнительные сведения см. в разделе Оператор Option Strict.

  • Перегрузка методов Перегрузка методов сокращает количество именованных элементов в классе. Это делает класс более удобным для чтения и простым для использования в программе. Дополнительные сведения см. в разделе Изменения процедур (для пользователей Visual Basic 6.0).

  • Имя файла В версии Visual Basic 6.0 имя класса должно соответствовать имени файла. В версии Visual Basic 2008 программист управляет обоими именами и может определить несколько классов в одном файле исходного кода. Количество классов, включаемых в один файл, обычно определяется стандартом программирования.

  • ByRef По умолчанию в версии Visual Basic 6.0 параметры являются ByRef, поэтому безопаснее всего при обновлении делать их ByRef. Дополнительные сведения см. в разделе ByVal.

  • Ключевое слово Return В версии Visual Basic 6.0 для возвращения значения функции в качестве переменной используется имя функции. В версии Visual Basic 2008 существует явное ключевое слово Return, предназначенное для возвращения значений функции. Дополнительные сведения см. в разделе Оператор Return (Visual Basic).

  • Перегрузка операторов   Теперь для определяемых классов можно определять значение операторов сложения (+), вычитания (-) и других. Дополнительные сведения см. в разделе Оператор Operator.

  • Новые операторы   Оператор += позволяет сократить и упростить строку кода. Дополнительные сведения см. в разделе Арифметические операторы (Visual Basic).

  • Определение новых значений в одной строке Синтаксис версии Visual Basic 2008 позволяет объявлять и определять значение новой переменной в одной строке кода. Это означает, что можно принудительно ограничить данные с момента создания экземпляра объекта. Дополнительные сведения см. в разделе Оператор Dim (Visual Basic).

Переписывание кода не является безопасной задачей. При каждом изменении кода необходимо проводить повторное тестирование. Кроме того, некоторые ключевые слова версии Visual Basic 2008 не действуют точно так же, как в версии Visual Basic 6.0. Дополнительные сведения см. в разделе Обновление приложений, созданных в предыдущих версиях Visual Basic.

См. также

Основные понятия

Раннее и позднее связывание

Изменения Class_Initialize для пользователей Visual Basic 6.0.

Ссылки

Инструкция Structure

Оператор Property

Оператор Option Strict

Оператор Return (Visual Basic)

ByVal и ByRef нельзя использовать совместно

ByRef

Другие ресурсы

Создание и использование объектов

Общее представление о классах