Смекни!
smekni.com

Программирование в LE-технология Microsoft Windows (стр. 1 из 3)

Предисловие

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

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

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

Впервые идеи ООП были реализованы в середине 60-х годов в языке программирования Симула-67. Последний, однако, не нашел в то время широкого распространения как в силу своей относительно меньшей производительности по сравнению с традиционными языками типа FORTRAN, ALGOL, PL/1 так и, возможно, неадекватности предлагаемых средств решаемым в то время задачи. Еще одним важным ограничением для распространеия Симулы-67 стали трудности, с которыми пришлось столкнуться большинству программистов при его изучении. Дело в том, что наряду с целым рядом безусловных достоинств, идеи ООП обладают и одним существенным недостатком - они далеко не просты для понимания и особенно для освоения с целью практического использования.

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

Но не менее важным является то, что такой распространенный и универсальный язык, как С, сохранен в качестве основы. С прост, эффективен, переносим. Чего только нет в языке С: строковых данных нет, матриц нет, средств параллельного программирования тоже нет. Нет даже ввода-вывода.

Типы, операции и операторы С очень близки к тому, с чем мы имеем дело в Ассемблере,- числа, адреса, арифметические и логические действия, циклы... Кроме того, многие особенности С недвусмысленно намекаю компилятору, как сократить код и время исполнения программы. Эти характерные черты языка С позволяют написать эффективно работающий и не слишком сложный компилятор. И хотя в машинных кодах на разных компьютерах элементарные операции обозначаютс по-разному, вряд ли разработчику компилятора придет в голову интерпретировать простейшие выражения каким-нибудь оригинальным способом. Именно поэтому язык С "идет везде и на всем", программы, написанные на нем, работают эффективно, и их можно переносить с одного компьютера на другой.

MSWindows и новый метод разработки программ.

Одним из наиболее важных механизмов взаимодействия программ является обмен данными. В MSWindows существует несколько способов взаимодействия приложений:

- почтовый ящик;

- динамический обмен данными;

- встраивание объектов.

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

В отличие от профессиональных операциональных операционных систем, где механизм обмена данными между программами доступен только программисту, в Windows это делается очень просто и наглядно для пользователя.

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

- Встроенная объектная связь, который позволяет переносить из одного приложения в другое разнородные данные. Например, с помощью этого механизма данные, подготовленные в системе TimeLineforWindows (Symantec), можно переносить в текстовый процессор JustWrite ( Symantec ), а затем, скажем, в генератор приложений ObjectVision (Borland). Правда, это уже нестандартное средство MicrosoftWindows, но тем не менее реализация OLE стала возможной именно в Windows.

Кроме механизма почтового ящика, предназначенного, в основном, для пользователя, программисту в Windows доступны специальные средства обмена данными между приложениями.

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

Основные термины

Клиентское приложение DDE - приложение, которому необходимо установить диалог с сервером и получить данные от сервера в процессе диалога.

DDE-диалог - взаимосвязь между клиентским и серверным приложениями.

Сервер-приложение - DDE приложение, которое передает данные клиенту в процессе диалога.

DDE-Транзакция -обмен сообщениями или данными между клиентом и сервером.

Item имя - строка, идентифицирующая некоторое множество данных, которое сервер в состоянии передать клиенту в процессе диалога.

Service имя - строка, генерируемая сервером и используемая клиентом для установления диалога.

Строковый указатель - двойное слово, генерируемое операционной системой, идентифицирующее строку, передающуюся в процессе динамического обмена данными.

Topic имя - строка, которая идентифицирует тип данных, необходимых клиентскому приложению при динамическом обмене данных.

Фильтр транзакции - флаг, который препятствует передаче нежелательных типов транзакций в функцию обратного вызова.

В MicrosoftWindows динамический обмен данных является формой связи, которая использует общие области памяти для обмена данными между приложениями. Приложение может использовать DDE в некоторый момент времени для передачи и получения новых данных от сервера.

Механизм DDE схож с механизмом почтового ящика, который является частью операционной системы WINDOWS. Существует лишь незначительная разница в том, что почтовый ящик, в большинстве случае, используется как буфер временного хранения информации. DDE может быть инициализирован пользователем и в большинстве случаев

продолжать работать без его вмешательства.

Библиотека DDEML обеспечивает пользователя набором средств, которые упрощают использование механизма DDE в WINDOWS приложениях. Вместо того, чтобы обрабатывать, получать и передавать DDE сообщения напрямую, приложения используют функции DDEML библиотеки. Библиотека DDEML также обеспечивает работу со строками и разделяемыми данными, генерируемыми DDE приложениями. Вместо того, чтобы использовать указатели на общие области памяти, DDE приложения создают и обмениваются строковыми указателями, которые идентифицируют строки и данные.

Уже существующие приложения, использующие протокол DDE, основанный на сообщениях полностью совместимы с теми, которые используют библиотеку DDEML. Вот почему приложение, использующее DDE-протокол могут установить диалог и выполнять транзакции с приложениями, использующими библиотеку DDEML.

Взаимосвязь между клиентом и сервером.

DDE возникает всегда между клиентским приложением и серверным. Клиентское приложение инициализирует обмен данными путем установления диалога с сервером и передачи транзакции. Транзакция необходима для данных и обслуживания. Сервер отвечает на транзакцию и обеспечивает клиента данными. Сервер может иметь сразу несколько клиентов в одно и тоже время, в свою очередь, клиент может получать данные сразу от нескольких серверов. Некоторое приложение одновременно может быть и клиентом и сервером. В добавок к вышесказанному, клиент и сервер могут оборвать диалог в любое удобное для них время.

DDE сервер использует три зарезервированных типа имен, расположенных иерархично: service, topicitem - уникально идентифицируют некоторое множество данных, которое сервер может передать клиенту в процессе диалога.

Service имя - это строка, которую генерирует сервер в те промежутки времени, в которые клиент может установить диалог с сервером.

Topic имя - это строка, которая идентифицирует логический контекст данных. Для сервера, который манипулирует файлами, topic имена это просто названия файлов; для других серверов – это специфические имена конкретного приложения. Клиент обязательно должен указывать topic имя вместе с service именем, когда он хочет установить диалог с сервером.

Item имя - это строка, которая идентифицирует некоторое множество данных, которое сервер может передать клиенту в процессе транзакции. Например, item имя может идентифицировать ЦЕЛОЕ ( int, integer ), СТРОКУ ( string, char * ), несколько параграфов текста, или BITMAP образ.

Все вышеуказанные имена позволяют клиенту установить диалог с сервером и получить от него данные.

Системный режим

Системный режим работы обеспечивает клиента всей необходимой информацией о сервере.