- •Корпоративные информационные системы. Задача интеграции. Корпоративные системы.
- •Модель 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.
Как исп польз события
Рассмотрим пример, демонстрирующий использование пользовательских событий (т.е. определенных в классе). Задача формулируется следующим образом: класс Class1 в качестве элемента отображения использует Image на форме. Щелчок (click) по image должен регистрироваться и некоторым образом обрабатываться в программе-игре, использующей произвольное количество экземпляров класса Class1. Аналогично должно обрабатываться событие «выход за пределы формы».
Описываем класс class1. Он имеет одно свойство im – ссылка на элемент формы, метод move и два события: click и outform.
Public WithEvents im As Image
Public Event click(str)
Public Event outform(ob)
Private Sub Class_Initialize()
Set im = UserForm1.Controls.Add("Forms.Image.1")
im.Width = 10: im.Height = 10
im.Top = Rnd * 400: im.Left = Rnd * 400
End Sub
Событие click сначала «ловит» операционная система, т.к. оно возникает при щелчке по элементу формы. Умалчиваемая обработка состоит в изменении ширины элемента формы на 10 и в регистрации пользовательского события click, причем это событие имеет параметр str, при его регистрации передается строка с шириной элемента управления.
Private Sub im_Click()
im.Width = im.Width + 10
RaiseEvent click(str(im.Width))
End Sub
Метод move проверяет, не вышел ли элемент за пределы формы. И если нет, то изменяет Top координату элемента формы на 5. В противном случае метод регистрирует событие outform. Параметром в обработчик события передается весь объект – экземпляр класса class1.
Public Sub move()
If im.Top > UserForm1.Height Then
RaiseEvent outform(Me)
Else
im.Top = im.Top + 5
End If
End Sub
Теперь, если на форме нам необходим только один экземпляр класса class1 (или некоторое небольшое фиксированное количество), то мы можем описать на уровне формы переменную, указав описатель WithEvents, пусть назовем ее ob1. После этого в окошке объектов мы можем выбрать объект ob1, в окне событий появятся события, генерируемые этим объектом. Для каждого события мы можем описать обработчик.
Private WithEvents ob1 As Class1
Private Sub UserForm_Initialize()
Set ob1 = New Class1
End Sub
Private Sub ob1_click(str As Variant)
MsgBox "ob1:" & str
ob1.move
End Sub
Private Sub ob1_outform(ob As Variant)
MsgBox "ушел"
End Sub
А что делать, если экземпляров класса несколько, а реакция на события одинаковая или, по крайней мере, отличается незначительно? Не описывать же одно и то же несколько раз. Еще хуже, если мы заранее не знаем, сколько нам потребуется экземпляров класса. Выход мы уже находили. Он состоит в том, что надо описать класс, дочерний по отношению к class1, а в нем описать обработчики событий.
Описываем класс class2, имеющий единственное свойство типа class1. При инициализации создаем экземпляр class1. Описываем обработчики событий click (щелчок) и outform (выход за границы формы). По щелчку просто выдаем на экран переданную родительским классом строчку. А при выходе из формы выдает Top координату и изменяем ее на ноль (перемещаем объект вверх!).
Public WithEvents cls As Class1
Private Sub Class_Initialize()
Set cls = New Class1
End Sub
Private Sub cls_click(str As Variant)
MsgBox str
End Sub
Private Sub cls_outform(ob As Variant)
MsgBox ob.im.Top
ob.im.Top = 0
End Sub
На форме располагаем кнопку, щелчок по которой вызывает создание пяти экземпляров класса class2, ссылки на которые добавляются в коллекцию. Затем в бесконечном цикле вызывается метод move.
Public cl As New Collection
Private Sub Button1_Click()
For i = 1 To 5
cl.Add New Class2
Next
Do While True
For Each c1 In cl
c1.cls.move
Next
Start = Timer ' Set start time.
Do While Timer < Start + 1
DoEvents ' Yield to other processes.
Loop
Loop
End Sub
Вы могли убедиться, что обработка пользовательских событий может быть разная для разных экземпляров.
Важно! Приведенный программный код имеет один существенный недостаток: закрытие формы не останавливает работу программы, т.к. не уничтожаются экземпляры класса class2. Улучшите код, добавив недостающие операторы.
