- •Корпоративные информационные системы. Задача интеграции. Корпоративные системы.
- •Модель 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.
Создание экземпляра класса.
Еще раз повторим все способы создания экземпляра класса (создания объекта).
Наиболее общий способ - применение конструктора New, за которым следует имя класса. Таким образом создаются экземпляры пользовательских классов.
Если вы работаете со встроенной объектной моделью, то часто для создания экземпляра требуется добавить элемент в коллекцию. Таким образом можно добавить лист Excel в коллекцию Sheets, добавить элементы управления на форму (коллекция Controls) и т.п.
Для ActiveX объектов, зарегистрированных в реестре, требуется вызвать CreateObject (или иногда GetObject).
Интересно, что можно воспользоваться и конструктором New для формирования объекта Word из Excel. Рассмотрите пример ниже. Это - программа в Excel, в ней открывается приложение Word, а затем открывается некоторый документ.
Private Sub ww()
Dim w As Word.Application
Set w = New Word.Application
w.Documents.Open "c:\STUDENT\w2.doc"
End Sub
Автоматическая сборка мусора
Сборкой мусора называется процесс, при котором операционная система удаляет из памяти объекты, на которых нет ссылок.
На элементы встроенной объектной модели практически всегда есть ссылка из какой-нибудь коллекции. Поэтому, даже если вы не создаете в программе переменных – ссылок на добавляемые Вами динамически элементы, эти объекты не уничтожаются.
Если же Вы будете создавать два экземпляра своего класса, а для ссылки на них используете одну и ту же переменную, то получите реально только один экземпляр.
Рассмотрим, каким образом происходит динамическое добавление экземпляров пользовательского класса, имеющего свойство – ссылку на динамически добавляемый элемент формы. Пусть в классе описана реакция на некоторое событие, связанное с элементом формы. Если, создавая два экземпляра класса воспользоваться одной объектной переменной, то элементов на форме будет два, но на событие реагировать будет только один (последний), так как первый экземпляр класса будет уничтожен.
Уничтожение экземпляра класса
Достаточно редко предлагает класс среди своих методов метод удаления экземпляра класса. Это понятно, ведь получается, что должен работать метод уже уничтоженного (уже не существующего вместе со всеми своими свойствами и методами!) объекта.
Чаще удалять экземпляры класса (и добавлять) должна некоторая внешняя по отношению к классу программа. В нашем случае можно воспользоваться коллекцией Controls. Метод Add – добавление элементов, а метод Remove – удаление.
Параметр метода Remove – номер элемента коллекции. А как его определить? Рассмотрим способ запоминания в самом объекте, номера, с которым он входит в коллекцию. Для этого можно воспользоваться либо свойством tag, которое есть у всех элементов управления, либо завести соответствующее свойство в нашем классе.
Заметим, что с номерами работать невозможно в случае, если изменяется количество элементов коллекции в результате удаления произвольного элемента или добавления в произвольное мемто.
Может лучше работать с именем? Имя – свойство объекта, поэтому его не надо нигде повторно запоминать! Имя вы можете даже сами генерировать, если Вас не устраивает имя по умолчанию.
Остановимся на имени, причем будем брать умалчиваемое имя.
Ниже описан пример. Итак, в классе с именем Class1:
Public WithEvents im As Image
Private Sub Class_Initialize()
Set Me.im = UserForm1.Controls.Add("Forms.Image.1")
End Sub
В обычном модуле с именем Module1:
Public ob As Class1
Sub игра()
UserForm1.CommandButton1.Caption = "начать"
UserForm1.Show
End Sub
В форме с именем UserForm1:
Private Sub CommandButton1_Click()
If Me.CommandButton1.Caption = " начать" Then
Me.CommandButton1.Caption = "остановить"
Set Module1.ob = New Class1
Else
Me.CommandButton1.Caption = " начать"
Module1.ob.im.Parent.Controls.Remove Module1.ob.im.Name
Set Module1.ob = Nothing
End If
End Sub
В приведенном примере обратите внимание на строчку в инициализации класса, в которой создается элемент на форме и одновременно устанавливается на него ссылка из экземпляра класса. В строчках модуля – вызов формы. В программном коде формы: при щелчке по кнопке «начать» – создается экземпляр нашего класса, а при щелчке по кнопке «остановить» – удаляется элемент управления на форме и экземпляр нашего класса. Здесь важно понять, что от элемента управления можно перейти к форме, воспользовавшись методом Parent (объект – родитель), а затем снова вернуться к нему, но по другой ветке объектного дерева (Controls).
В приведенном примере всюду указан модуль как надобъект над объектной переменной ob. Это не случайно, хотя и не обязательно: по умолчанию свойство ob доступно во всем проекте. Здесь просто подчеркнут факт, что ob является свойством объекта Module1.
