Знакомство с объектами в Visual Basic
Обновлен: Ноябрь 2007
Объект — это структура, в которой содержатся данные и методы для обработки данных. Практически все, что можно выполнить в Visual Basic, связано с объектами. Пользователям, не знакомым с объектно-ориентированным программированием, войти в курс дела помогут представленные в этом разделе термины и понятия.
Классы и объекты
Слова "класс" и "объект" настолько часто используются в объектно-ориентированном программировании, что их легко перепутать. Вообще говоря, class — это абстрактное представление чего-либо, а объект — используемый экземпляр того, что представляет класс. Единственным исключением из этого правила являются общие члены классов, которые используются и в экземплярах класса, и в переменных объектов, объявленных как тип класса.
Поля, свойства, методы и события
Классы состоят из полей, свойств, методов и событий. Поля и свойства представляют сведения, содержащиеся в объекте. Поля подобны переменным в том, что их можно прочитать или изменить напрямую. Например, если имеется объект с именем "Автомобиль", его цвет можно сохранить в поле с именем "Цвет".
Свойства извлекаются и устанавливаются подобно полям, но при этом используются процедуры свойства Get и свойства Set, которые предоставляют больше возможностей управления заданием или возвратом значений. Дополнительный уровень абстрагирования между хранимым значением и процедурами, в которых оно используется, помогает изолировать данные и позволяет проверить значения до их присвоения или извлечения.
Методы представляют действия, которые может выполнить объект. Например, объект "Автомобиль" может иметь методы "Запуск_двигателя", "Езда" и "Остановка". Для определения методов к классу добавляются подпрограммы Sub или функции.
События — это уведомления, получаемые объектом от других объектов или приложений или передаваемые объектом в другие объекты или приложения. События позволяют объектам выполнять действия при появлении определенных обстоятельств. Примером события для класса "Автомобиль" может служить "Проверка_двигателя". Поскольку Microsoft Windows является управляемой событиями операционной системой, события могут поступать от других объектов и приложений или от пользователя (например, при нажатии кнопки мыши или клавиши).
Инкапсуляция, наследование и полиморфизм
Поля, свойства, методы и события являются только одной частью объектно-ориентированного программирования. Настоящее объектно-ориентированное программирование подразумевает поддержку объектами трех качеств: инкапсуляции, наследования и полиморфизма.
Инкапсуляция означает, что группа связанных свойств, методов и других членов рассматривается как единый элемент или объект. Объекты способны контролировать изменение свойств и выполнение методов. Например, объект способен проверять значения, прежде чем разрешить изменение свойств. Инкапсуляция также упрощает последующие изменения кода, позволяя скрыть детали реализации объектов, то есть скрыть данные.
Наследование описывает возможность создания новых классов на основе существующих классов. Новый класс наследует все свойства, методы и события базового класса, и в него можно также добавлять дополнительные свойства и методы. Например, можно создать новый класс с именем "Грузовик" на основе класса "Автомобиль". Класс "Грузовик" наследует свойство "Цвет" от класса "Автомобиль" и может иметь дополнительные свойства, например "Четыре_ведущих_колеса".
Полиморфизм означает, что можно иметь несколько взаимозаменяемых классов, даже если каждый класс реализует одни и те же свойства или методы разными способами. Полиморфизм важен для объектно-ориентированного программирования, поскольку он позволяет использовать элементы с совпадающими именами, абстрагируясь от того, какой тип объекта используется в тот или иной момент времени. Например, в случае с базовым классом "Автомобиль" полиморфизм позволяет программисту определить различные методы "Запуск_двигателя" для любого числа производных классов. Метод "Запуск_двигателя" производного класса с именем "Дизельный_автомобиль" может совершенно отличаться от метода с тем же именем в базовом классе. Другие процедуры или методы могут использовать метод "Запуск_двигателя" производных классов точно так же, независимо от типа объекта "Автомобиль", используемого в настоящее время.
Перегрузка, переопределение и переобъявление
Перегрузка, переопределение и переобъявление являются схожими понятиями, которые легко перепутать. Хотя все три метода позволяют создавать члены с одинаковыми именами, между ними существуют важные различия.
Перегруженные члены используются для предоставления разных версий свойства или метода с одним именем, но принимающих разное число параметров, или параметров с разными типами данных.
Переопределенные свойства и методы используются для замены унаследованного свойства или метода, не соответствующего производному классу. Переопределенные члены должны принимать тот же тип данных и число аргументов. Производные классы наследуют переопределенные члены.
Переобъявленные члены используются для локальной замены члена с более широкой областью применения. Любой тип способен переобъявить любой другой тип. Например, можно объявить свойство, переобъявляющее унаследованный метод с тем же именем. Переобъявленные члены не наследуются.
См. также
Основные понятия
Перегруженные свойства и методы
Переопределение свойств и методов