Что такое объект в visual basic
Перейти к содержимому

Что такое объект в visual basic

  • автор:

Классы. ООП

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

Class Book End Class

Всю функциональность класса обеспечивают его члены — поля, свойства, методы, конструкторы, события. Поля представляют обычные переменные? обычным образом также определяются процедуры и функции (в этом плане классы во многом похожи на структуры):

Class Book 'Название книги Dim name As String 'Автор Dim author As String 'Год издания Dim year As Integer 'Метод для вывода информации о книге Sub GetInformation() Console.WriteLine("Книга '' (автор ) была издана в году", name, author, year) End Sub End Class

Кроме обычных методов в классах существуют специальные методы — конструкторы . Конструкторы вызываются при создании нового объекта класса. Чтобы объявить конструктор, надо использовать ключевое слово New . Зачем нужен конструктор? Обычно конструктор выполняет инициализацию членов класса. Объявим в классе конструктор, который будет инициализировать поля нашего класса Book:

Public Class Book 'Название книги Dim name As String 'Автор Dim author As String 'Год издания Dim year As Integer Sub New(name As String, author As String, year As Integer) Me.name = name Me.author = author Me.year = year End Sub End Class

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

Sub New() End Sub

Теперь используем класс. Создайте новое консольное приложение. Затем нажмите правой кнопкой мыши на название проекта в окне Solution Explorer (Обозреватель решений) и в появившемся меню выберите пункт Add (Добавить) , в другом появившемся меню выберите пункт Class (Класс) . В окне создания нового класса присвойте ему имя Book и нажмите кнопку Add (Добавить) . В проект будет добавлен новый класс Book , который будет находиться в файле Book.vb . Перенесите в этот класс следующий код:

Public Class Book 'Название книги Dim name As String 'Автор Dim author As String 'Год издания Dim year As Integer Sub New(name As String, author As String, year As Integer) Me.name = name Me.author = author Me.year = year End Sub 'Конструктор по умолчанию Sub New() name = "Евгений Онегин" author = "А. С. Пушкин" year = 1833 End Sub 'Метод для вывода информации о книге Sub GetInformation() Console.WriteLine("Книга '' (автор ) была издана в году", name, author, year) End Sub End Class

Теперь в основной файл приложения — в модуль добавим следующий код:

Module Module1 Sub Main() Dim b1 As Book = New Book("Война и мир", "Л. Н. Толстой", 1869) b1.GetInformation() 'Используем конструктор по умолчанию Dim b2 As Book = New Book() b2.GetInformation() Console.ReadLine() End Sub End Module

Если мы запустим код на выполнение, то консоль выведет нам информацию о книгах b1 и b2. Обратите внимание, что чтобы создать новый объект кроме конструктора нам надо использовать ключевое слово New . В первом случае мы используем свой конструктор, а во втором — конструктор по умолчанию.

Частичные классы

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

Partial Public Class Book 'Название книги Dim name As String End Class
Partial Public Class Book 'Автор Dim author As String 'Год издания Dim year As Integer End Class

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

Ключевое слово With

Предположим, что у нас есть следующий класс State :

Class State Public capital As String Public area As Integer Public population As Integer Sub New(cap As String) capital = cap End Sub End Class

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

Dim state1 As New State("City") state1.area = 200 state1.population = 200

Однако таких свойств может быть множество. И чтобы сократить объем кода, мы можем использовать конструкцию With. End With . Чтобы применить эту конструкцию, после слова With указывается объект, а затем построчно свойства объекта, которые мы хотим получить или присвоить:

Dim capit As String Dim state1 As New State("City") With state1 'Установка остальных полей .area = 200 .population = 200 'Получение значение поля capital capit = .capital End With

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

Объекты, свойства, методы и события MS Visual Basic

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

Visual Basic содержит объекты (простые, элементы управления, коллекции и др.), основными из которых являются следующие.

  • • ClipBoard — предоставляет доступ к буферу обмена Windows;
  • • Font — содержит информацию, необходимую для определения внешнего вида текста;
  • • Form — окно, содержащее рабочую поверхность проекта;
  • • MDlForm — материнская MDI-форма, которая может содержать в себе дочерние формы (документы);
  • • Picture — позволяет манипулировать графикой в различных форматах;
  • • Screen — позволяет манипулировать положением формы на экране, шрифтами, а также указателем мыши за пределами формы.
  • • Checkbox — поле флажка, позволяющее задавать и отображать логическое значение;
  • • ComboBox — комбинированное поле, объединяющее текстовое поле и связанное с ним поле списка;
  • • Data — предоставляет доступ к базе данных посредством объекта Recordset одного из трех типов;
  • • FileListBox — отображает список файлов текущего каталога и позволяет выбрать один или несколько файлов;
  • • Frame — рамка является контейнером, в который можно поместить другие управляющие элементы;
  • • HScrollBar, VScrollBar — полосы прокрутки, позволяющие отображать и вводить числовые значения из заданного диапазона с помощью указателя мыши;
  • • Image — графический образ, предназначенный для отображения на экране точечного рисунка или значка;
  • • Label — поле для отображения текстовой надписи;
  • • Line — отображает линию;
  • • ListBox — поле списка, где можно отображать элементы списка и выбирать их;
  • • Menu — элемент меню;
  • OLE — OLE-контейнер, способный заключать в себе связываемые и внедряемые объекты;
  • • OptionButten — позиция переключателя. Два и более элементов этого вида, помещенные в один контейнер, составляют переключатель на соответствующее число позиций;
  • • Picture Box — отображает на экране загруженные точечные рисунки и позволяет рисовать на своей поверхности с помощью графических методов;
  • • Shape — фигура, служит для представления на рабочей поверхности объекта геометрических фигур;
  • • TextBox — отображает и позволяет изменять текст;
  • • Timer — генерирует события Timer через заданные промежутки времени.
  • • DataObjectFiles — коллекция строк с именами файлов, используемых объектом DataQbject;
  • • Forms — окна форм, включают все загруженные формы приложения.

Свойство — это управляющая структура, с помощью которой происходит доступ к полям объекта. Поле — это переменная класса, изменять значение которой можно с помощью свойств. Свойства определяют внешний вид и поведение объектов. Однотипные объекты могут иметь по ряду свойств одни и те же установки. Такие свойства называются групповыми и устанавливаются одновременно для выделенных объектов. Многие свойства являются общими (не путать с групповыми) для объектов. Например, свойства Name (Имя), Caption (Надпись), размеры и положение, шрифты, цвет, фокус (активизация) объектов, возможность видимости и т. д. Visual Basic содержит свойства объектов, основными из которых являются следующие:

  • • AutoRedraw — разрешает или запрещает автоматическое перерисовывание результатов работы графических методов на поверхности формы или элемента PictureBox;
  • • Autosize — разрешает или запрещает автоматическое изменение размеров элемента в соответствии с размерами его содержимого;
  • • Backcolor, Forecolor — задают цвета соответственно фона и переднего плана объекта;
  • • Backstyle — определяет стиль фона объекта
  • • BOF Action, EOF Action — содержит и позволяет задать значение вида автоматического действия, которое будет предпринято при получении свойством BOF или EOF значения True (т. е. при попытке перейти на позицию до начала или после конца файла);
  • • Bold — определяет наличие признака начертания «полужирный» для объекта Font;
  • • BorderColor — задает цвет обрамления;
  • • BorderStyle — задает стиль обрамления;
  • • Borderwidth — возвращает и позволяет задать значение, определяет толщину линий обрамления;
  • • Cancel — содержит и позволяет задать значение, определяющее срабатывание командной кнопки (обычно это кнопка Отмена) при нажатии клавиши Esc;
  • • Caption — содержит строковое значение, определяющее надпись на управляющем элементе или объекте;
  • • Changed — сигнализирует об изменении значения свойства на странице свойств;
  • • Class — возвращает имя класса, к которому относится внедренный объект;
  • • Clipboard — позволяет получить доступ к буферу обмена Windows;
  • • Col, Row — определяют текущую клетку в сетке или таблице данных;
  • • Cols, Rows — определяют общее количество столбцов и строк в сетке;
  • • Columns — определяет количество столбцов в списке;
  • • Currentx, CurrentY — содержат пару координат, на которых завершилась работа графического метода или последнего метода, выводящего символы;
  • • Database — содержит ссылку на объект типа Database, связанный с элементом типа Data;
  • • DatabaseName — возвращает и позволяет задать полное имя файла или каталога, содержащего базу данных, с которой связан или должен быть связан элемент типа Data;
  • • DataField — определяет поле в наборе записей, которое должен отображать данный элемент;
  • • DataSource — определяет имя элемента типа Data, через который данный управляющий элемент связан с базой данных;
  • • Default — разрешает или запрещает срабатывание командной кнопки (обычно ОК) при нажатии на клавишу Enter;
  • • DefaultType (элемент Data) — возвращает и позволяет задать тип источника данных для элемента типа Data;
  • • DragMode — возвращает и позволяет задать значение, определяющее режим выполнения операций Drag&Drop (автоматический или ручной);
  • • DrawMode — возвращает и позволяет задать вид линий для графических элементов и методов;
  • • DrawStyle — возвращает и позволяет задать стиль линий для графических методов;
  • • DrawWidth — определяет толщину линий для графических методов объектов;
  • • Enabled — возвращает и позволяет задать значение, разрешающее или запрещающее объекту реагировать на события, вызванные действиями пользователя;
  • • FileName — возвращает и позволяет задать полное имя файла;
  • • FileNumber — номер файла, присвоенный ему при открытии;
  • • Files — возвращает коллекцию DataObject Files, т. е. список имен файлов, которые используются объектом
  • • FontBold, Fontitalie, FontStrikeThru, FontUnderline — определяют атрибуты и признаки начертания шрифта;
  • • FontSize — определяет размер выбранного шрифта;
  • • Height, width — определят размеры объекта или столбцов сетки;
  • • icon — возвращает значок, появляющийся вместо формы при ее минимизации;
  • • image — возвращает код доступа к результатам работы графических методов, сохранившимся в памяти;
  • • interval — определяет интервал времени (в миллисекундах) между событиями таймера;
  • • KeyPreview — разрешает или запрещает форме перехватывать и предварительно просматривать нажатия клавиш, прежде чем передать их управляющему элементу;
  • • Left, Тор — определяют расстояния между левой и верхней границами объекта и соответствующими границами контейнера;
  • • List — возвращает и позволяет задать содержимое списка, принадлежащего данному управляющему элементу;
  • • Max, Min — определяют соответственно максимальное и минимальное значения свойства Value для полос прокрутки;
  • • MinButton — возвращает и позволяет задать значение, определяющее наличие кнопки минимизации окна в строке заголовка окна формы;
  • • Name — определяет имя объекта;
  • • Path — возвращает полное имя текущего каталога;
  • • Picture — возвращает и позволяет задать значок или точечный рисунок;
  • • Public — определяет, может ли данный управляющий элемент использоваться одновременно несколькими приложениями;
  • • Readonly — разрешает или запрещает модификацию базы данных;
  • • RecordSource — определяет имя физической таблицы либо SQL-выражение или объект QueryDef, который должен служить источником записей для управляющих элементов, связанных с данным элементом Data;
  • • ScaleLeft, ScaleTop — возвращают и позволяют задать координаты левого верхнего угла объекта;
  • • Screen — позволяет управлять положением формы на экране и указателем мыши за пределами формы;
  • • Shape — возвращает и позволяет задать значение, определяющее вид геометрической фигуры;
  • • Size (Font) — возвращает и позволяет задать значение, определяющее размер шрифта;
  • • Style — определяет стиль изображения объекта на экране и особенности его поведения;
  • • Text — возвращает и позволяет задать текст, содержащийся в текстовом или комбинированном поле;
  • • Value — возвращает и позволяет задать значение, соответствующее состоянию поля флажка или позиции переключателя, положению ползунка на полосе прокрутки, содержимому поля в текущей записи или состоянию командной кнопки;
  • • visible — разрешает или запрещает отображение объекта на экране;
  • • XI, yi, Х2, У2 — задают координаты начала и конца линии для управляющего элемента типа Line.

События — сообщения специального вида, создаваемые средой Windows. Отправителем сообщения может быть клавиатура, мышь и др., получателем — окно приложения и управляющий элемент в этом окне, который обладает фокусом. Для того чтобы событие происходило, в коде программы должны быть процедуры его обработки, т. е. обработчики событий.

Основными событиями являются следующие:

  • • Activate — происходит, когда объект становится текущим окном;
  • • Deactivate — происходит, когда объект перестает быть текущим окном;
  • • Change — сигнализирует об изменении содержимого управляющего элемента;
  • • Click — происходит по щелчку мыши, когда указатель мыши находится на управляющем элементе;
  • • DblClick — происходит по двойному щелчку мыши;
  • • DragDrop — происходит при завершении операции перетаскивания;
  • • DragOver — генерируется в процессе операции перетаскивания;
  • • DropDown — происходит перед развертыванием списка в комбинированном поле;
  • • Enter Focus — происходит, когда объект получает фокус клавиатуры;
  • • Error — происходит при возникновении ошибки доступа к данным, для которой не предусмотрена процедура обработки;
  • • ExitFocus — происходит, когда объект теряет фокус клавиатуры;
  • • Got Focus — происходит, когда объект получает фокус клавиатуры вследствие действий пользователя или благодаря вызову метода Set Focus;
  • • initialize — происходит при создании экземпляра формы, MDI-формы, страницы свойств, определяемого пользователем управляющего элемента или класса;
  • • KeyDown — происходит при нажатии клавиши, если объект обладает фокусом клавиатуры;
  • • KeyPress — происходит при нажатии и последующем отпускании клавиши, соответствующей одному из ASCII-сим- волов, если объект обладает фокусом клавиатуры;
  • • KeyUp — происходит при отпускании клавиши, если объект обладает фокусом клавиатуры;
  • • Load — происходит при загрузке формы;
  • • LostFocus — происходит, когда объект теряет фокус клавиатуры из-за действий пользователя или благодаря вызову метода SetFocus другого элемента;
  • • Mouse Down — происходит при нажатии кнопки мыши;
  • • MouseMove — происходит при перемещении мыши;
  • • MousUp — происходит при отпускании кнопки мыши;
  • • Scroll — происходит при перемещении ползунка на полосе прокрутки или элементе, содержащем полосу прокрутки;
  • • Show — происходит при изменении значения свойства visible пользовательского управляющего элемента или документа на True;
  • • Terminate — последнее событие жизненного цикла формы, страницы свойств, MDI-формы, пользовательского управляющего элемента или класса;
  • • Timer — происходит через интервал времени, заданный значением свойства interval управляющего элемента Timer;
  • • Unload — происходит при выгрузке формы и удалении ее с экрана;
  • • Updated — происходит после изменения данных, содержащихся в объекте.

Метод — это процедура или функция класса. Основными являются следующие методы:

  • • Arrange — упорядочивает дочерние окна или их значки в окне материнской MDI-формы;
  • • Circle — предназначен для рисования окружностей, эллипсов, дуг и секторов на рабочей поверхности объекта;
  • • Clear (clipboard, Combobox, ListBox) — удаляет (очищает) содержимое буфера обмена, комбинированного поля или поля списка;
  • • Close (OLE-контейнер) — закрывает объект, содержащийся в OLE-контейнере, и прекращает связь с создавшим его приложением;
  • • Cls — удаляет следы текстового и графического вывода с рабочей поверхности формы или управляющего элемента
  • • Сору — копирует объекты из OLE-контейнера в буфер обмена Windows;
  • • Drag — инициирует, завершает или прерывает операцию перетаскивания объектов;
  • • Files — возвращает список имен файлов, используя при этом формат vbCFiles;
  • • Get Data — получает графические данные из буфера обмена Windows или получает данные типа Variant из объекта типа DataObject;
  • • Get Text — получает текстовые данные из буфера обмена Windows;
  • • Line — рисует линии и прямоугольники на рабочей поверхности формы или управляющего элемента типа
  • • Move — перемещает формы, MDI-формы и управляющие элементы;
  • • PaintPicture — загружает точечный рисунок из файла и выводит его на рабочую поверхность формы, картинки или объекта Printer;
  • • Paste — выполняет операцию вставки объекта в OLE-koh- тейнер из буфера обмена Windows;
  • • PSet — рисует точку заданного цвета в заданных координатах на поверхности объекта;
  • • Refresh — принудительно перерисовывает форму или управляющий элемент в соответствии с его текущим содержимым;
  • • Render — рисует заданную часть рисунка на поверхности заданного объекта;
  • • Scale — задает систему координат для формы, управляющего элемента PictureBox или объекта Printer;
  • • ScaleX, ScaleY — преобразуют значения координат из одной системы в другую;
  • • SellectAll — выделяет все элементы формы;
  • • SetData — помещает графические данные в буфер обмена или в объект DataObject;
  • • SetFocus — помещает фокус клавиатуры на данный объект;
  • • Set Text — помещает в буфер обмена текстовые данные;
  • • Show — отображает на экране форму или М Dl-форму;
  • • Size — изменяет размеры управляющего элемента, определяемого пользователем;
  • • Zorder — определяет способ появления объекта в его контейнере: впереди или позади других объектов.

Контрольные вопросы

  • 1. Что такое объекты Visual Basic?
  • 2. Что определяют свойства?
  • 3. Что задают методы?
  • 4. Что такое события в Visual Basic?
  • 5. Приведите примеры основных объектов, свойств, методов и событий Visual Basic.

Объекты и классы Visual Basic

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

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

В этой статье мы подробно расскажем вам про объекты.

Объекты и классы

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

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

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

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

  1. Определите, из какого класса вы хотите создать объект или определите собственный класс. Например:
Public Class Customer Public Property AccountNumber As Integer End Class 
Dim nextCustomer As Customer 
Dim nextCustomer As New Customer 
nextCustomer.AccountNumber = lastAccountNumber + 1 

Всегда, если это возможно, следует объявлять переменную с типом того класса, который будет в ней храниться. Этот принцип называется раннее связывание. Если во время компиляции тип класса не известен, можно использовать позднее связывание, объявив переменную с типом данных объекта. Но помните, что позднее связывание может снижать производительность и ограничивать доступ к членам объекта во время выполнения. Дополнительные сведения см. в статье Object Variable Declaration (Объявление объектной переменной).

Несколько экземпляров

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

Члены объекта

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

Доступ к членам

Чтобы обратиться к члену объекта, нужно указать имя соответствующей переменной объекта и имя нужного члена, отделив его точкой ( . ). В следующем примере задается свойство Text объекта Label.

warningLabel.Text = "Data not saved" 
Список членов IntelliSense

Технология IntelliSense перечисляет члены класса, когда вы обращаетесь к функции списка членов, например вводите точку ( . ) в контексте доступа к члену. Если точка ставится после имени переменной, объявленной как экземпляр некоторого класса, IntelliSense перечисляет все члены экземпляра, но опускает общие члены. Если точка ставится после имени класса, то IntelliSense перечисляет все общие члены, но опускает члены экземпляра. Дополнительные сведения см. в разделе Using IntelliSense.

Поля и свойства

Поля и свойства представляют сведения, содержащиеся в объекте. Их значения можно задавать и получать с помощью инструкций присваивания, так же как для локальных переменных в процедуре. В следующем примере мы получаем значение свойства Width и устанавливаем значение свойства ForeColor для объекта Label.

Dim warningWidth As Integer = warningLabel.Width warningLabel.ForeColor = System.Drawing.Color.Red 

Поле можно также называть переменная-член.

Процедуры свойств удобно использовать в следующих случаях.

  • Вы хотите контролировать, когда и как значения будут задаваться и извлекаться.
  • Свойство имеет строго определенный набор значений, которые требуется проверять.
  • Изменение значения приводит к существенному изменению состояния объекта (как, например, значение свойства IsVisible ).
  • Изменение значения свойства изменяет другие внутренние переменные или значения других свойств.
  • Перед установкой или получением свойства необходимо выполнить определенный набор действий.

Если выполняются следующие условия, можно использовать поля.

  • Значение имеет тип, для которого существует встроенная проверка. Например, если присвоить переменной типа Boolean любое значение, кроме True или False , создается ошибка или выполняется автоматическое преобразование данных.
  • Допустимым является любое значение из диапазона, поддерживаемого для этого типа данных. Это справедливо для многих свойств с типами Single или Double .
  • Свойство имеет тип данных String и не имеет ограничений на размер или значение строки.
  • Дополнительные сведения см. в статье Property Procedures (Visual Basic) (Процедуры свойств в Visual Basic).

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

Методы

Действие, которое выполняет объект, называется методом. Например, Add — это метод объекта ComboBox, который добавляет новую запись в поле со списком.

В следующем примере иллюстрируется использование метода Start объекта Timer.

Dim safetyTimer As New System.Windows.Forms.Timer safetyTimer.Start() 

По сути метод — это просто процедура, предоставляемая объектом.

Дополнительные сведения см. в разделе Procedures in Visual Basic (Процедуры в Visual Basic).

События

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

Вы можете разработать собственные события, которые будут создаваться и обрабатываться созданными вами объектами. Дополнительные сведения см. в статье Events (Visual Basic) (События в Visual Basic).

Члены экземпляров и общие члены

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

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

Доступ к не общим членам
  1. Убедитесь, что объект уже создан на основе нужного класса и сохранен в объектной переменной.
Dim secondForm As New System.Windows.Forms.Form 
secondForm.Show() 
Доступ к общим членам
  • Следуйте имени класса с помощью оператора доступа к члену ( . ), а затем имени члена. К члену объекта, объявленному с ключевым словом Shared , нужно всегда обращаться напрямую через имя класса.
Console.WriteLine("This computer is called " & Environment.MachineName) 

Различия между классами и модулями

Основное различие между классами и модулями заключается в том, что для классов можно создавать экземпляры в качестве объектов. Модули таким свойством не обладают. Поскольку все данные стандартного модуля существуют только в одной копии, любые изменения общей переменной стандартного модуля, выполненные в любой части программы, будут влиять на все остальные обращения к значению этой переменной. Данные объекта, наоборот, существуют отдельно для каждого созданного экземпляра объекта. Еще одно важное различие состоит в том, что классы могут реализовывать интерфейсы, а модули — нет. Если класс помечен модификатором MustInherit , его нельзя создать напрямую. Однако он по-прежнему отличается от модуля, так как его можно наследовать, пока модули не могут наследоваться.

Если к члену класса применяется модификатор Shared , он устанавливается для класса в целом, а не для конкретного экземпляра класса. Прямой доступ к члену осуществляется через имя класса, так же как и к членам модуля.

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

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

Повторное использование классов и объектов

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

.NET предоставляет множество примеров компонентов, доступных для использования. В следующем примере используется класс TimeZone в пространстве имен System. Члены класса TimeZone позволяют получить сведения о часовом поясе, выбранном на компьютере.

Public Sub ExamineTimeZone() Dim tz As System.TimeZone = System.TimeZone.CurrentTimeZone Dim s As String = "Current time zone is " s &= CStr(tz.GetUtcOffset(Now).Hours) & " hours and " s &= CStr(tz.GetUtcOffset(Now).Minutes) & " minutes " s &= "different from UTC (coordinated universal time)" s &= vbCrLf & "and is currently " If tz.IsDaylightSavingTime(Now) = False Then s &= "not " s &= "on ""summer time""." Console.WriteLine(s) End Sub 

В предыдущем примере первый оператор Dim объявляет переменную объекта типа TimeZone и присваивает ей объект TimeZone, который возвращается свойством CurrentTimeZone.

Отношения между объектами

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

Иерархические связи

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

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

Определение класса, производного от уже существующего класса
  1. С помощью инструкции Class определите класс, из которого вы будете создавать нужный объект.
Public Class ReversibleButton 
Inherits System.Windows.Forms.Button 
Public Class ReversibleButton Inherits System.Windows.Forms.Button Public Sub ReverseColors() Dim saveColor As System.Drawing.Color = Me.BackColor Me.BackColor = Me.ForeColor Me.ForeColor = saveColor End Sub End Class 

Производные классы наследуют члены класса, на котором они основаны, что позволяет постепенно повышать сложность при продвижении по иерархии классов. Дополнительные сведения см. в статье Inheritance Basics (Visual Basic) (Основная информация о наследовании в Visual Basic).

Компиляция кода

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

Отношение вложения

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

Коллекции

В качестве примера объектов-контейнеров можно привести коллекции. Коллекции представляют собой группы однотипных перечисляемых объектов. Visual Basic поддерживает определенный синтаксис в for Each. Следующая инструкция, позволяющая выполнять итерацию элементов коллекции. Кроме того, коллекции часто позволяют использовать свойство Item[] для обращения к элементам по индексу или по уникальной строке. Коллекции иногда проще в использовании, чем массивы, поскольку они позволяют добавлять или удалять элементы без использования индексов. Благодаря простоте использования коллекции часто применяются для хранения форм и элементов управления.

Связанные темы

Основы наследования
Описание модификаторов наследования, переопределения методов и свойств, MyClass и MyBase.

Анонимные типы
Описание создания и использования анонимных типов, которые позволяют создавать объекты без определения класса для типа данных.

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

Практическое руководство. Выведение имен свойств и типов в объявлениях анонимных типов
Обсуждение имен свойств и типов в контексте объявлений анонимных типов. Содержит примеры успешного и неуспешного вывода.

Обратная связь

Были ли сведения на этой странице полезными?

Объекты (Visual Basic)

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

Объекты времени выполнения Visual Basic

Объект времени выполнения Описание
Collection Предлагает удобный способ просматривать связанную группу элементов в виде одного объекта.
Err Содержит сведения об ошибках во время выполнения.
Объект My.Application состоит из следующих классов:

ApplicationBase включает элементы, доступные во всех проектах;

WindowsFormsApplicationBase включает элементы, доступные в приложениях Windows Forms;

См. также

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *