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

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


64: Err.Raise Err.Number, Err.Source, Err.Description,

Err.HelpFile, Err.HelpContext 65:End Sub

66: Public Sub WriteStream( ByVal Str As String )

67: Dim I As Long

68: Dim Buf As Buffer

69: For I = 1 To Len( Str )

70: Buf .S = Mid$ ( Str, I, 1 )

71: Put #FHandle, , Buf

72: Next I

73:End Sub

Анализ

Класс содержит определения всех методов, необходимых для

выполнения операций чтения и записи файловых данных. Класс содержит четыре свойства: Count, FileName, Handle и Position. Handle и Count -это переменные, которые позволяют только чтение, а также предназначены для хранения номера открытого файла и счетчика символов соответственно.

FileName - имя файла, a Position - текущее значение позиции внутри

файла, относительно которой будет выполняться очередная операция чтения или записи данн1х. Property-метод Position позволяет свободно перемещаться внутри файла при считывании/записи информации.

В составе класса определено восемь методов: CheckFile, Class Initialize, Clos-eStream, FileExists, OpenStream, ReadStream, SeekStream и WriteStream. Check-File - это внутренняя процедура, в отсутствие файла открывающая окно сообщения об ошибке. Обработчик Class lnitialize выполняет инипиализапию переменной FHan-dle, предназначенной для хранения номера открытого файла. Метод CloseStream закрывает файл, заданный номером FHandle. FileExists обеспечивает непосредственное выполнение проверки существования файла. Процедура OpenStream, получающая имя файла, сохраняет его во внутренней переменной и открывает файл в режиме Random. Метод ReadStream используется для чтения указанного числа символов, начиная с текущей позиции в файле. Процедура SeekStream дает возможность переместить указатель позиции в файле на заданное число символов относительно текущего положения. Метод WriteStream осуществляет вывод данных в файловый поток.

Применяемые в совокупности, перечисленные выше методы позволяют комплексно решать задачи управления файловым вводом-выводом. Листинг 21.8 демонстрирует пример практического использования класса FileStream.

Листинг 21.8. Пример использования класса FileStream

3 : 4: 5 : 6

Su eStream( )

Dim Stream As New FileStream

Call Stream.OpenStream( Test.txt )

Cal iteStream( Это тестовый пример

Call Stream.CloseStream

Set Stream = Nothing End Sub

I[ Строка 2 листинга 21.8 содержит конструкцию объявления и создания объ-I екта Stream класса FileStream; при этом срабатывает пропедура Class Initialize. При выполнении строки 3 открывается файл с име-не . txt. Команда строки 4 осуществляет запись данных в файл, а в строке 5 файл закрывается. Строка 6 содержит директиву удаления объекта



Stream и освобождение еденного для него фрагмента памяти - если бы в составе класса была реализована процедура то в

этот момент она была бы автоматически вызвана.


Примите к сведению: существует объект ActiveX под названием Scripting. FileSystemObject. Чтобы воспользоваться им в прикладной программе, необходимо переменную и

вызвать функцию CreateObject. Другой вариант - следует добавить

ссылку на библиотеку Microsoft Scripting Runtime Library и создать

экземпляр объекта FileSystemObject с помощью ключевого слова New. Примеры использования объекта Scripting. FileSystemObject вы

найдете в оперативной справочной системе Microsoft Visual Basic, задав в

качестве ключевого слова поиска строку FileSystemObject. Клас tream, рассмотренный в этом разделе, достаточно полезен и эффективен. По существует также и более развитый и гибкий стандартный класс - FileSystemObject. Это весьма удачная

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

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

Тестирование класса

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

Расширение возможностей существующих

классов

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

Глава 22-й час. Совершенствование типов данных содержит примеры расширения набора функциональных средств класса за счет агрегации кода.

Создание экземпляра класса

Приемы построения экземпляров стандартных и пользовательских классов абсолютно одинаковы. Следующая строка кода демонстрирует команду создания объекта Stream класса FileStream: Dim Stream As New FileStream




Процесс создания объекта путем добавления ссылки с применением ключевого слова New называется ранним связыванием (на этапе компиляции). Вызов CreateObject с присвоением значения переменной типа Variant называется динамическим связыванием.

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

Объекты ActiveX требуют применения функции CreateObject с передачей ей строки наименования класса. Листинг 21.9 содержит пример создания ActiveX-объекта Excel. (Предварительно включите библиотеку Microsoft Excel 10.0 Object Library в состав проекта - для этого выберите в строке меню окна редактора VBA команду ToolsOReferences и в одноименном диалоговом окне установите соответствующий флажок.)

Листинг 21.9. Пример создания ActiveX-объекта Excel

Su 1 Instance ( )

Dim Excel As Object Set Excel = CreateObject! Excel.Visible = True Excel.Quit

Set Excel = Nothing End Sub

excel.application )

I[ Строка 2 листинга 21.9 содержит конструкцию объявления объекта с I именем Excel. (Думается, это название достаточно подходяще.) В строке 3 вызывается функция CreateObject, которой в качестве аргумента передается строка с наименованием класса - excel. app.Lication . С помощью выражения строки 4, содержащего обращение к Property-методу Visible, объект отображается на экране, а затем сеанс работы Excel завершается (строка 5) и объект удаляется из памяти (строка 6). Аналогичным образом можно создать в среде прикладной программы экземпляры Word, Outlook и даже Access (!), поскольку функция CreateOb-ject позволяет строить объекты любых серверов OLE Automation.

OLE Automation - одно из достижений протокола Component Object Model (СОМ). Сервер OLE Automation представляет собой программу (построенную в соответствии с требованиями стандарта СОМ), которая может предоставить в общее пользование часть своего интерфейса. Серверы OLE Automation обеспечивают сервис для других программ или используются в качестве самостоятельных приложений. Access 2002 - это полноценный сервер OLE Automation.

Резюме

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



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

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