- •Корпоративные информационные системы. Задача интеграции. Корпоративные системы.
- •Модель osi – набор стандартов для построения корпоративной системы
- •Интегрированные и комплексные приложения
- •Задача: общие данные, общие процедур, общие вычислительные ресурсы.
- •Проблемы на пути интеграции
- •Прозрачность. Открытость. Масштабируемость. Концепции аппаратных решений. Определение распределенной системы. Прозрачность.
- •Открытость.
- •Масштабируемость.
- •Raid-технологии.
- •Параллелизм.
- •Концепции аппаратных решений. Мультипроцессоры.
- •Гетерогенные мультикомпьютерные системы.
- •Симметричное мультипроцессирование
- •Кластеры.
- •Двухуровневые, трехуровневые, распределенные одноранговые информационные системы. Виды ис
- •Функциональная нагрузка компонентов в ис
- •Двухуровневые архитектуры
- •Трехуровневые архитектуры
- •Распределенные одноранговые архитектуры
- •Единое информационное пространство. Подход к построению объектно-ориентированной одноранговой информационной системе.
- •Архитектура взаимодействия компонент распределенной ис
- •Обзор методов интеграции. Введение
- •Пути устранения аппаратных различий, кросс – платформенные приложения.
- •Java applets, апплеты.
- •Файлы (буферы) общего доступа.
- •Единый язык доступа к данным (sql).
- •Обмен сообщениями (dde).
- •Удаленный вызов процедур (rpc)
- •Вставка и внедрение объектов
- •Ole (связывание и внедрение объектов), ole Automation.
- •Классификация приложений по отношению к технологии ole (com).
- •ActiveX объекты.
- •Идентификация com объектов.
- •Сравнение com (ActiveX) объектов и java апплетов.
- •Доступ к удаленным объектам (dcom, .Net, corba)
- •Использование командных файлов и скриптов
- •Доступ к базам данных (ado, dao, odbc)
- •Применение web-технологий
- •Именованные каналы
- •Объектно-ориентированное программирование в vba Среда программирования. Типы данных. Процедуры. Окно проекта, окно свойств, окно кода, окно немедленно выполняемых команд, окно контрольных значений.
- •Процедуры, функции, передача параметров, область видимости.
- •Типы данных.
- •Вызов макроса с вычисляемым именем
- •Запуск макроса в заданное время
- •Запуск внешней программы, управление ею
- •Вызов api-функций и других библиотечных функций
- •Программное изменение кода.
- •Динамические массивы
- •Объектно-ориентированное программирование Базовые понятия ооп
- •Расширение объектной модели
- •Коллекция
- •Раннее и позднее связывание
- •Дополнительные элементы управления (ActiveX –объекты)
- •Описание программирования в vba, модели com Доступ к вставленным в документ ole-объектам
- •Доступ к внешним com-серверам
- •Вычисляемые свойства, свойства только для чтения.
- •События. Обработчики событий.
- •Использование событий объекта Application
- •Использование диалогов
- •Свойство для программиста.
- •Пользовательские классы. Классы.
- •Класс, объекты которого реагируют на события.
- •Моделирование наследования. Фактическое наследование. WithEvents.
- •Пользовательские события.
- •Как исп польз события
- •Создание экземпляра класса.
- •Автоматическая сборка мусора
- •Уничтожение экземпляра класса
- •???Интерфейсы.
- •???Интеграция при помощи промежуточного буфера
- •Обмен сообщениями. Протокол dde.
- •Задачи интеграции и децентрализации.
- •Фрагментация данных и размещение
- •Язык доступа к данным sql Стандартные команды
- •Язык запросов
- •Изменение данных при помощи sql
- •Изменение структуры базы данных при помощи ddl
- •Выполнение команд изменения структуры, изменения базы данных
- •Расширения Jet 4.0 ansi-92
- •Доступ к базам данных.
- •Доступ к базам данных с помощью odbc.
- •Доступ через odbc из Delpi7.
- •Доступ к базам данных с помощью технологий ado. Соединение, курсор
- •Свойства и методы набора записей (курсора).
- •Вызов отчетов, сформированных в базе данных
- •Пример dao
- •???Доступ к базам данных с помощью технологий dao.
- •???Доступ к базам данных с помощью web технологий.
- •Удаленный вызов процедур.
- •Обращение к удаленным объектам. Привязка клиента к объекту. Статическое и динамическое удаленное обращение к методам. Передача параметров. Dce, rmi.
- •Распределенная система объектов corba. Введение.
- •Архитектура системы.
- •Структура связей corba.
- •Исключения corba.
- •Передача параметров.
- •Corba-объекты и серванты.
- •Отображение idl на языки программирования
- •Объектные адаптеры.
- •Транзакции и сервис транзакций в corba.
- •Обзор технологий dcom, .Net Определение
- •Немного истории
- •Решение .Net
- •Модель .Net
- •Обзор двоичных файлов .Net.
Динамические массивы
При описании массива не всегда можно заранее, на стадии написании программы, знать, сколько элементов будет в массиве. Например, это выбирает пользователь. Или количество элементов определяется файлом-источником и т.п. С другой стороны некоторые вычислительные методы могут в процессе расчетов уменьшать количество «рабочих» элементов, при этом хотелось бы освобождать не нужную память.
Для реализации всего вышеизложенного нам поможет инструкция ReDim. Сначала может быть описан динамический массив, например, так:
Dim имямассива () [As type]
Обратите внимание на то, что указывается имя массива и не обязательно указывается тип элементов, но не указывается количество элементов. В дальнейшем можно уточнить описание этого массива, задав количество элементов. Синтаксис инструкции:
ReDim имямассива (границы) [As type]
Ключевое место в этой инструкции – описание границ изменения индексов. Это описание выглядит следующим образом:
[нижняяграница to] верхняяграница, [нижняяграница to] верхняяграница, …
Для каждого индекса можно задать начальное и конечное значение. Если не задавать начальное, то оно определяется по умолчанию (указано в настройках) либо задается при помощи инструкции Option Base.
Option base 1 'установка нижней границы индексов по умолчанию = 1.
Dim Lower
Dim MyArray(20), TwoDArray(3, 4)
Dim ZeroArray(0 To 5) ' здесь явно указаноа нижняя граница индекса.
Lower = LBound(MyArray) ' функция возвращает значение нижней границы массива =1
Lower = LBound(TwoDArray, 2) ' вернет 1.
Lower = LBound(ZeroArray) ' вернет 0.
Можно переописывать массив неоднократно.
ReDim [Preserve] имямассива (границы) [As type]
Здесь важно, что можно изменять границы индексов. Но самое интересное это то, что можно потребовать сохранить все значения в «старых» элементах (Preserve). При применении слова Preserve можно изменять только последнюю размерность.
ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)
Еще один важный момент: память, выделенная под статический массив, то есть массив, количество элементов которого задано в инструкции Dim, освобождается только по завершению процедуры или функции, в которой этот массив описан. Если массив описан на уровне модуля, то память, занятая им, освобождается по закрытию документа. Такая расточительность кажется неприемлемой. Для динамических массивов есть замечательная инструкция Erase, которая освобождает память, занятую массивом.
Объектно-ориентированное программирование Базовые понятия ооп
С точки зрения объектно – ориентированного программирования (ООП) объект – это сущность, обладающая свойствами, то есть поименованными значениями, которые можно прочитать и/или записать, и методами, то есть процедурами и функциями, изменяющими значения свойств и/или имеющими некоторый внешний эффект. Следует отметить, что достаточно часто стирается грань между свойствами и методами. Это объясняется в частности требованием инкапсуляции. Разработчик может хранить некоторое значение или вычислять его при каждом обращении, но для пользователя это незаметно. Не удается скрыть разницу между методом и свойством в том случае, когда требуется передать методу параметры.
Необходимо различать класс, то есть тип объектов и реализацию класса, то есть собственно объект. Описать объект, значит описать класс (тип). Создать объект, значит создать экземпляр заданного типа.
Базовые понятия ООП – инкапсуляция, наследование и полиморфизм.
Инкапсуляция предполагает, что для применения класса объектов достаточно знать его интерфейс (описание внешних свойств и методов), никакие особенности реализации объекта не должны влиять на его использование.
Полиморфизм предполагает, что некоторые одинаковые, с точки зрения пользователя класса объектов, свойства и методы имеют одинаковые имена, хотя могут различаться реализацией.
Между классами объектов могут быть два отношения: is-a "это есть", is-a-part "это есть часть". Наследование – предполагает, что свойства родительских объектов наследуются дочерними объектами, связанными по отношению "это есть". Это свойство очень важно, так как помогает существенно сократить список свойств, определяющих один объект (экземпляр).
В VBA реализовано отношение "это есть часть", наследования почти нет. Мы употребили странное определение "почти", так как, не смотря на заявление о том, что наследование не поддерживается, реально трудно было без него обойтись, поэтому оно есть, например кнопка (класс CommandButton) наследует свойства элемента управления (класса Сontrol). Объектные модели, представленные в справочнике по VBA – модель объектов согласно иерархии "это есть часть".
Обращение к объектам и свойствам обычное (через точку): имя_объекта.имя_свойства.
Спуск по объектной модели – дорогая (по затрачиваемому времени и занимаемой памяти) операция. Есть способ зафиксировать верхнюю часть объекта с помощью конструкции "With … End With" и тем самым избавиться от спуска, то есть ускорить работу программы. Кроме того, этот способ позволяет увеличить наглядность программного кода.
Пример:
Исходный текст:
UserForm1.Controls(i).width = UserForm1.Controls(i).width+20
UserForm1.Controls(i).height = UserForm1.Controls(i).height+10
Лучше написать так:
With UserForm1.Controls(i)
.width =.width+20
.height = .height+10
end with
