Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Занятие 3. В объектно-ориентированном программировании объект обычно определяется через понятие класс



Понятие объекта

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

Набор доступных классов определяется не языком, а теми библиотеками, которые подключены к вашему приложению, поэтому в каждом приложении (Word, Excel, Access и т.д.) набор классов (и объектов) разный. VBA позволяет создавать свои классы, но эта тема выходит за рамки нашего курса, мы будем использовать только имеющиеся классы.

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

Свойство определяет характеристики объекта или его состояние. Оно имеет имя, тип и значение. В своих программах мы можем использовать свойства так же и там же, где мы используем переменные соответствующих типов. Типы у свойств могут быть как базовыми (integer, double и т.д.), так и классами. Все объекты одного класса имеют одинаковый набор свойств, но у каждого объекта свой собственный экземпляр значений этих свойств. Не существует свойства без объекта, поэтому для доступа к значению свойства в программе нужно указать имя объекта, точку и имя свойства. Если значение свойства в свою очередь является объектом, то можно снова поставить точку и указать свойство этого свойства, и т.д.

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

Отдельные объекты могут быть объединены в коллекции (их также называют семействами). Коллекция – это специальный объект-контейнер, содержащий другие объекты (обычно одного класса). Много коллекций используется в приложениях Microsoft, причем названия класса объекта и коллекции там часто отличаются только окончанием «s». Например, в MS Excel Workbooks – это коллекция объектов класса Workbook (рабочих книг), Worksheets – коллекция объектов класса Worksheet (рабочих листов).

Добавление, удаление и другие операции с элементами коллекции реализуются с помощью методов соответствующих классов. Доступ к конкретному элементу коллекции возможен по номеру или по ключу. Нумерация элементов начинается с единицы. При использовании номера нужно указать имя коллекции и в круглых скобках – номер элемента, например, Worksheets(1). Доступ по ключу возможен в том случае, если при добавлении элемента в коллекцию ключ был задан. Ключ – это строка. В коллекции рабочих листов ключом является имя листа, поэтому мы можем обратиться к нужному листу, например, так: Worksheets("Решение"). В данном случае совершенно не важно, какой номер у этого листа, тем более что номер во время выполнения программы может измениться из-за добавления или удаления листов. Количество элементов в коллекции всегда можно узнать с помощью свойства Count. Это свойство доступно только для чтения.

Основные объекты MS Excel

Объектная модель Excel и других приложений Microsoft Office является иерархической. На нулевом уровне иерархии существует центральный объект, в который встроены другие объекты, составляющие первый уровень иерархии. В каждый из объектов первого и последующих уровней могут быть встроены объекты следующего уровня. Встраивание реализуется с помощью свойств объектов. Свойства могут быть терминальными, не являющимися объектами, и свойствами, которые возвращают объекты при их вызове.

Объектов в этой иерархии очень много. Учитывая, что у каждого объекта, в свою очередь, большое количество свойств, методов и событий, изучать их достаточно сложно. Поэтому мы рассмотрим только основные объекты. На первых порах достаточно использовать Application (Приложение), Workbook (Рабочая книга), Worksheet (Рабочий лист). Много в этой иерархии и коллекций: Workbooks – это коллекция рабочих книг, Worksheets – коллекция рабочих листов, Sheets – коллекция всех листов (рабочих листов и листов диаграмм), Charts – коллекция диаграмм, Range – коллекция ячеек таблицы.

Полное описание свойств, методов и событий каждого объекта можно найти в справочной системе. Для этого в редакторе Visual Basic откройте окно справки, в строке поиска наберите «Application Object Members» (для объекта Application) и перейдите по найденной гиперссылке. Для других объектов вместо Application укажите другое имя.

Объект Application – это главный объект в иерархии объектов Excel. Он представляет само приложение Excel. Через этот объект осуществляется доступ ко всем остальным объектам. На практике чаще всего используются следующие свойства объекта Application: ActiveWorkbook, ActiveWindow, ActiveSheet, ActiveChart, ActiveCell, представляющие активные объекты (рабочая книга, окно, лист, диаграмма, ячейка), Workbooks – коллекция всех рабочих книг, Selection – выделенный объект в активном окне (тип объекта зависит от текущего выделения). Свойства Range и Cells обеспечивают доступ к ячейкам активного рабочего листа. Все эти свойства являются объектами. Полезно также помнить, что метод Quit объекта Application завершает работу Excel.

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

Каждая рабочая книга Excel представляется объектом WorkBook, а их коллекция – объектом Workbooks. Основные методы коллекции Workbooks (Add, Open, Close) позволяют добавить новую книгу в коллекцию, открыть существующую книгу и закрыть все книги коллекции. Указанные методы имеют параметры. Подробнее о параметрах можно прочитать в справочной системе. Проще всего это сделать, вызвав контекстную справку: установите курсор в тексте программы на имени интересующего свойства или метода и нажмите клавишу F1. У объекта WorkBook чаще всего используют свойства Sheets, Charts, WorkSheets (коллекции всех листов рабочей книги, диаграмм, рабочих листов) и методы Save, SaveAs, Close, Activate, предназначенные для сохранения, закрытия и активизации рабочей книги.

Рабочая книга Excel состоит из листов. Совокупность всех листов рабочей книги задается коллекцией Sheets. Основных типов листов в рабочей книге два – WorkSheet и Chart, соответственно имеются две коллекции для каждого типа листов. На практике для этих коллекций чаще всего используется метод Add, добавляющий новый лист в книгу. Метод возвращает созданный объект в качестве результата. Добавленный лист становится активным. Свойство Count у всех коллекций показывает количество элементов в коллекции. Для Sheets оно равно количеству листов.

Основные методы объекта WorkSheet реализуют операции с рабочими листами: Activate активизирует лист, Delete удаляет лист, Copy создает копию листа, Move перемещает лист, Calculate выполняет вычисления формул рабочего листа, Paste помещает содержимое буфера обмена на рабочий лист. Большинство методов имеют параметры, описание которых можно посмотреть в справочной системе.

Свойства Rows, Columns, Range и Cells объектов Application, Worksheet, ActiveSheet предназначены для работы с ячейками рабочего листа. Все они возвращают объект Range, но по-разному определяют эту коллекцию ячеек. Свойство Range удобно в тех случаях, когда для определения ячеек используются адреса: ActiveSheet.Range("A5"), ActiveSheet.Range("A1:D25"). Свойство Cells используется для указания конкретной ячейки с помощью ее номера строки и столбца. Например, ActiveSheet.Cells(5, 1) – это ячейка A5 активного листа. Свойства Rows и Columns – это коллекции, содержащие все строки и столбцы рабочего листа. Для доступа к конкретной строке или столбцу нужно указать его номер: ActiveSheet.Rows(1), ActiveSheet.Columns(2).

Объект Range – это основной объект, с которым приходится работать программисту. Объект является коллекцией ячеек таблицы, которая может содержать как единственную ячейку таблицы, так и столбец или строку, некоторую связную и не связную прямоугольную область, а также объединение и пересечение всех подобных элементов. Для создания объекта чаще всего используются свойства Range, Cells, Rows, Columns, рассмотренные выше. Основные свойства объекта: Value – значение ячейки (свойство по умолчанию, поэтому часто опускается); Text – строка текста, связанного с ячейкой (только для чтения); Formula, FormulaLocal, FormulaR1C1, FormulaR1C1Local – формула в различных форматах; CurrentRegion – возвращает объект Range, в состав которого входит заданный диапазон (границами возвращаемого объекта являются пустые строки и столбцы или границы таблицы); Address – возвращает строку, задающую ссылку на объект Range; Column, Row – возвращают соответственно номер первого столбца или первой строки объекта Range; Font – возвращает объект Font (шрифт).

Объект Range имеет около 80 методов. Все, что вы можете сделать с диапазоном ячеек в Excel, скорее всего, реализовано с помощью метода объекта Range. Например, сортировка – это метод Sort, заполнение диапазона – метод AutoFill, выделение диапазона – метод Select и так далее. Большинство методов имеют параметры. Для изучения методов рекомендуется записать макрос, выполняющий нужную команду, и проанализировать полученный код. Описание методов можно найти в справочной системе Excel.

Работа с объектами

Как мы уже выяснили, объект – это переменная специального типа. Работа с такими переменными в программе похожа на работу с переменными других типов: мы можем их объявлять, присваивать им значения, сравнивать – но в то же время имеет свою специфику. На самом деле объектная переменная хранит ссылку на область памяти, в которой размещена вся информация, относящаяся к объекту. Поэтому любая объектная переменная всегда занимает 4 байта. Это определяется моделью памяти, а не классом. Используя объектную переменную, мы получаем доступ к свойствам, методам и событиям объекта.

Для описания объектной переменной используются обычные инструкции Dim, Public, Private или Static. В качестве типа можно указать Variant, Object или имя класса. Тип Object позволяет создать универсальную ссылку на любой объект. Он используется в том случае, если объектный тип не известен до выполнения процедуры. Например:

Важно понимать, что описание объектной переменной не означает создание объекта. Чтобы переменная ссылалась на объект, объект нужно создать и присвоить эту ссылку в качестве значения переменной.

Присвоение значения объектной переменной выполняется с помощью инструкции Set:

Set Переменная = Выражение | New ИмяКласса | Nothing

Слева от знака равно может стоять, в том числе, имя свойства, если свойство является объектом. Выражение, стоящее справа, может быть именем другой переменной того же типа, функцией, методом или свойством, которые возвращают объект того же типа. Ключевое слово New используется для создания нового экземпляра объекта указанного класса (можно использовать не для всех классов). Присваивание Nothing (пустая ссылка) разрывает связь переменной с объектом. Когда переменная получает значение Nothing, все системные ресурсы и ресурсы памяти, выделенные для объекта, на который имелась ссылка, освобождаются, если никакие другие переменные на него не ссылаются.

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

В качестве примера рассмотрим создание нового рабочего листа (объекта Worksheet). Лист создается с помощью метода Add, который возвращает ссылку на новый лист, и эту ссылку мы присваиваем переменной newSheet1.

Для сравнения объектных переменных используется специальная операция Is (обычную операцию равно использовать нельзя). Если переменные содержат ссылки на один объект, результат имеет значение True, в противном случае результат – False.

В приведенном ниже примере выполняется поиск слова «Образец» в столбце B листа Лист1. В случае обнаружения нужного слова метод Find вернет ссылку на найденную ячейку, в противном случае – пустую ссылку. Результат поиска сохраняется в переменной FC. Так мы можем проверить, чем закончился поиск:

Иногда во время выполнения программы требуется узнать класс объекта, на который ссылается переменная. В этом случае следует использовать операцию TypeOf. Так, например, мы можем проверить тип значения переменной O1:

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

With Объект

[ Инструкции ]





Дата публикования: 2015-10-09; Прочитано: 379 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...