Реферат: Контроллер связываемых объектов - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Контроллер связываемых объектов

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 3540 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

Разработка программы контроллера автоматически связываемых объектов для управления конструкторской документацией в среде Windows 95/ NT . АННОТАЦИЯ В данной дипломной работе осуществлена разработка программного продукта , для среды операционной системы Windows 95/ NT , обеспечивающего создание , изменение и выполнение функций автоматически связываемых объектов систем автоматизированного проектирования или любых других пакетов прикладных и системных программ поддерживающих механизм связывания и внедрения . Разработанный программный продукт позволяет объединять функции автоматич ески связываемых объектов систем проектирования в один проект с файлами данных этих систем проектирования , таким образом являясь интеграционным звеном между различными программными продуктами. В настоящее время на фоне всеобщей компьютеризации всех произв одственных , торговых и бытовых отраслей с одновременным увеличением конкуренции на компьютерном рынке , в связи с ускорением разработок все более новых технологий производства вычислительной техники , все большее значение приобретает разработка и производств о конкурентоспособной вычислительной техники . Сегодня это становится возможным только при использовании современных средств проектирования электронных вычислительных средств (ЭВС ) . Современные средства конструирования невозможно представить себе без компью терных средств проектирования . Компьютеры имеют большой потенциал в области проектирования ЭВС . Компьютерные средства проектирования , кроме непосредственно компьютерного оборудования , включают в себя программное обеспечение . На нынешнем этапе развития пр ограммного обеспечения систем проектирования , имеется много разработок систем автоматизации проектирования . Рынок программного обеспечения насыщен большим количеством разнообразных пакетов прикладных программ включающих в себя различные инструментальные ср едства , позволяющие во многом упростить работу конструктора ЭВА . Сейчас у нас в стране и за рубежом наиболее распространены такие пакеты программного обеспечения , как PCAD , AutoCAD , MicroCAPS , Pspice , MathCad и другие . Эти программные средства позволяют ав томатизировать сложные и однообразные процессы присутствующие на многих этапах проектирования ЭВА . Например , различного рода математические расчеты всевозможной сложности , логическое моделирование схем , разработка топологии микросхем , разводка печатного мо нтажа печатной платы , создание готовых конструкторских документов высокого качества и т . д . Рост популярности автоматизированных систем проектирования возник во многом благодаря улучшению пользовательского интерфейса программного обеспечения в целом и сис тем проектирования в частности . За последние несколько лет у разработчиков программного обеспечения все большие симпатии вызывает платформа Windows для создания высоко качественных программных продуктов предоставляющих пользователю наиболее удобный для вос приятия интерфейс . Удобство интерфейса Windows обусловлено высокими требованиями с эргономической точки зрения предъявленному создателями Windows к своей операционной системе . Свою систему Windows фирма Microsoft создала для платформы IBM , не случайно . Над о отметить значительную популярность в мире компьютеров совместимых с IBM AT . Ставшей в наше время своеобразным мировым эталоном сочетания качества и низкой цены . Более половины компьютерного рынка принадлежит компьютерам совместимым с IBM AT . Однако , люб ой пакет программ не может обеспечить полную универсальность своей системы , но это собственно не к чему . Любое программное обеспечение , благодаря своей специфичности в той или иной области автоматизации проектирования , позволяет получить максимальную эффек тивность конкретно в своей области . Но , последнее время наметилась тенденция к интеграции программного обеспечения на базе так называемых автоматически связываемых объектов . Этот термин на самом деле означает не интеграцию программ в прямом смысле , а лишь ее эмуляцию . Тем не менее , для конечного пользователя это выглядит как полная интеграция программного обеспечения различных направлений и различных фирм разработчиков программного обеспечения . Идея заключается в том , что любое приложение для Windows , обесп ечивающее OLE Automation ( Objekt Linking and Embedding Automation - автоматическое связывание и внедрение объектов ) , может управляться извне другими приложениями , которые пользуются им основываясь на предоставленных приложением программных интерфейсах и та ким образом выполнять те же функции , что и приложение прародитель функций . Задачей данной дипломной работы является разработка универсальной среды проектирования . Для интеграции систем проектирования и позволяющей создавать составной документ , который мо жет включать в себя все виды документов обрабатываемых инсталлированными в данную систему приложениями обеспечивающих OLE Automation , и максимальную эмуляцию OLE Automation для всех остальных приложений . А также выполнять любые функции OLE Automation зарег истрированные приложениями . 1. АНАЛИЗ ТЕХНИЧЕСКОГО ЗАДАНИЯ 1 .1. Выбор и обоснование операционной системы 1.1.1. Графические операционные системы Наиболее распространенной средой программных продуктов в настоящее время по праву является Windows , разрабо танная корпорацией Microsoft в расчете на самый широкий круг пользователей . Windows предлагает пользователю оконный интерфейс , в котором каждой выполняемой программе отводится экранное окно которое может занимать часть экрана или весь экран . Программы , сп ециально спроектированные для таких оконных сред , могут пользоваться всеми их преимуществами . Вид пользовательского экрана с перекрывающимися окнами различных прикладных программ достаточно наглядно демонстрируют возможности среды по одновременному использ ованию нескольких программ и передаче данных между ними (рис . 1.1). Пользователь работает с приложением , находящимся самом “верхнем” окне , но простым щелчком мыши на другом окне он может активизировать другую программу . Кроме того , уже в своих ранних верси ях Windows позволяла копировать информацию из окна одной программы в окно другой программы при помощи средства clipboard - буфера обмена . Графический режим Windows , как и графический режим любой другой графической операционной среды ( Windows N Т,О S/2, Soleras , Motif ) имеет мало общего с знакоместным графическим режимом , доступным во многих программах для М S- D О S , всегда размещающих на экране стандартное количество символов , например 8О x 25 или 80x43. Windows (а следовательно , и любая Windows -программа ) позиционирует графические объекты с точностью до пикселя . Размеры таких объектов Windows , как элементы окон , кнопки и значки стандартизованы . Для отображения системных сообщений и наименований команд меню Windows применяет соответствующие растровые (матр ичные ) шрифты , имеющие различные типоразмеры для работы в режимах низкого и высокого разрешения . Для подготовки документов , содержащих текст , Windows позволяет использовать масштабируемые шрифты , применяемые как для экранного вывода , так и для распечатки п а принтере . Благодаря этому в процессе подготовки документа можно видеть на экране практически то же , что будет получено на бумаге . Графическая подсистема Windows использует универсальные методы обращения к любым графическим устройствам вывода , будь то в идеосистема Е GА или super VGA , лазерный принтер или автомат для вывода типографских форм . Стандартизован интерфейс Windows , конечно , не с самими дисплеем и принтером , а с драйверами этих устройств , причем драйверов в комплект поставки системы Windows входи т великое множество . Выпуск графической операционной оболочки Microsoft Windows 3.0 стал главным событием 1990 года на программном рынке , затмившим одновременное появление IBM OS /2 1.3. Кроме приятного пользовательского интерфейса среда Windows предостав ляла значительный комплекс услуг . С системой поставлялось большое количество драйверов для самых разных моделей устройств ввода-вывода , таких как видеоадаптеры и принтеры . Широчайшая аппаратная совместимость была одним из факторов успеха Windows . Комплек т Windows 3.0 содержал несколько вариантов драйверов для разных моделей клавиатур , мышей и видеоадаптеров и большое количество драйверов принтеров . В Multimedia для Windows 3.0, а затем в Windows 3.1 появились драйверы звуковых карт , М I DI устройств и синте заторов . Количество наименований поддерживаемых устройств быстро росло ... 1.1.2. Windows 3.Х С точки зрения массового пользователя , не избалованного OS/2, Windows 3.0 была действительно передовой средой . Она использовала весь объем памяти , адресуем ой микропроцессорами 80286 , 80386 и выше . С 32-разрядными микропроцессорами (80386 и выше ) и при наличии не менее 2 Мбайт памяти Windows 3.0 могла использовать виртуальную память , то есть работать с некоторым пространством на жестком диске как с продолжени ем оперативной памяти компьютера , размещая в нем данные и код программ . Windows имела многозадачные возможности с кооперативным использованием процессорного времени “одновременно” работающими приложениями . Кооперативную многозадачность можно назвать мно гозадачностью “второй ступени ” поскольку она использует более передовые методы , чем .простое переключение задач , реализованное многими известными программами (например , М S -DOS shell из М S - DOS 5.0 при простом переключении активная программа получает все про цессорное время , а фоновые приложения полностью замораживаются . При кооперативной многозадачности приложение может захватить фактически столько процессорного времени , сколько оно считает нужным . Все приложения делят процессорное время , периодически опраши в ая друг друга . С другой стороны , режим кооперативной многозадачности менее совершенен , чем режим разделения времени , называемый также вытесняющей многозадачностью . При вытесняющей многозадачности программы потребляют ровно столько процессорного времени , сколько им положено , а не сколько заблагорассудится . За выделение процессорного времени тому или иному приложению отвечает только операционная система , руководствуясь текущими приоритетами . Благодаря этому при вытесняющей многозадачности можно в любой мом е нт переключиться на любой процесс , в отличие от кооперативной многозадачности , при которой для переключения между программами может потребоваться существенная пауза . При вытесняющей многозадачности кажется , что процессы действительно работают одновременно, хотя это на самом деле и не так , - во всяком случае , на компьютере с одним микропроцессором , каким является обычный I ВМ РС . С апреля 1992 года Windows 3.1 официально именуется операционной системой . Интерфейс ее был несколько улучшен , в частности были у силены возможности управления экранными объектами мышью ( Drag - and - drop метод перетаскивания ). Windows стала непосредственно поддерживать динамический обмен данными между приложениями (DDЕ - Dynamic Data Exchange ). В систему вошли средства мультимедиа, ранее поставлявшиеся отдельно в пакете Windows Multimedia Extension . Для расширения издательских возможностей в Windows была встроена поддержка системы масштабирования шрифтов TrueType . Windows 3.11 for Workgroups (“для рабочих групп” ) позиционировалась как самостоятельная сетевая операционная система для одно-ранговой локальной сети , а также как сетевой клиент для сервера Windows N Т . В остальном Windows 3.11 для рабочих групп являлась слегка улучшенной модификацией Windows 3.1, работающей только в 386-м Расширенном режиме на 32-разрядных микропроцессорах . А теперь мы постараемся разобраться в том , как устроена Windows . Режимы работы Windows 3 . X Чтобы запустить мотор Windows на полную мощность , конечно , нужны прежде всего мегабайты и мегабайты операти вной памяти . Но их невозможно использовать на микропроцессорах 8088/86. Не слишком удачным решением был и защищенный режим 80286: для того чтобы использовать на компьютере приложения для новой операционной среды вместе с М S - DOS приложениями , приходилось пе реключать микропроцессор из защищенного режима в реальный и обратно . Здесь уместно вспомнить о том , что фирма Microsoft весьма тесно сотрудничала с Intel во время разработки микропроцессора i 80386. Microsoft фактически навязала инженерам Intel собственну ю концепцию режима виртуального микропроцессора 8086- V 86, наиболее удобную для разработки операционной системы , использующей М S - DOS приложения вместе с программами защищенного режима . Поскольку в 1990 году рынок еще не был готов к полному переходу на опера ционную систему для микропроцессора 80386, Windows 3.О могла функционировать в трех режимах , в каждом из которых микропроцессор и память использовались по-разному . В реальном режиме работы Windows система функционировать даже на компьютере с микропроцесс ором 8088 или 8086, оборудованном только обычной памятью для работы приложений в реальном режиме Windows 3.0 использовалась только обычная память М S - DOS и отображаемая память . Стандартный режим Windows 3.0 требовал для работы микропроцессор 80286 и всего 1 Мбайт памяти - 640 Кбайт стандартной и 384 Кбайт дополнительной (настоящая работа начиналась при объеме памяти 4 Мбайт ). Для приложений Windows использовалась расширенная память (ХМ S ). Для программ М S - DOS , загружаемых из-под Windows , применялась обычная память и переключение микропроцессора из защищенного режима в реальный. Более полно использовал аппаратные ресурсы 386-й Расширенный режим Windows . В этом режиме версии Windows 3.0 и 3.1 работали с виртуальной памятью , имевший примерно втрое больший объ ем , чем физическая оперативная память . Приложениям М S DOS в 386-м Расширенном режиме отводилась произвольная область памяти , которая в виртуальном режиме 8086 размечалась как обычная память MS DOS . По умолчанию М S - DOS программы загружались занимая , как об ычно , весь экран , но могли быть переведены в графическое окно - стандартное окно Windows . Приложения М S - DOS , запущенное из-под Windows в 386-м Расширенном режиме , работало в виртуальной машине , иными словами , считало себя загруженным на своем собственном к омпьютере и знать не знало о существовании Windows . Разумеется , для работы в 386-м Расширенном режиме требовался компьютер с микропроцессором не ниже 80386. Объявленные требования к объему памяти (2 Мбайт ) опять-таки не стоило принимать всерьез . Минимумо м являлись 4 Мбайт памяти , а для более или менее серьезной работы требовались 8 M байт или больше . Структура ядра Windows . Способ , при помощи которого одна и та же система может работать в трех принципиально разных режимах , ориентированных на совершенно р азные микропроцессоры , заключается в следующем . Ядро Windows состоит из трех компонентов Kernel , User и GDI . При помощи дополнительных DLL -файлов (динамически загружаемых библиотек ) поддерживаются отображением стандартных диалоговых окон , протоколы DD Е ( динамического связывания данных ) и О L Е (связывания и встраивания объектов ), взаимодействие с драйверами устройств ввода-вывода и другие черты Windows . Windows -драйверы устройств бывают , кстати , двух видов - “обычные” DLL -драйверы и 3 86 драйверы , последние предназначены опять-таки для работы только в 386-м Расширенном режиме Windows . Наиболее низкоуровневой частью ядра Windows является модуль Kernel , управляющий распределением памяти , процессами , файловым вводом-выводом и так далее . В разных режимах работы Windows 3.О функции Kernel выполняли различные файлы : kernel .ЕХЕ для Реального режима krnl 286.Е xe для Стандартного режима , К rnl З 86.ЕХЕ для 38б-го Расширенного режима . Так что Windows 3.0 была разработана как операционная система , имеющая три разных ядра . Когда был упразднен Реальный режим работы , из комплекта поставки Windows 3.1 и исчез файл Kernel.dll . Следующий шаг был сделан, Windows 3.11 для рабочих групп - эта система работала только в 386-м Расширенном режиме . Модуль User (user. ЕХЕ ) служит для раб оты с клавиатурой , мышью , таймером и портами , а также выполняет функции отображения элементов графического интерфейса (окон , меню ). Он управляет такими драйверами , как , например , различные драйверы клавиатуры и мыши . Наконец , модуль GDI ( интерфейс графич еских устройств , файл GDI .ЕХЕ ) поддерживает графические процедуры - прорисовку линий , закрашивание , отображение шрифтов (начиная с Windows 3.1 - все операции со шрифтами TrueType ) и взаимодействует с драйверами графических устройств - дисплея и принтера . С Windows 3.1 поставлялось более десятка драйверов видеоадаптеров . Для поддержки принтеров в Windows 3.1 впервые была применена архитектура мини-драйверов . Универсальный драйвер принтера NIDRV.DLL выполнял аппаратно-независимые функции печати -несколько дес ятков мини-драйверов , поставляемых производителями , дополняли универсальный драйвер функциями обходимыми специально для поддержки конкретных устройств и не повторяли уже написанный общий код . 1.1.3. Windows 95 В 1996 году фирмой Microsoft , была выпуше на следующая версия операционной системы Windows . Которая была названа фирмой 32 разрядной многозадачной графической системой. / 1 / Архитектура Windows 95. Что должна была сделать Microsoft , чтобы прийти к 32-разрядной операционной системе с обеспечением вытесняющей многозадачности , которая бы при этом оставалась полностью совместима с прикладными программами для Windows 3 . x и MS - DOS , не требовала бы для работы самой М S DOS и “умещалась” в четырех мегабайтах оперативной памяти ? Фирмой Microsoft уже вып ущены системы , удовлетворяющие самым серьезным требованиям к управлению памятью и процессами , - Windows N Т SERVER и Windows N Т workstation (выпущены версии 3.51 и готовятся к выпуску 3.52), Однако эти системы сами предъявляют серьезнейшие требования к аппа ратуре , а заодно и к пользователю . Windows N Т SERVER предназначается не для десятков миллионов потребителей Windows , а для сетевого администрирования . Windows N Т workstation нужна тем пользователям , которые используют приложения с высокой интенсивностью вы числительной обработки , тем , кто нуждается в высокой степени безопасности данных , и тем , кто больше беспокоится о надежности системы , чем о совместимости с приложениями для MS DOS и Windows 3 . x . Всех остальных пользователей на порядок больше , и им нужнее “ легкая ” система. Ядро Windows 95. Ядро Windows 95, как и во всех предыдущих версиях Windows , имеет трехуровневую структуру Kernel - User- GDI. Все эти модули должны бы быть 32-разрядными , но в действительности полностью 32-разрядной сделана только самая низкоуровневая часть ядра Windows 95 - Кегне 1. Вполне понятно , что , объявляя о 32-разрядной системе, Microsoft обязана была выполнить в 32-разрядном коде хотя бы такие базовые вещи , как функции ввода - вывода , управления памятью и процессами , поддержку сете вой и файловой систем . Что касается двух других модулей ядра , то расчеты показали , что полностью 32-разрядные USER и GDI вместе потребуют для работы более 1 Мбайт памяти , Windows 95 использует 1б-разрядный код , когда он необходим для обеспечения совмести мости или если 32-разрядное кодирование нецелесообразно , то есть увеличило бы расход памяти без заметного увеличения производительности . Поэтому модуль User, остался в Windows 95 преимущественно 1б-разрядным , а его 32-разрядная часть используется для пер еадресации вызовов 32-разрядных приложений 16-разрядному блоку . Большая часть функций ОВ 1, включая подсистему буферизации входных и выходных потоков , подсистему печати , растеризатор шрифтов True Туре и основные операции рисования , перенесена в 32-разрядный модуль , оставшийся 16-разрядный код описывает управление окнами . 16-разрядные функции ядра Windows 95 написаны преимущественно на ассемблере . Что же касается Kernel, то его 16-разрядная часть задействуется только при загрузке Windows 95 и используется толь ко для инициализации 32-разрядной части Kernel. Сам Kernel32 никогда не обращается к Kernel16. На рис . 1.2. показано , для каких функций используется 32-разрядный код , а для каких 16-разрядный код модулей ядра Windows 95. Многозадачность . Анализируя выполне ние под Windows 95 16-разрядных приложений для Windows 3 . x и М S-DOS , мы видим по большей части знакомые , хотя и серьезно улучшенные методы Windows 3 . x . Как показано на рис . 1.3., 16-разрядные приложения для Windows ( “ приложения win 16 ” ) выполняются в обще м пространстве адресов в пределах системной виртуальной машины . Такие варианты , как выполнение каждого приложения win 16 в отдельной виртуальной машине ( что возможно в О S/2) или полная эмуляция Windows 3 . x в пределах операционной системы (как это делается в Windows NТ ) . 32-разрядные приложения , созданные с учетом требований Windows 95 ( “ приложения win 32 ” ), выполняются в режиме “подлинной” вытесняющей многозадачности . Кроме того , Windows 95 поддерживает многопоточные приложения , способные запускать параллель но несколько процессов . Для каждого win 32-приложения и для области адресов приложений win 1б используются отдельные очереди сообщений . Таким образом , приложения win 16 фактически изолированы от остальных процессов . Кроме того , в Windows 95 примененные мето ды очистки и восстановления системы в случае ошибок . Если ошибка в программе , выполняющейся под Windows 3 . x , могла запросто “ обрушить всю ” систему , то ошибка в одном из приложений под Windows 95 обычно не влияет на выполнение остальных программ . Низкоуровн евые компоненты операционной системы изолированы от прикладных программ , поскольку пользуются сервисом другого уровня защиты микропроцессора 80386. Использование памяти . Для разработчиков программного обеспечения 1ВМ РС долгие годы оставалась камнем прет кновения сегментированная модель памяти 1б-разрядных микропроцессоров 8088/86 и 80286 . Сегментом является непрерывная область памяти , адресуемая 16-разрядными числами ( 64 Кбайт ). Для того чтобы использовать более б 4 Кбайт памяти , пришлось разработать с истему адресации памяти при помощи двух чисел - адреса начала сегмента и 1б-разрядного смещения внутри сегмента . Микропроцессоры 80386, способные оперировать 32-разрядными адресами , могли бы без всяких премудростей ( и отнимающих время вычислений ! ) адрес о вать до 4 Гбайт , оперативной памяти , Но М S - DOS и Windows 3 . x вынужденно продолжали использовать устаревшую сегментированную модель памяти . Для win 32-приложений доступна плоская ( несегментированная ) модель памяти Windows 95. Система полностью использует адресуемую память 38б-х процессоров , при этом прикладные программы могут работать с объемом памяти до 2 Гбайт , остальные 2 Гбайт Windows 95 использует для собственных нужд . Файл виртуальной памяти Windows 95 имеет динамический размер , ограниченный только о бъемом жесткого диска и не зависящий от фрагментации . Использование системных ресурсов . Под системными ресурсами в терминологии Windows понимают области памяти , используемые модулями USER и GDI . В ресурсах GDI располагается информация о графических объек тах , используемых системой в данный момент . Ресурсы USER включают информацию об окнах , меню и так далее . Для того чтобы максимально ускорить процедуру обращения к ресурсам USER и GDI , в Windows 3 . x их объемы ограничили сегментами по б 4 Кбайт . Каждое порожд енное системой окно отнимало примерно 2 % системных ресурсов , а когда процент свободных системных ресурсов падал до 20 % , загрузка новых приложений становилась невозможной . Большая часть ресурсов Windows 95 хранится в областях памяти с 32-разрядной адресац ией , Соответственно объем ресурсов Windows 95 практически неограничен . Те из старых Windows -программ , которые непосредственно обращаются к системным ресурсам , могут использовать их под Windows 95 так же , как и прежде. Файловая система . Одно из самых назо йливых ограничений систем М S - DOS и Windows 3 . x - имена файлов , состоящие не более чем из 11 ( 8+ 3) символов . Новая файловая система позволяет win 32-приложениям пользоваться длинными (до 255 символов ) именами файлов и при этом остается полностью совместимой с FAT . Разумеется , пользоваться такими именами файлов гораздо удобнее . Некоторые компоненты новой файловой системы были использованы еще в Windows 3.11 для рабочих групп - драйвер устанавливаемых файловых систем , 32-разрядный драйвер F АТ, 32-разрядное кэ ширование жесткого диска . Все эти черты получили дальнейшее развитие в Windows 95. Кроме того , появились 32 - разрядный драйвер C D-ROM , более мощная подсистема блокового ввода-вывода и другие черты . Поддержка драйверов устройств . аиболее громоздкие М S - DOS драйверы , занимавшие больше всего места в базовой памяти или UMB , теперь не нужны при использовании оболочки защищенного режима . Согласно документации Microsoft система Windows 95 обеспечивает : · полную поддержку разделения доступа к файлам , заменяя резид ентную программу S НА R Е.ЕХЕ ; · полную поддержку разнообразных звуковых плат, С D-ROM приводов и других мультимедиа-устройств, не требуя при этом установки М S - DOS драйверов ; · поддержку файловой системы С D - R ОМ дисков , заменяя MSCD ЕХ.ЕХЕ ; · кэширование диск ов , заменяя SMARTDrive ; · работу с мышью не только в графической среде , но и с MS - DOS -программами , заменяя драйвер мыши для MS - DOS ; · динамическое сжатие данных , заменяя DRVSpace . BIN ( DBLSPACE.BIN ); · полную поддержку работы станции в локальных сетях MS -N ЕТ и Novell Netware , заменяя все резидентные программы , которые приходилось загружать для работы в этих сетях . Windows 95 поддерживает текущую версию протокола Plug-and-Play . При установке дополнительного устройства , подключаемого на основе Plug-and-Pla y , система сама заботится о его конфигурировании . Достаточно удобно использовать Windows 95 и без аппаратной поддержки Plug-and-Play - система чрезвычайно много знает о том , какие существуют внешние устройства и как идентифицировать , включая С D дисководы , звуковые карты модемы , мыши и многое другое . Графическая оболочка Windows 95. Интерфейс Windows 95 соответствует требованиям самых придирчивых пользователей , дизайнеров и специалистов по эргономике . На мой взгляд , интерфейс Windows 95 великолепен , и пе рейти на эту систему стоило бы даже в том случае , если бы новым в ней был только интерфейс. Современный пользовательский интерфейс . Облик оболочки Explorer , основанный на полноценном воплощении метафоры рабочего стола и папок , удобен и нагляден . Панель за дач дает полный обзор приложений , выполняемых системой в данный момент . Доступ ко всем объектам , будь то программы , документы , сетевые ресурсы или инструменты настройки системы , унифицирован . Имена любых объектов могут содержать до 255 символов . Богатый сервис . Оболочка Windows 95 предоставляет пользователю богатый и разнообразный выбор рабочих инструментов . В качестве примера назову возможность создания так называемых ярлыков для быстрого доступа к необходимым приложениям и документам , весьма удачное сре дство поиска документов и встроенную программу быстрого просмотра документов различных форматов . Выполнение многих действий , включая установку аппаратных компонентов , отправку почтовых и факсимильных сообщений , установление связи между компьютерами , автома тизировано при помощи специальных программ-мастеров . Широкие возможности настройки. Windows 95 можно настроить сотнями способов , причем доступ к средствам настройки пользование ими весьма просты . Удобство работы с документами. Windows 95 - это следующий шаг к интеграции различных прикладных программ одну рабочую среду . Можно легко создавать документы средствами оболочки , переносить данные из документа на рабочий стол и в другой документ , выбрасывать в “ мусорную корзину ” фрагменты текста , документы или це лые папки , а при необходимости - возвращать их . Усовершенствованная справочная система . Справочная система Windows стала удобнее и гибче . Многие разделы справки составлены в виде пошаговых руководств с возможностью выполнения тех или иных рекомендуемых де йствий непосредственно из системы помощи . “ Эмуляция ” MS-DOS . MS-DOS 7.0 + Windows 4.0. Покинуть оболочку Windows 95 для работы с М S - DOS программами в реальном режиме можно , только инициировав перезагрузку или отключение системы или же перейдя в режим эмуляц ии М S - D О S (М S - DOS mode ) с возможностью возврата в графическую оболочку по команде ЕХ I Т . Похоже , что нормальным состоянием Windows 95 действительно является графический интерфейс , который всегда находится где-то под рукой , в памяти компьютера . Но это не так . В действительности “ режим эмуляции М S - DOS” представляет собой классическую М S - DOS , работающую в реальном режиме и адресующую 640 Кбайт оперативной памяти . Графическая система Windows 95 со всеми своими преимуществами по-прежнему является оболочкой защи щенного режима для MS-DOS . Даже новейшие 32-разрядные графические приложения для Windows 95 продолжают использовать для выполнения отдельных операций функции М S - DOS и базовую область памяти . Таким образом , определение Microsoft Windows 95 как операционно й системы , не требующей отдельной копии М S - DOS , основано на том , что Windows 95 включает в себя все , что ей нужно от М S-DOS . Ничто лучше М S - DOS не поддержит MS-DOS- приложения , именно в М S-DOS лучше всего чувствуют себя те 16-разрядные драйверы устройств , к оторые все-таки приходится загружать (например , драйверы сканеров ). При этом весь комплекс сделан так , что обычному пользователю вроде бы и незачем что-то знать о М S - DOS , а квалифицированный пользователь , напротив , сможет применять как новые , так и стары е , испытанные методы работы с системой. 1.2. Анализ механизма связывания и внедрения Научно-технический прогресс 90-х годов обусловил неуклонный рост популярности объектно-ориентированного программирования (ООП ), и в настоящее время многие программисты перешли в своей работе на С ++ или Visual Basic . Уже существуют объектно-ориентированные базы данных , объектно-ориентированные дизайн и анализ и даже объектно-ориентированный СОВО L . На естественно возникающий вопрос - не остались ли Windows или операционные системы в объектно-ориентированном отношении далеко позади . Безусловно , нет . Продукт OLE ( Objekt Linking and Embedding ) компании Microsoft открывает новые пути для применения объектов в Windows . О LE предполагает новый способ мышления . Программист в сред е ОПП должен мыслить обо всем как об объектах - от файла на диске , элемента данных или приложения до аппаратного обеспечения и операционной системы . Кроме того , OLE заставляет программиста следовать строгому набору правил , на зависящих от языка программиро вания , операционной системы или даже от аппаратной платформы . Введение в OLE . OLE служит основанием , на котором строятся объекты . Эта аббревиатура означала изначально связывание и внедрение объектов ( Objekt Linking and Embedding) с выпуском версии О LE 2 п рименение О LE уже не укладывается в рамках , связывания и внедрения . О L Е сегодня включает в себя унифицированную передачу данных , структурированное хранилище информации и автоматизацию . Не следует сужать представление об О L Е связыванием и внедрением ; смотре ть на О L Е следует как на набор строительных блоков , позволяющих создавать сложные приложения . На самом деле Microsoft перестала расшифровывать аббревиатуру О LE как Objekt Linking and Embedding , чтобы изменить сложившееся восприятие О L Е .) / 2 / Предназначен ие и история О L Е . Если до появления OLE 1 у пользователя Windows имелась электронная таблица , которую ему нужно было вставить в документ текстового редактора , обыкновенно он должен был экспортировать данные из таблицы в файл стандартного формата , импортиро вать данные из файла в текстовый редактор , а затем в редакторе их переформатировать . Если пользователю везло и оба приложения поддерживали копирование и вставку , то вместо явного экспорта /импорта он мог копировать информацию через буфер Clipboard. Всякий р аз , когда электронные таблицы изменялись , процесс переноса данных нужно было повторять . Это , естественно , приводило к лишней затрате времени и сил . Но незадолго до выхода Windows 3.1 появилось О LE 1, и это значительно упростило описанную использования об щих данных в подобных приложениях (если они умели работать с О L Е ). На смену операциям экспорта /импорта и копирования пришли связывание и внедрение . Стало возможным так подключить электронную таблицу к текстовому редактору , чтобы документ редактора отражал самые последние изменения , произошедшие в электронной таблице . Кроме того , электронная таблица (которая появилась в текстовом документе ) может быть выбрана нажатием кнопки мыши . При этом автоматически запускается приложение электронной таблицы , позволяюще е выполнять редактирование данных или другие специфические для таблиц операции . Команда Update закрывает электронную таблицу , и обновленная электронная таблица внедряется в документ текстового процессора. OLE 2 является следующим логическим шагом в развити и этой стратегии . В О LE 1 нажатие кнопки на электронной таблице , находящейся в документе текстового документа , приводило к запуску приложения в отдельном окне . В О L Е 2 вводится понятие активации по месту (также известное под названием визуального редактиро вания ) . Приложение электронной таблицы запускается как и прежде , но вместо отдельного окна электронная таблица как бы сливается с текстовым редактором . Изменяется меню , отражая меню электронной таблицы . Изменяется даже инструментальные линейки , но вы все р авно находитесь в текстовом редакторе . Два приложения как бы соединяются и текстовый редактор приобретает функциональные возможности электронной таблицы . Так пользователю нужды переключаться для просмотра данных с одного приложения на другое ; вы можете ра б отать с приложением , которое удовлетворяет большинству ваших потребностей , и внутри него использовать возможности других приложений . Для О LE 2 пришлось переделать заново многое из существовавшего в О LE 1 чтобы расширить его функции и улучшить производите льность . Например , О L Е 1 построено на динамическом обмене данными ( DD Е ). Для передачи информации туда и обратно DDE в своей основе использует сообщения Windows и возвратные вызовы . Поскольку используются сообщения Windows , DD Е ограничивается рамками одной машины . OLE2 не опирается на DDE вместо этого оно построено на протоколе LPRC (Lightweight Remote Procedure Calls - легких удаленных процедурных вызовах ) . Архитектура О L Е . Чтобы достигнуть своих задуманных функциональных возможностей , О LE в качестве строит ельных блоков использует большое количество объектов . OLE содержит новые объекты для реализации таких концепций , как формировка ( marshaling ) , которая обслуживает коммуникацию между процессами и опирается на LPRC ; структурированное хранилище , которое обеспе чивает хранение документов , содержащих другие документы ; ярлык ( moniker ), управляющий подключением и переключением связанных данных . Каждый из этих механизмов необходим О LE для выполнения своей работы. Кроме того , О LE вводит понятие автоматизации , которое не требуется для связывания и внедрения в традиционном смысле . Автоматизацию можно понимать как способ , посредством которого пользователь может работать с вашим приложением внутри определенного им самим макроязыка . Сервер-автомат OL Е управляется любым авто матным контроллером OLE (см . таблицу ) . Приложения-автоматы - серверы и контроллеры . Продукт Автоматный сервер Автоматный контроллер Visual Basic да да Exel да да Word 6.0 да нет AutoCad 12LT да нет PhotoShop 3.0 да нет CorelDraw 5.0 да нет Прил ожения которые одновременно являются и серверами и контроллерами могут как управляться из вне , так и управлять другими приложениями . В традиционном программировании приложение либо сервер , либо контроллер , но не одновременно и то и другое . OLE вынуждает ра сстаться с таким способом мышления и предоставляет разработчику приложения право выбора - будет ли его приложение сервером или контроллером . Объекты. Под понятие о 6ьекта О L Е попадает все , что может иметь машинное представление . Объектом может быть докумен т текстового процессора , рисунок или чертеж , также часть чертежа (допустим какой либо слой чертежа печатной платы ) , видео-клип , звук или даже приложение . Такое понимание расходится со стандартной интерпретацией , в которой объекты - данные , над которыми про изводятся манипуляции посредством функций и процедур . Хотя OLE поддерживает объекты только в рамках одной машины , это не ограничение архитектуры OLE, а лишь ограниченность ее реализации . Уже демонстрировалась версия OLE , названная распределенным О L Е , в кот орой границы между машинами для объектов прозрачны . Другими словами , если ваше приложение запрашивает OLE- объект , то поставщик этого объекта не обязательно находится на вашей машине , хотя с точки зрения вашего приложения О LE -объект - локальный . Интерфейс ы. OL Е интерфейс - это механизм , используемый для доступа к группе связанных с объектом функций . Если вы хотите выполнить в OLE операцию над объектом , можно запросить специфический интерфейс , имеющий нужную вам функцию . Когда вы запрашиваете интерфейс , то обращаетесь к объекту , указывая его ID -номер . Каждый интерфейс имеет уникальный номер-идентификатор ( Interface ID или IID). Объект возвращает либо состояние ошибки , если объект не поддерживает запрашиваемый интерфейс или происходит другая ошибка , либо он в озвращает указатель на требуемый интерфейс . Компонентная модель объекта . Компонентная модель объекта (также известная под аббревиатурой СОМ ) - это спецификация , определяющая связующий О L Е клей . СОМ определяет , каким образом объекты взаимодействуют . СОМ пр едусматривает для объектов О L Е такую специфику , в частности диктуя , какие интерфейсы объекту необходимы , как объект может быть создан и когда он может быть уничтожен . Структурированное хранилище . Структурированное хранилище - это спецификация , определяющая метод хранения объектов . Структурированное хранилище можно представить себе как OLE -аналог DOS. Этот механизм поддерживает большинство из функций DOS - файлы и каталоги , копирование и перемещение файлов (файлы называются потоками , а каталоги - хранилищами . Кроме того , термин “ структурированное хранилище ” информации не подразумевает , что данные хранятся на диске . Так же как и файлы DOS , которые могут находится на RAM -диске , жестком диске , флоппи-диске или даже на CD-ROM, объекты , размещенные в структурирова нном хранилище , могут находиться в любом из этих мест , а также и в других . Чтобы DOS могла использовать для хранения информации другие устройства , такие , как оптический флоппи-диск или сетевой диск , обычно нужен драйвер устройства . Структурированное хранил ище информации также имеет методы для поддержки нестандартных устройств . Составной документ является специальным случаем структурированного хранилища , предназначенного для хранения наборов объектов в приложениях-контейнерах (контейнерные приложения - это приложения которые используют и сохраняют объекты ). Автоматизация . OLE -автоматизация - это надзор интерфейсов , в типичном случае псзволяющий использовать приложение в качестве О L Е объекта . Автоматизация возможна не только для приложений в форме исполняемы х модулей (ЕХЕ ), но и для динамически присоединяемых библиотек ( DLL ). Автоматизация позволяет посредством набора определенных правил извне запрограммировать или специализировать приложение . Это дает приложению , например , Visual Basic , возможность управлять Exel, в результате чего функции Ехсе l становятся доступны вашему приложению на Visual Basic. Автоматный контроллер OLE управляет объектами-автоматами через посредство автоматного сервера . Унифицированная передача данных . Унифицированная передача данных - это набор интерфейсов , которые позволяют клиенту и серверу обмениваться данными . Она является DDE- эквивалентом и функций буфера cut /сору / paste , собранных воедино . Унифицированная передача данных посылает уведомление в случай если данные изменяются (подо бно связи DDE), а также поддерживает переговоры о формате , в котором данные будут передаваться . Кроме того , унифицированная передача данных предусматривает возможность передачи одного лишь дескриптора ( handle ) данных вместо самих данных . Объект - сервер може т решить , что вместо передачи 20 Мбайт данных в оперативную память через буфер обмена объекту-клиенту будет передан дескриптор данных , чтобы клиент сам мог их получить . Это избавляет сервер от необходимости чтения всех данных и передачи их клиенту , а клие н та от необходимости самостоятельной обработки данных . Это также избавляет конечного пользователя от сидения перед экраном компьютера в ожидании окончания обмена . Связывание и внедрение ( Linking and Embedding ). Связывание и внедрение - два принципа , которы е по традиции известны в OLE (Objekt Linking and Embedding ) лучше всего . Связывание и внедрение (вместо этого теперь говорят просто о документах О L Е ) позволяют объекту-клиенту (который может быть другим приложением ) прикрепиться к объекту-серверу . Присоеди нение может либо осуществляться связыванием (данные находятся вне составного документа ) , либо данные могут внедряться внутрь составного документа . Внедренные данные сохраняются непосредственно в документе , в то время как при связывании для доступа к данным OLE в действительности сохраняет своего рода дорожную карту . Дорожной карта называется ярлыком ( moniker ). Когда О L Е получает запрос на восстановления данных , оно смотрит на ярлык (дорожную карту ), чтобы их отыскать . Связанные данные могут храниться в не п ринадлежащем О L Е файле или в структурированном хранилище (возможно даже , что данные находятся где-то в самом составном документе ). Составной частью связывания и внедрения является способность OLE выполнять активацию по месту . В OLE 1 при двойном нажатии кн опки мыши над связанным или внедренным объектом запускается сервер этого объекта . В О L Е 2 возможна активация по месту . Для пользователя два приложения являются как бы одним . Активация по месту присоединяет нужные части приложения сервера (такие , как пункты меню и инструментальные линейки ) к приложению клиента , когда пользователь работает с внедренным объектом . При двойном нажатии кнопкой мыши над внедренным объектом происходит преобразование приложения клиента , в нем изменяются меню и линейки инструментов , а также прочие элементы интерфейса , для работы с приложением сервера внедренного объекта . При двойном нажатии кнопкой мыши над связанным объектом приложение сервер запускается в отдельном окне (как в OLE 1 ) . В терминах OLE описанное выше действие (двойное нажатие для активации сервера ) называется активацией извне ( outside-in ). При активации извне сервер объекта не активируется (не запускается ), пока пользователь не нажмет над объектом кнопку мыши дважды . Активация изнутри ( inside-out ) требует , чтобы объект- клиент активировал объект - сервер всегда , когда объект-сервер виден . Сервер принимает управление по однократному нажатию кнопки мыши - потому , что для активируемых изнутри объектов он уже запущен заранее . Как можно видеть , архитектура О LE достаточно богата , а связывание и внедрение - лишь часть общей структуры. 1.3. Выбор и обоснование языка программирования Сегодня в связи с все более ускоряющимися технологиями программирования , постоянно повышаются требования к среде и к самому языку программирования . Наиболее злободневные требования можно описать таким образом . 1. Отделение элементов программы , связанных с пользовательским интерфейсом от алгоритмической части . Это позволяет минимизировать или вообще избежать при правильном проектировании проекта измен ений в алгоритмической части проекта при модернизации пользовательского интерфейса вне зависимости от причин их вызывающих : требование заказчика проекта по замене неверной надписи или кардинальной смены концепции вследствие перевода разработок на другую п л атформу . 2. Простота и скорость создания /модернизации пользовательского интерфейса и самих программ , путем использования уже готовых элементов (блоков ), реализующих некие крупные функции взаимодействия с человеком или другой программой . 3. Еще раз просто та , а также ясность и наглядность при программировании пользовательского интерфейса , скрывающая нижний , сложный слой и оставляющая на поверхности только малую , но самодостаточную необходимую часть айсберга управления элементами интерфейса . 4. Использовани е уже существующего кода , возможно , написанного на другом языке программирования . При разработке приложений для Windows вышеизложенным принципам очень удачно соответствует Visual Basic. Основные свойства этого языка программирования приведены ниже . Возмо жности Visual Basic. 1. Все элементы пользовательского интерфейса можно создавать / модернизировать / удалять без всякой связи с алгоритмической "невидимой " частью программы . Все , что связано с взаимодействием с человеком или другим субъектом управления , н аходится в файлах форм ( FR М ), V ВХ и ОСХ , а все , что связано с расчетной частью , - в файлах стандартных модулей (ВА S) и классов (С LS ), или , если нужна скорость обработки - в специально написанных на С , Pascal , Fortran или других язык программирования , DLL. Н о это разнесение на самом деле чисто условно и делается просто с целью облегчения работы самому разработчику или , что более важно , - группе разработчиков . На самом деле , при небрежном проектировании или небольшой поставленной задаче и интерфейсная и алгор и тмическая часть могут располагаться в одном модуле ( FR М или ВА S ). 2 . Формирование пользовательского интерфейса в Visual Basic похоже на работу с детским конструктором - все элементы на виду , все элементы просты , но сложность создаваемой конструкции ограни чена только изобретательностью разработчика . Причем надо иметь ввиду , что число элементов этого конструктора постоянно и очень быстро растет . Сотни (на начало 1995 года около тысячи ) сторонних производителей и фирм постоянно выбрасывают на рынок все новые, более мощные модели расширения для Visual Basic . 3 . Если уже имеется готовый алгоритм БПФ (Быстрого Преобразования Фурье ) на ассемблере или алгоритм быстрого поиска в отсортированном списке на С или Pascal , не надо переписывать их на Visual Basic . Достат очно оформить их виде DLL и использовать как функции . 4. Можно с помощью Visual Basic для Windows создавать запускаемые “ .EXЕ ” файлы . Visual Basic для Windows создает выполняемые ( “ . ЕХЕ ” ) файлы , но не самодостаточные . Все программы , созданные на Visual Ba sic , должны распространяться с файлом VB R U N x00.DLL ( x - номер версии 1,2 или 3) или VB400xx.DLL ( xx - 16 или 32). Эта DLL обязательно должна присутствовать в каждой системе , где используются программы на Visual Basic для Windows . Visual Basic дает возмож ность создавать приложения , работающие среде Windows . Программы компилируются в псевдокод (р-коде ) и помещаются в файлы с расширением “ .ЕХЕ ” . Когда программа запускается, файл с р-со d е обращается к VBxxxx.DLL, которая интерпретирует р- c ode в последовательн ость инструкций Windows АР I . 5 . Использование функций Windows АР I в Visual Basic довольно просто - необходимо ее объявить ( declare ) в секции объявлений или модуле кода . Windows АР I - набор DLL , содержащих функций общего назначения среды Windows. Вызов ф ункций АР I позволяет выполнить множество вещей, включая отображение меню, манипуляции с изображениями, проигрыш музыкального фрагмента и т.д . 6. Используемый механизм добавления элементов управления V ВХ ( Visual Basic eXtension - модули расширения Visual Basic ) явил собой "черный ход " для разработчиков третьих фирм по внедрению собственных объектов в среду разработки Visual Basic . Механизм , пусть и не объектно-ориентированный , но позволяет просто и довольно элегантным путем добавлять новые программные комп оненты без дополнительного программирования. Механизм V ВХ является специфическим интерфейсом для Visual Basic. 7. Существует открытый стандартный интерфейс для работы с программными компонентами , в каждую программу и приложение можно интегрировать стандарт ный набор средств , позволяющий использовать в дальнейшем данные программы в виде компонент для будущих приложений . Механизм О L Е и новая технология в виде ОСХ (О L Е Custom Control) . О L Е не только предлагает стандарт в определении объекта , но также определяет , как и каким образом объекты могут взаимодействовать друг с другом . / 3 / Основные новшества в Visual Basic версии 4.0 · наличие 16- и 32-разрядной редакции ; · работа в среде Windows 3.1, Windows для Рабочих Групп 3.11, Windows 95, Windows N Т ; · возмож ность создания О L Е Automation объектов ; · поддержка O СХ и V ВХ ; · расширение Тоо l Вох (Окно Инструментария ) за счет О L Е Insertable объектов ; · использование J ЕТ версии 2.5 ; · наличие новых и поддержка специализированных Data Bound Control (объектов , знач ительно упрощающих работу с базами данных ); · использование ВАО версии 2. 0 ; · открытая и расширяемая среда разработки ; · возможность разбиения длинных строк в программном коде ; · расширение лексики языка программирования ; · запуск одновременно несколь ких копий Visual Basic 4.0; · директивы условной компиляции ; · поддержка файлов-ресурсов ; · создание 32-разрядных приложений ; Директивы условной компиляции программы . Разработчик имеет возможность , используя директивы условной компиляции выбирать , напр имер , какую версию приложения (16- или 32-разрядную ) он собирается создать . Используя подобные директивы , можно создавать программы , имеющие один и тот же исходный текст , но которые после компиляции смогут работать на различных платформах . Object Browser (Инспектор объектов ) . Данное средство предназначено для облегчения идентификации и управления всеми О L Е Automation Servers , на которые есть ссылки в проекте . Выбрав нужный объект , разработчик может легко выбрать и передать корректный синтаксис выражения ра боты с объектом в текст программы или вызвать встроенную помощь для данного объекта . Встроенный редактор . Увеличена функциональны мощь встроенного редактора . Во-первых , расширены возможности настройки , точнее постройки , “ на свой вкус ” формата отображаемых строк кода , комментариев , ключевых слов , идентификаторов , точек останова , и т . д . Можно задать различные фонты , цвета и размеры фонтов для облегчения чтения текста программы . Во-вторых , улучшена работа с отладочным окном . Больше нет необходимости держать и окно с отлаживаемым текстом программы и окно с отображаемыми переменными - теперь достаточно использовать одно окно , состоящее из двух подвижных частей : нижнее подокно представляет собой полнофункциональный редактор кода , верхнее же показывает содержимо е переменных . Расширение лексики языка программирования . Для объявления подпрограмм и функций , доступных или не доступных из других модулей проекта , введены дополнительные служебные слова при объявлении процедур : Public и Private соответственно . Visual Bas ic 4.0 “ прихватил ” теперь кусочек Pascal , добавив к своему лексическому запасу выражения “ With” , ” For Each”, а также добавлены новые типы данных - Byte (простое без знаковое , для представления чисел в диапазоне 0-255), Воо lean 1 6 битовые (2-байта ) числа , к оторые могут принимать только два значения : True или False ) и Collection . Collection позволяет построить собственную группу пронумерованных объектов . Использование Collection более предпочтительно , чем использование массивов вследствие большей гибкости инд ексов , и наличия наследуемых методов для вставляемых и удаляемых объектов коллекции . Процедуры свойств ( property procedures ). Появилась возможность создавать для объектов ( форм , стандартных модулей и модулей классов ) собственные специализированные свойства ( properties ), и привязывать к ним выполняемый код , который будет вызываться при обращении к свойству . Расширяемость оболочки программирования . Оболочка разработки (IDE ) самого Visual Basic 4.0 также может быть управляем через О L Е Automation , что позволяе т О L Е приложениям создавать и размещать в специальное меню Add-In Visual Basic 4.0 свои команды , расширяя таким образом возможности IDE. Создание О L Е Objekt приложений и классы (С lasses ) . Одной из основных претензий к Visual Basic со стороны профессиональн ых программистов служило отсутствие средств создания готовых модулей для последующего использования . Программист вынужден был обращаться к С , С ++, Ра s са l или другим языкам программирования для создания DLL и вызовам функций DLL из программы на Visual Basic или , например , из приложения Microsoft Office . С выходом Visual Basic 4.0 данная ситуация коренным образом изменилась , программисты могут создать объекты О L Е Automation . Библиотеки подобных объектов , каждый со своими характеристиками и методами управления , могут быть использованы из любого приложения , имеющего возможность контролировать приложение , являющееся О L Е объектом (OLE Object Application). По определению , такие объекты названы классами ( Claases ) - (эту часть языка Visual Basic взял от С ++) и распо лагаются в специальных модулях ( class module ). Для совместимости с программами , реализованными в третьей версии и использующими V ВХ из стандартного набора , Visual Basic 4.0 включает О L Е Custom Control (OCX) , заменяющие эти V ВХ . При вызове проекта программы , разработанной в среде предыдущей версии Visual Basic и использующей один из стандартных VBX предложит автоматически преобразовать ссылки на новые ОСХ . Такие приложения , как Microsoft Excel для Windows , Microsoft Word для Windows и другие , являющиеся О L Е приложениями, теперь можно вставлять в Окно Инструментария (Тоо lB ох ) как обычные элементы управления . Таким образом можно сказать об некоторой универсальности Visual Basic для создания приложений для Windows . 2. РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ И АЛГОРИТМОВ ПРОГРАММЫ 2.1. Функциональная схема работы Windows 95 Операционная система должна обеспечивать взаимодействие приложения как самой верхней ступени с самым нижним уровнем иерархии - аппаратной частью компьютера , через набор каких-либо стандартных функций и подпрограмм . Кроме того она должна обеспечивать пользователя удобным интерфейсом . Рассмотрим как это реализовано в выбранной операционной системе Windows 95 . Функциональная схема работы операционной системы Windows 95 представленная на рис 2.1. Аппаратная часть компьютера представляющая собой какие-либо устройства ввода-вывода информации (клавиатура , мышь , принтер , плоттер , сканер , устройство чтения компакт дисков , монитор и т.д .) подключена на системную шину через так называемые контроллеры устройств име ю щие в адресном пространстве памяти вычислительной машины какие-то адреса называемые портами ввода-вывода . Через эти порты при низкоуровневом программировании программист может обмениваться информацией с устройством . Но сейчас такая технология считается ус т аревшей и приводящей к излишним затратам ресурсов . Ведь в таком случае стандартные функции обмена информацией должны находится в каждой программе которая могла обмениваться информацией с внешними устройствами . Windows 95 обеспечивает взаимодействие с внеш ними устройствами как с потоками информации независимо от самого устройства через свои собственные драйвера устройств. Итак , устройства обмена информацией подключаются к компьютеру через контроллеры , которыми управляют драйверы устройств . Драйверы устройст в разработаны таким образом , что при передаче информации на устройство они организовывают очередь следуя которой на устройство передается информация от различных приложений (например принтер ). Однако при передаче информации в обратном направлении (от устр о йства ) драйверы создают так называемые события (например событие “ закончена печать ” от принтера или “ нажата кнопка ” от мыши ), которые операционной системой помещаются в глобальную очередь событий , из которой события попадают в специальный блок определения назначения события . Там по информации хранящейся в системе : приоритет события , какое приложение открыло поток обмены с устройством , приоритет приложения открывшего поток обмена и пр . Определяется назначение события , его принадлежность определенной виртуаль ной машине организованной системой . По этому назначению передается сообщение о происходящем событии приложению которое должно его обработать. В отдельной виртуальной машине приложения по приходе событий организовывается локальная очередь событий . Из которо й сообщения о событиях передаются по так называемому фокусу объекту который в этот момент находится в фокусе . Объектом может быть любой элемент управления (как то кнопки , поля ввода , имиджи , иконки , картинки и т.д .). С объектом связана целая система проце д ур и функций которые могут обрабатывать события приходящие объекту , а также могут передавать их другим объектам или выше на ступень по иерархии объектов (элементы управления передавать формам , а формы в свою очередь более глобальным формам или окнам прилож ений или самой системе ). Таким образом , задача программиста заключается в создании подпрограмм и функции реагирующих определенным образом на события приходящие от системы , для всех объектов которые могут использовать эти события в целях определяемых програ ммой в целом , для конкретной задачи поставленной перед программой. 2.2. Используемая терминология Итак , Visual Basic предназначен для быстрого создания приложений в среде Windows , и как любая программа для Windows , программа , написанная на Visual Basic , д олжна иметь как минимум одно окно . В терминах Visual Basic все окна есть формы , в программе может быть множество окон-форм . Формы в программе служат для отображения элементов пользовательского интерфейса . На каждой форме может находится некоторое количест во элементов управления , а также графика и даже другие формы , причем , как вырожденный случай , на форме может вообще не располагаться ни одного элемента. В том случае , когда приложение использует окно-форму для отображения различных типов информации или пре доставляет возможность работать в нескольких режимах , чтобы не засорять площадь окна множество дополнительных элементов , используется линейка ниспадающих меню . Каждое меню содержит список пунктов , которые в свою очередь могут разворачиваться в подменю . На з вания подобных вложенных подменю , а также пунктов меню , при выборе которых потребуется в отдельном диалоговом окне выполнить некие дополнительные действия , при отображении в списке пунктов меню дополняются справа многоточием . Элементы управления служат дл я отображения информации , выбора из некоторого множества объектов , а также для более ясного и четкого восприятия . Любая , даже простейшая программа на Visual Basic , имеет свой Проект (project ), информацию о котором хранится в специальном файле . В проект про граммы , отображаемом в специальном окне Проекта , помещаются все формы , модули и файлы , совокупность которых и составляет программу . Visual Basic не является объектно-ориентированным языком в догматическом понимании ООП (объектно-ориентированное программир ование ), Visual Basic базируется на парадигме событийно-ориентированного программирования : программа - суть некий набор реального или виртуального мира , каждый из которых понимает некий ограниченный набор событий (возможна , расширяемый ). По приходу каждого события из набора отслеживаемых событий формы и элементы управления могут реагировать определенным образом , в соответствии с программным кодом , реализованным программистом для каждого объекта . Для внесения управляющего программного кода для событий и мет одов используется Редактор Кода , который служит для создания , просмотра и модификации подпрограмм ( Sub ) и функций ( Function ). Процедура представляет собой подпрограмму , которая не возвращает результата . Программный код , связанный с формами и элементами уп равления , служит для реализации ответной реакции программы на действия пользователя или приход системного события . Программный код может находиться в специальных программных модулях (стандартные модули и модули классов ) или быть “ привязан ” только к элемен ту управления (то есть объекту ) или форме . Кроме набора событий ( events ), для каждого элемента управления существует предопределенный (возможно, расширяемый ) набор свойств или характеристик ( properties ), представляющих собой некие начальные установки. Дан ные свойства разделяются по сфере доступности : есть свойства , которые могут устанавливаться только в режиме разработки , только во время выполнения программы или в обоих случаях. Установка и настройка свойств объектов осуществляется в окне Свойств ( Properti es ). Для элементов управления и форм также существует связанный с ними набор методов (method ), которые можно рассматривать как набор команд , понимаемых данным объектом . Для некоторых отображаемых на экране элементов управления есть возможность задавать ра зличные основные цвета и цвета фона . Для удобства выбора нужных цветов используется Цветовая Палитра ( Color Palette ) . 2.3. Синтез общей структурной схемы программы Таким образом переходя к синтезу структурной схемы программы можно условно разбить на неск олько логических блоков . Каждый из которых представляет собой набор привязанных к объектам подпрограмм , функций и данных (рис . 2.2). Основным звеном программы является главная форма программы ( Main_Form.frm ) представляющая собой главную интерфейсную часть программы . В которой происходят все преобразования проекта . Проектом , в контексте данной программы , называется совокупность документов и функций OLE Automation находящихся в рабочей области программы в определенном взаимодействии друг с другом . Над которы ми могут производится определенные действия по созданию , редактированию , удалению , запуску функций и пр . Приводящие к изменению как самого проекта в целом , так и просто документов входящих в проект . В главной форме содержатся коды по обработке всех меню с одержащихся в программе , в том числе и функций работы с системным буфером обмена информацией . Кроме того главная форма содержит программный код обрабатывающий все изменения проекта с точки зрения пользователя . В том числе создание документов , функций , их п еремещение в проекте , удаление запуск функций на обработку документов и пр. Из главной формы производится активизация всех дочерних форм программы в режиме модальных окон . То есть окон до закрытия которых работа основной программы главной формы (а иногда и всей системы в целом , как например в случае открытия окна сообщения о глобальной ошибке возможно приводящей к разрушению системы ) приостанавливается. Дочерними формами по отношению к главной форме являются , форма создания и редактирования свойств документ ов ( MakeDocForm.frm ), форма создания и редактирования свойств функций OLE Automation ( MakeFunkForm.frm ), форма создания и изменения регистрационных данных приложений поддерживающих OLE Automation или для которых необходима эмуляция этой поддержки ( MakeDocF orm.frm ). Форма создания и редактирования свойств документов содержит все необходимые элементы управления (объекты ) для ввода и изменения данных о документе , а также его визуальном представлении в проекте (то есть его иконки ).Также в этой форме содержится программный код обрабатывающий эти элементы управления и вносящий изменения в глобальную структуру данных о документах в проекте . Эта форма представляет собой окно под названием “ Свойства документа ” . Форма создания и изменения регистрационных данных прилож ений также представляет собой окно под названием “ Регистратор приложений ” и также содержит в себе ряд объектов (элементов управления ) и программный код обрабатывающий эти элементы управления для изменения данных о зарегистрированных приложениях которые мог ут участвовать в проекте в качестве непосредственных обработчиках документов , а также в виде функции OLE Automation . Форма создания и редактирования свойств функций OLE Automation представляет собой окно “ Свойства функции ” и содержит элементы управления по зволяющие редактировать свойства функции OLE Automation . Форма также содержит программный код модифицирующий глобальные данные о функциях в проекте. Все глобальные данные , а также подпрограммы необходимые для работы большинства блоков программы и не входящ ие в какую либо форму содержатся в специальном модуле ( MainModule ), который не содержит в себе никаких объектов и вообще визуально не определяется . Он включает в себя только программный код определяющий всю структуру данных и хранит в себе данные о регистр ации приложений , свойств функций и документов . А также данные необходимые для нормальной работы программы в целом . Как то , различные переменные по средством которых производится обмен данными между различными формами и окнами внутри самой программы . А так ж е модуль включает в себя подпрограммы и функции необходимые для всего проекта в целом . Например функции открытия проекта , сохранения проекта на носителе информации и т.д ., которые не входят в какую-либо форму и могут вызываться из любой части программы. Сл едующим логическим блоком программы является блок обработки ошибок . Он строго говоря не выделяется в в программном виде как отдельная часть программы , но он содержится практически в каждой программной единице будь то подпрограмма или функция . Однако как с у щественная часть всего программного комплекса его стоит отметить отдельным блоком . Кроме форм и модуля в структуру программы входит основной блок программного кода обеспечивающий взаимодействие с механизмом OLE Automation операционной системы Windows 95 . Как раз в этом блоке осуществляется выполнение функций OLE Automation , на него легла основная часть формирования сообщений для Windows и приложений , а также расшифровка ответных сообщений системы и программ . 2.4. Разработка структурной схемы взаимодейств ия программы с механизмом связывания и внедрения Для более качественной разработки алгоритма взаимодействия программы с механизмом связывания и внедрения объектов Windows 95 , необходимо рассмотреть функциональную схему работы OLE и системы OLE Automation (рис 2.3). В общем виде структура взаимодействия операционной системы и приложений состоит из трех частей : OLE Server - OLE сервер это приложение обеспечивающее некоторое количество функций OLE Client (Controller) - OLE клиент (контроллер ) является при ложением которое пользуется функциями OLE Automation OLE клиента Windows 95/NT является посредником между клиентами и серверами OLE обеспечивая их взаимодействие через ряд стандартных потоков и буферов обмена информацией OLE . OLE сервер , вернее его часть о твечающая за OLE взаимодействие состоит из двух частей . Регистратора интерфейсов OLE находящихся в ядре , и собственно ядра OLE сервера , которое в свою очередь состоит из OLE интерфейсов обеспечивающих при обращении к конкретному интерфейсу ряд функций назы ваемых методами , они то и являются на самом деле OLE Automation функциями . OLE сервер является несмотря на простоту описания наиболее сложной частью всего взаимодействия посредствам OLE , с точки зрения программиста . Эта сложность обусловлена непосредственн о сложностью самих методов OLE , обеспечиваемых сервером. Windows 95 являясь посредником во всех операциях между клиентом и сервером , выполняет координирующую роль администратора при передаче данных . А также именно Windows хранит информацию о всех интерфейс ах серверов , здесь существует структурированное хранилище для этих целей . Также Windows выполняет регистрацию этих интерфейсов и отвечает на запросы IID от клиентов . Кроме того Windows содержит буфер обмена информацией между клиентом и сервером . Блок OLE A utomation производит непосредственное соединение сервера и клиента и обеспечивает их взаимодействие. Данные могут передаваться через буфер обмена Widows , а также непосредственно между методами и объектом , но этот способ считается не корректным поскольку не позволяет перемещать OLE объект. OLE клиент (контроллер ) должен , кроме естественно вызовов самих методов OLE , обеспечивать корректную обработку всех сообщений в обратном направлении (от сервера ), Клиент состоит из трех взаимосвязанных частей : блок запроса IID для интерфейса объекта, блок обработки О LE документа и самого OLE объекта . Первая часть выполняет только подготовительную функцию , она запрашивает IID интерфейс для конкретного объекта у Windows 95 , получает этот интерфейс и передает его дальше во вто рой блок . Во втором блоке проиходит сама обработка документа OLE объекта . Именно в этом блоке обрабатываются такие события как активация извне и активация изнутри . Применяя при этом соответствующие методы обработки этих событий по полученным от первого бло ка интерфейсы . По этим интерфейсам блок производит активизацию методов применяя либо уже заранее известную информацию о параметрах методов и ответной реакции методов на их активацию , либо полученную через интерфейс эту же информацию . Таким образом воздейс т вуя на объект и являясь посредником при передаче информации между методами сервера и объектом . OLE объект это сам документ помещаемый в приложение клиента . Представляет собой самый зависимый элемент во всей структуре взаимодействия . Он сам ни на что не вл ияет , однако на него влияют методы сервера вызываемые клиентом . И на самом деле включает в себя только данные и их структуру . Таким же образом как и структура OLE клиента , должна выглядеть структурная схема той части контроллера автоматически связываемых объектов , которая отвечающая за взаимодействие с механизмом связывания и внедрения Windows 95 . Поскольку , по сути , контроллер должен являться клиентом практически для всех приложений присутствующих в системе , то информация о OLE интерфейсах отдельных прил ожений заранее не известна . По этому эта информация должна быть собрана перед внедрением конкретных объектов , то есть в процессе работы программы . Это вносит свои коррективы в конкретную структурную схему взаимодействия программы с OLE - добавляется блок с бора и интерпретации информации о интерфейсах приложений (рис 2.4). Кроме того схема должна включать в себя блок эмуляции OLE для приложений не предназначенных изначально для OLE взаимодействия. Таким образом произведен синтез структурной схемы взаимодейс твия с механизмом связывания и внедрения ( OLE ). Разработка структуры данных Приступая к разработке структуры данных необходимо разделять данные по критерию возможности доступа до них . Так данные применяемые только в форме должны находится в самой форме , а данные доступ до которых происходит из нескольких форм называются глобальными и обычно помещаются в модуль с применением префикса Public ( для возможности доступа до них из вне ). В этом разделе будет описана структура данных из главного модуля программы в котором хранятся глобальные данные необходимые для всего проекта. Модуль состоит из четырех частей (рис . 2..5), три из которых представляют собой структуры для представления в машинном виде данных о регистрированных приложениях , о документах находящихся в проекте и о функциях применяемых в проекте для работы с документами. В четвертой части находятся данные необходимые для взаимодействия между формами , и нормальной работы контроллера в целом . Данные о регистрированных приложения состоят из следующих часте й : · глобальный номер регистрации - представляет собой сквозную нумерацию всех когда либо зарегистрированных приложений не зависящею от количества установленных и удаленных приложений на данный конкретный момент времени ; · описание - текст описывающий ра боту приложения , составляется пользователем ; · имя файла - указатель на запускаемый файл приложения для работы с ним блока OLE Automation ; · имя приложения - собственное расширенное имя приложения указываемое для удобства работы с программой ; · маска ф айлов - одно или несколько расширений имен файлов документов с которыми может работать зарегистрированное приложение. Данные о документах находящихся в проекте хранятся в следующей структуре : · глобальный номер документа - представляет собой сквозную нуме рацию всех когда либо созданных документов не зависящею от количества созданных и удаленных документов на данный конкретный момент времени ; · описание - текст описывающий документ , составляется пользователем ; · имя файла - путь и имя файла документа ; · время создания документа ; · имя приложения - имя приложения которое обрабатывает этот документ (выбирается из зарегистрированных в программе приложений или стандартный обработчик Windows документа с таким расширением ) ; · иконка - путь и имя иконки для визуального представления документа в окне проекта ; · подпись - текст под иконкой документа в окне проекта ; · координаты документа в окне проекта ; · указатели на исходящие из документа функции OLE в проекте. Наиболее объемными являются данные о функциях OLE содержащихся в проекте , состоящие из следующих переменных : · глобальный номер функции - представляет собой сквозную нумерацию всех когда либо созданных функций не зависящею от количества созданных и удаленных функций на данный конкретный момент време ни ; · описание - текст описывающий функцию , составляется пользователем ; · имя файла - путь и имя файла функции ; · время создания функции ; · функция автомата - вызываемый метод ; · имя приложения - имя приложения которое эту функцию (выбирается из зарег истрированных в программе функций ); · иконка - путь и имя иконки для визуального представления функции в окне проекта ; · подпись - текст под иконкой функции в окне проекта ; · координаты функции в окне проекта ; · флаг автоматического выполнения функции в случае изменения любого входящего в из функцию документа ; · флаг запроса пользователя перед выполнением функции ; · указатели на исходящие функции OLE в проекте ; · указатели на входящие функции OLE в проекте ; · указатели на исходящие из функции доку менты ; · указатели на входящие в функцию документы ; · линковщик документов и функции - строка связывающая документы и функцию в одну строку используемую программой в качестве вызова функции с параметрами. Четвертая общая часть состоящая из различных пере менных необходимых для работы всей программы состоит из следующего : · различные флаги устанавливаемые и снимаемые различными функциями и подпрограммами для разделения ресурсов выделенных программе ; · глобальные переменные определяющие количество документ ов , функций OLE и зарегистрированных приложений на данный момент времени ; · переменные обмена информации (определяющие состояние буфера обмена и структуру данных находящихся в буфере обмена ). Таким образом определены все данные необходимые для работы всей программы в целом . Кроме того в каждой отдельной форме существует область объявления переменных , в которой определяются переменные для работы конкретно этой формы. Существуют также и области объявлений переменных в каждой отдельной функции и подпрограмме для работы этой функции . Такое разделение областей видимости позволяет более гибко управлять данными в программе. Инструкция пользователя по работе с программой П еред запуском программы контроллера программу необходимо инсталлировать ее на жесткий диск . Это может выполнить как специальная программа инсталляции , так и сам пользователь . Нужно установить саму программу в специальную директорию , а специальные DLL -файлы добавить в директорию с системой Windows . Процесс это сложный для начинающего пользователя. По этому рекомендуется доверить его программе инсталляции. После установки программы на диск ее можно запускать , для этого нужна лишь дважды щелкнуть на иконке программы или в главном меню Windows (“ Пуск ” ) выбрать пункт “ Выполнить ” и изменить путь до испо лняемого файла до запускаемого файла контроллера - Controller.exe и нажать кнопку “ ОК ” . После чего программа запустится и на экране появится главная форма программы (окно ). Интерфейс программы позволяет , зная общие принципы построения интерфейса в системе Windows 95 , без особого труда научится пользоваться программой . Кроме того контекстная помощь и использование стандартных клавишных комбинаций для стандартных операций применяемых в системе намного облегчают пользование программой. Основное окно программы состоит из рабочей области и меню , а также меню появляющееся при нажатии правой кнопки мыши (рис . 3.1). Все управление программой обычно осуществляется графическим манипулятором (мышью ) и набором горячих клавиш на клавиатуры , возможно управление только к лавиатурой. Система ниспадающих меню позволяет оперативно управлять процессом проектирования . Меню “ Файл ” состоит из пунктов открытия проекта , сохранения проекта , открытие нового проекта , выхода из программы . Меню “ Правка ” позволяет посредствам буфера обме на информацией обмениваться информацией между проектами , а также изменять текущий проект , копировать объекты в буфер обмена и из него , удалять часть объектов (рис 3.2). Меню “ Создать ” кроме непосредственно прямого выбора в линейке меню , через меню “ Правка ” , можно получить нажав правую кнопку мыши , из него можно выбрать объект (документ или функцию OLE , или зарегистрировать приложение OLE Automation ) который необходимо создать . После выбора объекта запускается редактор свойств выбранного объекта (рис .3.3). К ак видно из иллюстрации , в этих формах все свойства описаны непосредственно в форме . Все свойства документов и функций после заполнения сохраняются в переменных главного модуля . Назначение переменных главного модуля , а значит и назначение свойств объектов были описаны в предыдущем разделе Заполнив эти формы создается заданный объект который можно перемещать указателем мыши . Правой кнопкой мыши можно через возникшее меню всегда изменить свойства объекта (выбрав “ Свойства ” ). Кроме того используется следующие способы управления объектами созданными в процессе проектирования . Возможно объединение объектов в группу , для этого нужно нажав левую кнопку мыши не отпуская обвести те объекты которые объединяются в группу , при отпускании кнопки объекты выделятся в рам к у . С этими выделенными объектами возможно теперь выполнять групповые операции (перемещения , удаления копирования и т.д .) через меню “ Правка ” или по правой кнопки мыши. Над документами также выполняются собственно операции их изменения , то есть в случае при менения программы в конструкторском проектировании , их изменение возможно либо непосредственно приложением которое обрабатывает этот документ , либо через уже созданные OLE функции которые в неявном виде вызывают приложения и обрабатывают документы . Так зап устить функцию OLE можно двойным щелчком левой кнопки мыши на нужной функции . А для запуска приложения обрабатывающего определенный документ нужно дважды щелкнуть мышкой на документе . После работы с конкретным документом вырабатывается событие “ Документ б ыл изменен ” которое должны обрабатывать все исходящие из документа функции OLE (если конечно у них был установлен флаг свойства “ Автоматическое выполнение функции при изменении входного документа ” ). Что влечет за собой выполнение этих функций , то есть изме нение документов исходящих из функции , что в свою очередь может повлечь за собой выполнение других функций . Процесс может стать циклическим (если входные документы будут изменены исходящими функциями ). Чтобы этого не произошло необходимо пользоваться флаг о м “ Запрос пользователя перед выполнением ” в свойствах функции OLE . Установка этого флага повлечет собой запрос пользователю о необходимости выполнения этой функции перед ее выполнением . Тем самым предоставляется возможность пользователю зациклить процесс о братной связью , что иногда необходимо (например , для подбора нужного теплового режима ), а затем прервать его. Перед выходом из программы контроллера , программой будет задан вопрос о необходимости сохранения измененного проекта . Если проект нужен будет в по следующем , его нужно сохранить. Если необходимость в программе контроллера отпала , то ее можно удалить с диска . Однако программа контроллера не снабжена специальным файлом унинсталляции , как это требует стандарт программ для Windows 95 , поскольку для созда ния этого файла программисту необходимо досконально знать всю систему Windows , что сейчас при недостатке информации о Windows (т.к . эта система является относительно новой ) в наших условиях невозможно . По этому для удаления программы с носителя кроме удале ния самой директории программы контроллера необходимо удалить все DLL- файлы из директория Windows самостоятельно . Список всех файлов программы приведен в приложении. КОНСТРУКТОРСКИЕ РАСЧЕТЫ Показатели надежности Основными конструкторскими расчетами для ЭВА , являются расчет надежности устройства и расчет прочности печатной платы . Рассмотрим теоретическое основание этих конструкторских расчетов. Все промышленные изделия характеризуются качеством , то есть совокупностью свойств , которые отличают данное издел ие от других и определяют степень его пригодности для эксплуатации по своему назначению . Для ЭВА это прежде всего совокупность конструкторских , технологических и эксплутационных характеристик . В процессе эксплуатации происходят изменения этих характеристи к в следствии износа и необратимых процессов старения . Таким образом меняется качество изделию во времени , а характеристикой изменения качества во времени является показатель называемый надежностью. Под надежностью понимают свойство изделия выполнять заданн ые функции , сохранять свои эксплутационные показатели в заданных пределах в течении требуемого промежутка времени или требуемой наработки при соблюдении режимов эксплуатации , правил обслуживания , хранения и т.д. Надежность не может быть измерена непосредст венно как любая физическая величина . Она может быть только количественно оценена или предсказана . Для оценки основных показателей надежности используют математический аппарат теории вероятности Показатели надежности неремонтируемых систем . Неремонтируемые системы работают до первого отказа после чего заменяются новыми . Все количественные показатели надежности неремонтируемых систем являются общими и выражаются одними и теми же математическими зависимостями , но их конкретные числовые значения зависят от ре ж имов работы изучаемых систем. Показатели надежности неремонтируемых систем базируются на понятиях функций надежности Р ( t ) и функции отказа Q(t) , связанных зависимостью P(t) = 1- Q(t) . Обе они зависят от времени t . Вероятностью безотказной работы P(t) назыв ают вероятность того , что в заданном интервале времени или пределах заданной наработки t i отказов в системе не возникает , т.е . P(t i ) = P(T>t i ) , где Т - случайная величина характеризующая время наработки системы до возникновения в ней отказа . Соответственно вероятностью возникновения отказа в системе Q(t i ) называется вероятность того , что в период наработки t i в ней обязательно произойдет отказ , т.е . Q ( t i ) = P(T< t i ) . Теоретическое значение вероятности безотказной работы ЭВА удобно определить следующим образ ом : (4.1), где N 1i - число изделий , отказавших во время испытаний на i- том интервале времени ; m = t / t - число интервалов t - время испытания t - продолжительность интервала времени По аналогии с (4.1) статисти ческая вероятность безотказной работы ЭВА (4. 2 ), Естественно , чем больше N , тем более точно соблюдается равенства , и тем точнее становятся значения величин P(t i ) и P ’ (t i ) . Вероятность безотказной работы может быть определена и для произвольного интервала времени ( t 1 ; t 2 ), т.е . не с момента включения системы . В этом случае говорят об условной вероятности безотказной работы системы P ( t 1 ; t 2 ) в период ( t 1 ; t 2 ), имея в ввиду , что в момент времени t 1 система находится в работоспособном состоянии . Условная вероятность P ( t 1 ; t 2 ) определяется соотношением P ( t 1 ; t 2 ) = P ( t 2 ) / P ( t 1 ) (4.3) где P ( t 1 ) и P ( t 2 ) - соответственно значения функций надежности в начале и конце нара ботки. Плотностью распределения наработки до отказа f(t) называют производную по времени от функции отказа Q(t): (4 .4 ) Из (4.4) следует , что величина f(t)dt характер изует безусловную вероятность того , что система обязательно откажет в интервале времени ( t ; t+dt ) при условии что в момент времени t она находилась в работоспособном состоянии. Наиболее распространенным показателем надежности является интенсивность отказо в . Интенсивность отказов ( t ) представляет собой условную вероятность возникновения отказа в системе в некоторый момент времени наработки при условии , что до этого момент а отказов в системе не было . Величина интенсивности определяется отношением : ( t ) = f(t)/ P(t) . Приблизительно ее можно оценить следующим отношением : , где N 1 - число изделий , отказавших при испытаниях в течении времени t N - число изделий , работоспо собных к началу испытаний. Условная работоспособность системы в момент начала наработки можно записать в виде P(0) = 1 . Тогда из (4.3) и (4.4) следует что Аналогично может быть определена условная вероятность Таким образом мы рассмотрели три показателя надежности . Очевидно , что достаточно знать одну (любую ) из них , чтобы определить два других . Таким образом все три показателя являются равноправными . Однако в большинстве случаев предпочтение отдают интенсивности отказов. В качестве показателя надежности используют среднюю наработку до отказа t cp . Средняя наработка до отказа представляет собой математическое ожидание M(t) случайной величины t Вид функций f (t) и P (t) определяется конкретными законами распределения случайной величины t . Средняя наработка до отказа - это ожидаемое время исправной работы системы до первого от каза . Приближенно ее можно оценить так : , где t cp i = (t i - t i-1 ) / 2 (t i ; t i-1 ) - время в начале и конце i- того интервала. Таким образом мы рассмотрели основные пок азатели надежности систем. / 4 / 4.2. Методика расчета надежности На практике чаще всего используется эскизный (ориентировочный ) полный расчет надежности электронной аппаратуры . Расчет надежности нерезервируемой системы состоит в нахождении общей интенси вности отказов , наработки на отказ Т ср и вероятности безотказной работы P(t) . Эскизный расчет надежности нерезервированной системы можно проводить в следующем порядке : · все элементы системы разбиваются по группам с одинаковыми или близкими интенсивностя ми отказов и подсчитывается число элементов N в каждой i- той группе ; · по таблицам приведенным в /4/ определяют значения интенсивности отказов для элементов i -той гру ппы ; · рассчитывают интенсивность отказов системы как сумму произведений N i , c учетом поправочного коэффициента , где m - общее количество групп k - поправочный коэффициент , учитывающий изменение средней интенсивности отказов элементов аппаратуры в зависимости от ее назначения (величина обычно табличная ); · определяют наработк у на отказ ; · рассчитывают зависимость вероятности безотказной работы системы от времени по формуле ; Таким образом производится расчет надежности. 4.3. Методика определения механической прочности ПП На ПП , как правило , устанавливается несколько десятков интегральных схем (ИС ) и электроэлементов ( ЭРЭ ) Пусть на плату воздействует нагрузка Q , ускорение а , необходимо проверить , не приведут ли эти воздействия к возникновению недопустимых напряжений на плате Величина предельно допустимого напряжения G задана . При воздействии на плату нагрузки с ускоре нием , на нее будет действовать деформация изгиба и кручения . Для расчета возникающих напряжений плату принято представлять в виде балочной системы , лежащей на опорах. Для нахождения действующих на плату сил можно предложить следующий алгоритм. Определяем координаты Х i , Y i , i -х элементов на плате - расстояние от осей до центра тяжести элементов (мм ) Определяем равнодействующую приложенных к плате сил где Р i - сила тяж ести i- того элемента , Н ; к - количество элементов , шт. Находим общий центр тяжести приложенных сил и (4.5) где X i и Y i - координаты центра тяжести платы , мм. Определим силу . Действующую на плату : , (4 .6 ) где а - ускорение , воздействующее на плату Рассчитываем реакции в опорах : (4.7) (4.8) где l - расстояние между опорами Вычисляем максимальный изгибающий момент : M max = R A X C (4.9) Определяем крутящий момент крутящий момент : M k = Q d, (4.10) где d - величина смещения центра тяжести от оси симметрии платы (4.11) где b - ширина платы Находим напряжение , вызываемое в плате крутящим моментом : (4.12), где h - толщина платы - коэффициент прочности , равный 0.333. Проверяем в ыполнение равенства (4.13) где - максимально допустимое напряжение в плате Е сли неравенство (4.13) выполняется , то следует заключить , что приложенные нагрузки не приведут к повреждению платы . В случае , если неравенство (4.13) не выполняется , нужно предусмотреть меры , необходимые для дополнительного крепления платы. 4.3. Методика расчета собственных колебаний блока Расчет частоты собственных колебаний блока можно привести , заменив конструкцию его эквивалентной расчетной схемой в виде блочной схемы /5/ . Частоту собственных колебаний прямоугольной пластины для всех случаев закрепле ния ее краев можно определить следующим образом : , (4.14) где а - длина пластины , м ; D - цилиндрическая жесткость пластины , (4.15) Е - модуль упругости ; - коэффициент Пуассона ; q - ускорение свободного падения ; - плотность материала - коэффициент , значение которого зависит от способа закрепления сторон пластины Для удоб ства пользования выражение (4.14) приведем к виду : , ( 4.16 ) где В - частотная постоянная , зависящая от способа закрепления пластины Если пластина не стальная , а выполнена из какого-либо другого материала , то в (4.16) вводится поправочный коэффициент k M на материал где Е и - модуль упругости и плотность применяемого материала ; Е С и С - модуль упругости и плотность стали. Для учета нагрузки при распределенной нагрузке вводят поправочный коэффициент массы элементов , где Q Э и Q Э - масса пластины и масса элементов , равномерно распределенных по пластине ; Таким образом выражение (4.14) для определения частоты собственных колебаний приобретает вид (4.17) Важно , чтобы резонансная частота ПП отличалась от частоты вынужденных колебаний на входе , по крайней мере в два раза . При этом исключается вхождение в резонанс , опасный в вибросистеме. Печатная плата должна обладать значительной усталостной долгове чностью при воздействии вибраций , для этого необходимо , чтобы минимальная частота собственных колебаний платы удовлетворяла условию : , (4.18) где j max - вибрационные перегрузки b - размер короткой стороны платы - безразмерная постоянная , числовое значение которой зависит от значений частоты собственных колебаний и воздействующих у скорений . 4 .5. Расчетная часть В расчетной части проекта в качестве примера конструкторского расчета какой-либо конструкторской единицы представим конструкторский расчет платы усилителя импульсов (УИ ). Текст программы ‘ ***************************** ‘ Main Module Code ‘ ***************************** Option Explicit Option Base 0 Public MenuFrom As Integer Public Canceled As Boolean Public SelectOn As Boolean Public SelectIs As Boolean Public ImageCo As Integer Public MouseX As Integer Public MouseY As I nteger Public TotalDocCo As Integer Public TotalFunCo As Integer Public TotalRegCo As Integer Public CurDocument As Integer Public CurFunction As Integer Public DocumentIsChanged As Boolean Public Type RegistrationType TotalNumber As Long Discription As String FileName As String NameApp As String FileMask As String End Type Public Registrations() As RegistrationType Public RegistrationCo As Integer Public Type DocumentType TotalNumber As Long FileName As String CreateDateTime As Str ing UsedProgramm As Long Discription As String ImageIcon As String ImageText As String X As Integer Y As Integer OutputFunPoints() As Integer OutputFunPointCo As Integer OutputDocPoints() As Integer OutputDocPointCo As Integer End Type Public Documents() As DocumentType Public DocumentCo As Integer Public Type FunctionType TotalNumber As Long FileName As String CreateDateTime As String Path As String UsedProgramm As String AutomatFunction As String AutoExeFlag As Boolean AskBeforeExe As Boolean Discription As String ImageIcon As String ImageText As String X As Integer Y As Integer DocumentsAndFunctionsLink As String InputDocPoints() As Integer InputDocPointCo As Integer OutputDocPoints() As Integer OutputDoc PointCo As Integer InputFunPoints() As Integer InputFunPointCo As Integer OutputFunPoints() As Integer OutputFunPointCo As Integer End Type Public Functions() As FunctionType Public FunctionCo As Integer Public Sub ShowDocumentProperty(DocNumber As Integer) On Error GoTo Err1 MakeDocForm.Label4(0).Caption = FileLen(Documents(DocNumber).FileName) MakeDocForm.Label4(1).Caption = FileDateTime(Documents(DocNumber).FileName) MakeDocForm.Label4(2).Caption = D ocuments(DocNumber).CreateDateTime MakeDocForm.IconText.Text = Documents(DocNumber).ImageText MakeDocForm.IconImage.Picture = LoadPicture(Documents(DocNumber).ImageIcon) MakeDocForm.ImageIconText.Caption = Documents(DocNumber).ImageIcon MakeDocForm.Dis crip.Text = Documents(DocNumber).Discription MakeDocForm.DocumentName = Documents(DocNumber).FileName If Documents(DocNumber).UsedProgramm = -1 Then MakeDocForm.Combo1.ListIndex = RegistrationCo + 1 Else MakeDocForm.Combo1.ListIndex = GetREGIndex(Docu ments(DocNumber).UsedProgramm) End If Exit Sub Err1: Select Case MsgBox("Произошла ошибка при попытке считать файл .", vbAbortRetryIgnore + vbCritical) Case vbAbort End Case vbRetry Resume 0 Case vbIgnore End Select End Sub Public Sub SaveRegCards() Dim FileNumber As Integer Dim a As Integer On Error GoTo Err1 FileNumber = FreeFile Open App.Path & "\RegisterCards" For Output As FileNumber Write #FileNumber, TotalRegCo, RegistrationCo For a = 0 To RegistrationCo With Registrations(a) Write #FileNumber, .TotalNumber, .Discription, .FileName, .NameApp, .FileMask End With Next a Close FileNumber Exit Sub Err1: Select Case MsgBox("Произошла ошибка при попытке записать файл регистрации ." _ & Chr(13) & Chr(10) & Err.Number & Chr(13) & Chr(10) & _ Err.Description, vbAbortRetryIgnore + vbCritical) Case vbAbort End Case vbRetry Resume 0 End Select End Sub Public Sub MemberDocumentProperty(DocNumber As Integer) Documents(DocNumber).ImageText = MakeDocForm.IconText.Text Documents(Do cNumber).ImageIcon = MakeDocForm.ImageIconText.Caption Documents(DocNumber).Discription = MakeDocForm.Discrip.Text Documents(DocNumber).FileName = MakeDocForm.DocumentName.Text Documents(DocNumber).CreateDateTime = MakeDocForm.Label4(0).Caption If MakeDocForm.Combo1.ListIndex = RegistrationCo + 1 Then Documents(DocNumber).UsedProgramm = -1 Else Documents(DocNumber).UsedProgramm = Registrations(MakeDocForm.Combo1.ListIndex).TotalNumber End If End Sub Public Sub SaveProject(ProjectName As S tring) Dim FileNumber As Integer Dim a As Integer Dim b As Integer On Error GoTo Err1 FileNumber = FreeFile Open ProjectName For Output As FileNumber Write #FileNumber, TotalDocCo, TotalFunCo, DocumentCo, FunctionCo For a = 0 To DocumentCo With Do cuments(a) Write #FileNumber, .TotalNumber, .FileName, .CreateDateTime, .UsedProgramm, _ .Discription, .ImageIcon, .ImageText, .X, .Y, .OutputFunPointCo, _ .OutputDocPointCo For b = 0 To .OutputFunPointCo Write #FileNumber, .OutputFunPoints(b) Next b For b = 0 To .OutputDocPointCo Write #FileNumber, .OutputDocPoints(b) Next b End With Next a For a = 0 To FunctionCo With Functions(a) Write #FileNumber, .TotalNumber, .FileName, .CreateDateTime, .UsedProgramm, _ .AutomatFunction, .AutoExeFlag, .AskBeforeExe, .Discription, _ .ImageIcon, .ImageText, .X, .Y, .DocumentsAndFunctionsLink, _ .OutputFunPointCo, .OutputDocPointCo, .InputFunPointCo, _ .InputDocPointCo For b = 0 To .OutputFunPointCo Write #FileNumber, .OutputFunPoints(b) Next b For b = 0 To .OutputDocPointCo Write #FileNumber, .OutputDocPoints(b) Next b For b = 0 To .InputFunPointCo Write #FileNumber, .InputFunPoints(b) Next b For b = 0 To .InputDocPointCo Write #FileNumber, .InputDocPoints(b) Next b End With Next a Close FileNumber Exit Sub Err1: Select Case MsgBox("Произошла ошибка при попытке записать файл проекта ." _ & Chr(13) & Chr(10) & Err.Number & Chr(13) & Chr(10) & _ Err.Description, vbAbortRetryIgnore + vbCritical) Case vbAbort End Case vbRetry Resume 0 End Select End Sub Public Sub LoadRegCards() On Error GoTo Err1 Dim FileNumber As Integer Dim a As Integer FileNumber = FreeFile Open App.Path & "\RegisterCards" For Input As FileNumber Input #FileNumber, TotalRegCo, RegistrationCo If RegistrationCo = -1 Then Close FileNumber Exit Sub End If ReDim Registrations(RegistrationCo) For a = 0 To RegistrationCo With Registrations(a) Input #FileNumber, .TotalNumber, .Discription, .FileName, .NameApp, .FileM ask End With Next a Close FileNumber Exit Sub Err1: Select Case MsgBox("Произошла ошибка при попытке считать файл регистрации ." _ & Chr(13) & Chr(10) & Err.Number & Chr(13) & Chr(10) & _ Err.Description, vbAbortRetryIgnore + vbCritical) Case vbAbort End Case vbRetry Resume 0 Case vbIgnore RegistrationCo = -1 End Select End Sub Public Sub LoadProject(ProjectName As String) On Error GoTo Err1 Dim FileNumber As Integer Dim a As Integer Dim b As Integer FileNumber = FreeFile Ope n ProjectName For Input As FileNumber Input #FileNumber, TotalDocCo, TotalFunCo, DocumentCo, FunctionCo If DocumentCo <> -1 Then ReDim Documents(DocumentCo) For a = 0 To DocumentCo With Documents(a) Input #FileNumber, .TotalNumber, .FileName, .Create DateTime, .UsedProgramm, _ .Discription, .ImageIcon, .ImageText, .X, .Y, .OutputFunPointCo, _ .OutputDocPointCo If .OutputFunPointCo <> -1 Then ReDim .OutputFunPoints(.OutputFunPointCo) For b = 0 To .OutputFunPointCo Input #FileNumber, .OutputFunPoints(b) Next b End If If .OutputFunPointCo <> -1 Then ReDim .OutputDocPoints(.OutputDocPointCo) For b = 0 To .OutputDocPointCo Input #FileNumber, .OutputDocPoints(b) Next b End If End With Next a End If If Functi onCo <> -1 Then ReDim Functions(FunctionCo) For a = 0 To FunctionCo With Functions(a) Input #FileNumber, .TotalNumber, .FileName, .CreateDateTime, .UsedProgramm, _ .AutomatFunction, .AutoExeFlag, .AskBeforeExe, .Discription, _ .ImageIcon, .ImageText, .X, .Y, .DocumentsAndFunctionsLink, _ .OutputFunPointCo, .OutputDocPointCo, .InputFunPointCo, _ .InputDocPointCo If .OutputFunPointCo <> -1 Then ReDim .OutputFunPoints(.OutputFunPointCo) For b = 0 To .OutputFunPointCo Input #FileNumber, .OutputFunPo ints(b) Next b End If If .OutputDocPointCo <> -1 Then ReDim .OutputDocPoints(.OutputDocPointCo) For b = 0 To .OutputDocPointCo Input #FileNumber, .OutputDocPoints(b) Next b End If If .InputFunPointCo <> -1 Then ReDim .InputFunPoints(.InputFunPointCo) For b = 0 To .InputFunPointCo Input #FileNumber, .InputFunPoints(b) Next b End If If .InputDocPointCo <> -1 Then ReDim .InputDocPoints(.InputDocPointCo) For b = 0 To .InputDocPointCo Input #FileNumber, .Inpu tDocPoints(b) Next b End If End With Next a End If Close FileNumber Exit Sub Err1: Select Case MsgBox("Произошла ошибка при попытке считать файл проекта ." _ & Chr(13) & Chr(10) & Err.Number & Chr(13) & Chr(10) _ & Err.Description, vbAbortRetryIgnore + vbCritical) Case vbAbort End Case vbRetry Resume 0 Case vbIgnore FunctionCo = -1 DocumentCo = -1 End Select End Sub Public Function GetREGIndex(TotalNumber As Long) As Integer Dim a As Integer For a = 0 To RegistrationCo If Registrations(a).TotalNumber = TotalNumber Then GetREGIndex = a Exit For End If Next a End Function Public Function GetDOCIndex(TotalNumber As Long) As Integer Dim a As Integer For a = 0 To DocumentCo If Documents(a).TotalNumber = TotalNumber Then GetDOCIndex = a Exit For End If Next a End Function Public Function GetFUNIndex(TotalNumber As Long) As Integer Dim a As Integer For a = 0 To FunctionCo If Functions(a).TotalNumber = TotalNumber Then GetFUNIndex = a Exit For End If Next a End Function Public Sub ShowProject() Dim a As Integer With MainForm For a = 0 To DocumentCo ImageCo = ImageCo + 1 Load .ImageIcon(ImageCo) .ImageIcon(ImageCo).Top = Documents(a).Y .ImageIcon(ImageCo).Left = Documents(a).X .ImageI con(ImageCo).Visible = True .ImageIcon(ImageCo).Enabled = True .ImageIcon(ImageCo).Picture = LoadPicture(Documents(a).ImageIcon) .ImageIcon(ImageCo).Tag = Documents(a).TotalNumber Load .ImageText(ImageCo) .ImageText(ImageCo).Top = Documents(a).Y + 500 .ImageText(ImageCo).Left = Documents(a).X .ImageText(ImageCo).Visible = True .ImageText(ImageCo).Enabled = True .ImageText(ImageCo).Caption = Documents(a).ImageText .ImageText(ImageCo).Tag = 1 Next a End With End Sub ‘ ****************************** ‘ Main Form Code ‘ ****************************** Option Explicit Option Base 0 Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) Dim a As Integer Dim dX As Integer Dim dY As Integer If SelectIs = True Then dX = X - Source.Left dY = Y - Source.Top For a = 0 To ImageCo If ImageIcon(a).BorderStyle = 1 Then If ImageText(a).Tag = 1 Then Documents(GetDOCIndex(ImageIcon(a).Tag)).X = ImageIcon(a).Left + dX Documents(GetDOCIndex(ImageIcon(a).Tag)).Y = Im ageIcon(a).Top + dY End If ImageIcon(a).Left = ImageIcon(a).Left + dX ImageIcon(a).Top = ImageIcon(a).Top + dY ImageText(a).Left = ImageIcon(a).Left ImageText(a).Top = ImageIcon(a).Top + 500 End If Next a Else If ImageText(Source.Index).Tag = 1 Then Documents(GetDOCIndex(Source.Tag)).X = X Documents(GetDOCIndex(Source.Tag)).Y = Y End If Source.Left = X Source.Top = Y ImageText(Source.Index).Left = X ImageText(Source.Index).Top = Y + 500 End If End Sub Private Sub Form_Load() Dim a As Integer LoadRegCards MakeDocForm.Combo1.Clear For a = 0 To RegistrationCo MakeDocForm.Combo1.AddItem Registrations(a).NameApp, a Next a MakeDocForm.Combo1.AddItem "Использовать стандартный обработчик ", Registrati onCo + 1 MakeDocForm.Combo1.ListIndex = RegistrationCo + 1 LoadRegCards ImageCo = -1 LoadProject App.Path & "\pro1.prj" ShowProject SaveProject App.Path & "\pro1.prj" End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then MouseX = X MouseY = Y SelectOn = True With selectrec .Visible = True .Height = 0 .Width = 0 .Left = X .Top = Y End With End If End Su b Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If SelectOn = True Then With selectrec If Y < MouseY Then .Top = Y .Height = MouseY - Y Else .Top = MouseY .Height = Y - MouseY End If If X < MouseX Then .Left = X .Width = MouseX - X Else .Left = MouseX .Width = X - MouseX End If End With End If End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim a As Integer If SelectOn = False Then MouseX = X MouseY = Y If Button = 2 Then MenuMake.Visible = True MenuRegistration.Visible = True MenuPropertyes.Visible = False MenuSeparator.Visible = False If SelectIs = True Then MenuDelete.Visible = True MenuCut.Visible = True MenuCopy.Visible = True Else MenuDelete.Visible = False MenuCut.Visible = False MenuCopy.Visible = False End If ' MenuPaste.Visible = False MenuFrom = -1 MainForm.PopupMenu RightButtonMenuOnForm End If Else SelectOn = False selectrec.Visible = False SelectIs = False For a = 0 To ImageCo If (ImageIcon(a).Top > selectrec.Top) And _ (ImageIcon(a).Left > selectrec.Left) And _ (ImageIcon(a).Top < (selectrec.Top + selectrec.Height)) And _ (ImageIcon(a).Left < (selectrec.Left + selectrec.Width)) Then SelectIs = True ImageIcon(a).BorderStyle = 1 Else ImageIcon(a).BorderStyle = 0 End If Next a End If End Sub Private Sub Form_Unload(Cancel As Integer) SaveProject App.Path & "\pro1.prj" End End Sub Private Sub ImageIcon_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then ImageIcon(Index).Drag End If End Sub Private Sub ImageIcon_MouseUp(Index As Integer, Button As Integer, Shift As Integer , X As Single, Y As Single) If Button = 2 Then MenuMake.Visible = False MenuRegistration.Visible = False MenuPaste.Visible = False MenuPropertyes.Visible = True MenuSeparator.Visible = True MenuFrom = Index PopupMenu RightButtonMenuOnForm End If End Sub Private Sub Menu_Edit_Click() MainForm.PopupMenu RightButtonMenuOnForm End Sub Private Sub MenuDelete_Click() Dim a As Integer If SelectIs = True Then For a = 0 To ImageCo If ImageIcon(a).BorderStyle = 1 Then Delete a End If Next a SelectIs = False Else Delete MenuFrom End If End Sub Private Sub MenuMakeDocument_Click() DocumentCo = DocumentCo + 1 TotalDocCo = TotalDocCo + 1 ReDim Preserve Documents(DocumentCo) Documents(DocumentCo).X = MouseX Documents(DocumentCo).Y = MouseY CurDocument = DocumentCo DocumentIsChanged = True MakeDocForm.Label4(0).Caption = "0" MakeDocForm.Label4(1).Caption = str(Now) MakeDocForm.Label4(2).Caption = str(Now) MakeDocForm.IconText.Text = "Документ " MakeDocForm.IconImage.Pic ture = LoadPicture(App.Path & "\DefDoc.ico") MakeDocForm.ImageIconText = App.Path & "\DefDoc.ico" MakeDocForm.Discrip.Text = "" MakeDocForm.DocumentName = "" Canceled = False MakeDocForm.Show vbModal If Canceled = True Then DocumentCo = Docume ntCo - 1 TotalDocCo = TotalDocCo - 1 ReDim Preserve Documents(DocumentCo) Exit Sub End If MemberDocumentProperty DocumentCo Documents(DocumentCo).TotalNumber = TotalDocCo Documents(DocumentCo).OutputFunPointCo = -1 Documents(DocumentCo).OutputDocPo intCo = -1 ImageCo = ImageCo + 1 Load ImageIcon(ImageCo) ImageIcon(ImageCo).Top = Documents(DocumentCo).Y ImageIcon(ImageCo).Left = Documents(DocumentCo).X ImageIcon(ImageCo).Visible = True ImageIcon(ImageCo).Enabled = True ImageIcon(ImageCo).Picture = LoadPicture(Documents(DocumentCo).ImageIcon) ImageIcon(ImageCo).Tag = Documents(DocumentCo).TotalNumber Load ImageText(ImageCo) ImageText(ImageCo).Top = Documents(DocumentCo).Y + 300 ImageText(ImageCo).Left = Documents(D ocumentCo).X ImageText(ImageCo).Visible = True ImageText(ImageCo).Enabled = True ImageText(ImageCo).Caption = Documents(DocumentCo).ImageText ImageText(ImageCo).Tag = 1 '**************** 1 = Это документ End Sub Private Sub MenuPropertyes_Click() Di m temp As Integer If MenuFrom >= 0 Then If ImageText(MenuFrom).Tag = 1 Then temp = GetDOCIndex(ImageIcon(MenuFrom).Tag) ShowDocumentProperty temp MakeDocForm.Show vbModal MemberDocumentProperty temp ImageText(MenuFrom).Caption = Documents(temp).Imag eText ImageIcon(MenuFrom).Picture = LoadPicture(Documents(temp).ImageIcon) End If Else End If End Sub Private Sub MenuRegistration_Click() RegistrForm.Show vbModal End Sub Public Sub Delete(Index As Integer) Dim a As Integer Dim b As Integer If ImageText(Index).Tag = 1 Then b = GetDOCIndex(ImageIcon(Index).Tag) For a = b To DocumentCo - 1 LSet Documents(a) = Documents(a + 1) Next a DocumentCo = DocumentCo - 1 End If For a = 0 To ImageCo Unload ImageText(a) Unload ImageIcon(a) Next a ImageCo = -1 SaveProject App.Path & "\temp~.prj" LoadProject App.Path & "\temp~.prj" ShowProject End Sub ‘ ******************** ‘ Make doc form code ‘ ******************** Option Explicit Private Sub Cancel_Click() Canceled = True Hide End Sub Private Sub Command1_Click() On Error GoTo Err1 RegDialog2.Flags = cdlOFNHideReadOnly If Combo1.ListIndex <> (RegistrationCo + 1) Then RegDialog2.Filter = "Все файлы |*.*|" & _ Registrations(Combo1.ListIndex).NameApp & "|" & _ Registrations(Combo1.List Index).FileMask Else RegDialog2.Filter = "Все файлы |*.*" End If RegDialog2.ShowOpen DocumentName.Text = RegDialog2.FileName Err1: End Sub Private Sub Command2_Click() On Error GoTo Err1 RegDialog.Flags = cdlOFNFileMustExist + cdlOFNHideReadOnly Reg Dialog.ShowOpen IconImage.Picture = LoadPicture(RegDialog.FileName) ImageIconText = RegDialog.FileName Err1: End Sub Private Sub DocumentName_Change() DocumentIsChanged = True End Sub Private Sub Form_Activate() DocumentIsChanged = False End Sub Private Sub OkButton_Click() Dim ErrorFlag As Boolean Dim tmp As Integer Dim CurObject As Object Dim retShell As Long On Error GoTo Err1 If DocumentName.Text = "" Then MsgBox ("Необходимо заполнить поле ""Документ :""") DocumentName.SetFocus Exit Sub End If If DocumentIsChanged Then ErrorFlag = False tmp = FileLen(DocumentName.Text) If ErrorFlag = True Then tmp = FreeFile Open DocumentName.Text For Output As tmp Close tmp End If End If Hide Exit Sub Err1: If Err.Number = 53 Then ErrorFlag = True Else Select Case MsgBox("Произошла ошибка номер :" & Err.Number & _ Chr(13) & Chr(10) _ & Err.Description, vbAbortRetryIgnore + vbCritical) Case vbAbort End Case vbRetry Resume 0 End Select End If Resume Next End Sub ‘ ******** *************** ‘ registration form code ‘ *********************** Option Explicit Dim CurIndex As Integer Private Sub Browser_Click() On Error GoTo Err1 RegDialog.Flags = cdlOFNFileMustExist + cdlOFNHideReadOnly RegDialog.ShowOpen Path = RegDialog.FileName Err1: End Sub Private Sub Cancel_Click() LoadRegCards Hide End Sub Private Sub Combo1_Click() ShowRegCard Combo1.ListIndex End Sub Private Sub DestroyReg_Click() Dim a As Integer For a = CurIndex To RegistrationCo - 1 LS et Registrations(a) = Registrations(a + 1) Next a RegistrationCo = RegistrationCo - 1 If RegistrationCo > -1 Then ReDim Preserve Registrations(RegistrationCo) If CurIndex > RegistrationCo Then CurIndex = CurIndex - 1 ComboRemake CardShow CurIndex Combo1.ListIndex = CurIndex 'ShowRegCard CurIndex Else EnabledAll RegistrationCo End If EnabledAll RegistrationCo End Sub Private Sub Form_Activate() EnabledAll RegistrationCo If RegistrationCo = -1 Then Exit Sub ComboRemake CurIndex = 0 CardShow CurIndex Combo1.ListIndex = CurIndex End Sub Private Sub NewReg_Click() TotalRegCo = TotalRegCo + 1 RegistrationCo = RegistrationCo + 1 ReDim Preserve Registrations(RegistrationCo) Registrations(RegistrationCo).NameApp = InputBox("Введите имя прило жения ", , "Приложение " + str(RegistrationCo + 1)) If Registrations(RegistrationCo).NameApp = "" Then ReDim Preserve Registrations(RegistrationCo) TotalRegCo = TotalRegCo - 1 RegistrationCo = RegistrationCo - 1 Exit Sub End If Registrations(RegistrationCo).TotalNumber = TotalRegCo EnabledAll RegistrationCo ComboRemake Combo1.ListIndex = RegistrationCo 'ShowRegCard RegistrationCo 'Debug.Print End Sub Private Sub OkButton_Click() MemberCard SaveRegCards Hide End Sub Private Sub Rename_Click() Dim a As Integer Dim str As String a = Combo1.ListIndex str = InputBox("Введите имя приложения ", , Registrations(a).NameApp) If str <> "" Then Registrations(a).NameApp = str ComboRemake Combo1.ListIndex = a 'ShowRegCard a End Sub Private Sub ShowRegCard(NumRegCard As Integer) MemberCard CardShow NumRegCard End Sub Public Sub ComboRemake() Dim a As Integer Combo1.Clear For a = 0 To RegistrationCo Combo1.AddItem Registrations(a).NameApp, a Next a End Sub Public Sub EnabledAll(Yes As Integer) If Yes = -1 Then ComboRemake Browser.Enabled = False DestroyReg.Enabled = False Combo1.Enabled = False Rename.Enabled = False Path.Enabled = False Discrip.Enabled = False ListExt.Enabled = False Path.Text = "" Discrip.Text = "" ListExt.Text = "" Label1.Enabled = False Label2.Enabled = False Label3.Enabled = False Label4.Enabled = False Else DestroyReg.Enabled = True Combo1.Enabled = True Browser.Enabled = True Rename.Enabled = True Pa th.Enabled = True Discrip.Enabled = True ListExt.Enabled = True Label1.Enabled = True Label2.Enabled = True Label3.Enabled = True Label4.Enabled = True End If End Sub Public Sub CardShow(NumRegCard As Integer) Path.Text = Registrations(NumRegCard).FileName ListExt.Text = Registrations(NumRegCard).FileMask Discrip.Text = Registrations(NumRegCard).Discription CurIndex = NumRegCard End Sub Public Sub MemberCard() Registrations(CurIndex).FileName = Path.Text Registrations(CurIndex).FileMask = ListExt.Text Registrations(CurIndex).Discription = Discrip.Text End Sub Приложения рис 1.1 Рис . 2.2 Рис . 3.1. Основное окно программы Рис . 3.2. Меню "Правка " Рис . 3.3. Окно свойств документа
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
- Дядя Беня, а почему нельзя сделать сразу всех людей счастливыми, напечатав денег столько, сколько им надо?
Дядя Беня ласково погладил малыша по головке: "Все эти милые несмышленые дети задают этот наивный вопрос".
А потом дядя Беня стал председателем ФРС США...
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

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

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru