Программирование >>  Проектирование интерфейса пользователя 

1 ... 120 121 122 [ 123 ] 124 125 126 ... 153


Статические члены класса отличаются от остальных и периодом жизни . Обычные свойства и методы доступны только после создания объектов класса и исключительно в контексте последних. Но к статическим членам класса разрешается обращаться и в отсутствие объектов. Листинг 21.6 демонстрирует пример использования статического члена класса.

Листинг 21.6. Пример объявления и использования статического члена класса

1: Static Property Ge ueID( ) As Integer 2: Dim ID As Integer 3: ID = ID + 1 4: Uniqueld = ID 5 : End Property

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

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

Используйте квалификатор Static на уровне свойства, когда требуется, чтобы все переменные свойства были статическими.

Обработчики событий создания и удаления объекта

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

инициализации и удаления объекта. Процедура инициализации обрабатывает событие

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

то чае, если в них содержится какой-либо код. Явно вызывать их не следует.

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

1. Откройте окно редактора Microsoft Visual Basic.

2. Выберите существующий или создайте новый модуль класса.

3. Откройте список Object, расположенный в левой верхней части окна (в нем изначально отображается слово (General)), и выберите элемент Class (рис. 21.1).

4. Откройте список Procedure, находящийся в правой верхней части окна

(см. рис. 21.1), и выберите один из элементов - Initialize или Terminate - в зависимости от того, обработкой какого события, создания объекта либо его удаления вы

намерены заниматься.

В результате выполнения указанной инструкции вы получите пустой шаблон обработчика. Остается самая малость - наполнить его. Процедура Class Initialize - как раз то место, где удобно расположить фрагмент кода, который должен выполняться в момент создания объекта, срабатывать раньше других блоков кода и/или действовать только один раз. Код процедур erminate выполняется в последнюю очередь, непосредственно перед удалением объекта из памяти. Естественно, он также срабатывает один раз.



contacts (contacts)

: K40

Public Fuuctiio IcdsxCfNa-re (ByVal Karee Ал 5trice> InteflnJ

Dim I fts lEtegfer

Гаг 1 ~ 1 finoffJ .Саавс

If (iBStrll, atrtnosd). Non ) > 0} Then iQdezOfifainc - I

Той rahcliJii .. ; --

End 3ub

End ЗиЬ

Cad Sab

Private Sab SaiseError(ByVal Нзо Ra String)

Err.Raise TbCtojeccError + lOCO, -Strings.els-, Hsg

End Sab


Puc. 21.1. Окно редактора Visual Basic позволяет быстро составить шаблоны обработчиков системных событий создания и удаления объектов класса

Названия рассмотренных именованных блоков кода достаточна ачны - процедура удобна для выполнения некоторых операций инициализации, например открытие баз данных или иных файлов; а обработчик class Terminate - как раз то место, где имеет смысл располагать директивы закрытия баз данных, файлов и т.п. Пример использования процедуры Class Initialize содержится в листинге 21.7, приведенном в следующем разделе.

Создание нового класса

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

Листинг 21.7. Класс, реализующий операции файлового потокового ввода-вывода

streaming class

Option Compare Database

FileStream.Bas Defines a file-management

Copyright © 1999. All Rights Reserved. By Software Conceptions, Inc.

Written by Paul Kimmel, Okemos, MI USA 800-471-5890

Option Explicit



7: Private FFileName As String 8: Private FHandle As Double 9: Private Type Buffer 10: S As String 11:End Type

12:Public Property Get Count( ) As Long

13: Count = FileLen( FileName ) 14:End Property

15:Public Property Get FileName( ) As String 16: FileName = FFileName 17:End Property

18:Public Property Let FileName( ByVal Value As String ) 19: FFileName = Value 20:End Property

21:Public Property Get Handle( ) As Double 22: Handle = FHandle 23:End Property

24:Public Property Get Position( ) As Long

25: Position = Seek( FHandle ) 26:End Property

27:Public Property Let Position( ByVal Value As Long ) 28: Call SeekStream( Value ) 29:End Property

30: Private Sub CheckFile( ByVal FileName As String )

31: If (FiieFxists ( FileName ) = False) Then

32: Err.Raise 1, Me, Invalid filename & FileName

33: End If

34:End Sub

35:Private Sub Class Initialize { )

36: FHandle = 0 37:End Sub

38:Public Sub CloseStream( ) 39: Close #FHandle 40: FHandle = 0 41:End Sub

42:Private Function FileExists(ByVal FileName As String) As Boolean

43: FileExists = Len( Dir( FileName ) ) > 0 44:End Function

45:Public Sub OpenStream( ByVal FileName As String ) 46: FFileName = FileName 47: FHandle = FreeFile

48: Open FileName For Random As #FHandle Len = 1 49: End Sub

50:Public Sub ReadStream(ByVal Str As String, ByVal Length As Long)

51: Dim I As Integer

52: Dim Buf As Buffer

53: For I = 1 To Length

54: Get #FHandle, , Buf

55: Str = Str + Buf.S

56: Next I

57:End Sub

58:Public Sub SeekStream( ByVal Length As Long ) 59: On Error GoTo EXCEPT 60: Seek #FHandle, Length 61: Exit Sub 62: EXCEPT:

63: If (Length = 0) Then Resume Next



1 ... 120 121 122 [ 123 ] 124 125 126 ... 153

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика