- •ОБЩИЕ ПОЛОЖЕНИЯ
- •1 СТРУКТУРА WINDOWS – ПРИЛОЖЕНИЙ. ОКОННАЯ ПРОЦЕДУРА. ОБРАБОТКА СООБЩЕНИЙ. ФАЙЛ РЕСУРСОВ.
- •2 КОНТЕКСТЫ УСТРОЙСТВ. ВЫВОД ТЕКСТА И ГРАФИКИ.
- •3. СРЕДСТВА ВВОДА ИНФОРМАЦИИ
- •4. ДОЧЕРНИЕ ОКНА УПРАВЛЕНИЯ
- •5. МНОГОЗАДАЧНОСТЬ И МНОГОПОТОЧНОСТЬ
- •6. МНОГООКОННЫЙ ИНТЕРФЕЙС
- •7. РАЗРАБОТКА ДИНАМИЧЕСКИ ПОДКЛЮЧАЕМЫХ БИБЛИОТЕК
- •8 ОСНОВЫ ЯЗЫКА АССЕМБЛЕР
- •Регистры общего назначения позволяют обращаться к своим “младшим” частям (см. рис. 1).
- •Таблица 9.1. Флаги состояния
- •Таблица 2. Системные флаги
- •9 ИСПОЛЬЗОВАНИЕ ЯЗЫКА АССЕМБЛЕР
- •11 ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ С# ПОД .NET.
- •СПИСОК ЛИТЕРАТУРЫ
можно минимизировать или принудительно закрыть приложение. Предусмотреть возможность снятия ловушки.
Вариант 9.
Установить ловушку на сообщения, поступающие от клавиатуры для программы «Калькулятор». Ловушка должна по нажатию определенной комбинации клавиш заменять в программе «калькулятор» иконку в строке заголовка и содержимое самой строки. Повторное нажатие комбинации приводит к возврату исходной информации. Предусмотреть возможность снятия ловушки.
Вариант 10.
Установить ловушку на сообщения от клавиатуры, поступающие во все программы. По нажатию определенной комбинации клавиш в любом активном окне, организовать добавления иконки этого приложения в трей. Предусмотреть возможность снятия ловушки с удалением иконки из трея.
10.5.Контрольные вопросы и задания
1.Что такое ловушка (hook)?
2.Какие шаги необходимо предпринять для внедрения ловушки в чужое приложение?
3.Какие типы сообщений можно перехватить при помощи ловушек?
4.Расскажите алгоритм внедрения ловушки.
5.Какая роль при установки ловушек отводится dll?
6.Каким образом можно снять ловушку с программы?
7.Какие способы внедрения в приложения помимо ловушек Вы знаете?
8.Какие трудности надо преодолеть для внедрения в адресное пространство другого приложения?
11 ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ С# ПОД .NET.
11.1. Цель работы
Ознакомление с .NET – технологией и принципами построения приложений с использованием библиотеки .NET Framework, получение практических навыков по написанию простейших программ на языке С#.
11.2. Указания по подготовке к выполнению лабораторной работы
Необходимо изучить основы .NET – технологии и построения приложений с использованием библиотеки .NET Framework.
При подготовке к работе необходимо изучить конспект лекций по указанной теме, методические указания, а также разделы, указанные в [21, cc. 40-160],
[22, сc.10-160].
11.3. Обзор темы работы
Платформа Microsoft .NET появилась относительно недавно, в 2000 году. Тем не менее, технологические преимущества платформы .NET в совокупности с активной маркетинговой поддержкой приводят к тому, что популярность
.NET неуклонно растет. Выпуск платформы .NET наверняка коснется всех разработчиков программ для Windows. Поэтому чтение курсов, основанных на
.NET, представляется чрезвычайно полезным для студентов: к моменту выпуска студентов из университета у них уже будут знания технологий, с которыми они, скорее всего, будут непосредственно работать.
Общая схема архитектуры .NET
На рис.11.1 представлена общая схема трансляции в .NET
Общая схема архитектуры .NET |
||
|
Source code |
|
|
Compiler |
|
|
IL&Metadata |
|
Class Libraries |
Class Loader |
|
(IL&Metadata) |
|
|
|
|
|
|
JITCompiler |
|
Trusted, |
with optional |
|
verification |
|
|
pre-JITed |
|
Call toan |
|
|
|
code only |
|
uncompiled |
|
|
|
|
ManagedNative Code |
method |
|
|
|
Runtime |
|
|
Engine |
Execution |
|
|
|
|
Рис 11.1 – Общая схема архитектуры .NET
Исходные тексты программ компилируются в специальное промежуточ-
ное представление (Microsoft Intermediate Language, часто употребляется со-
кращение IL или MSIL). Промежуточное представление содержит всю необходимую информацию о программе, но не привязано к какому-либо определенному языку программирования или к машинному коду какой-либо целевой платформы. Для запуска программы необходимо специальное окружение, исполняющее программы, и библиотеки динамической поддержки (execution engine & runtime).
Важной особенностью трансляции в .NET является то, что промежуточное представление не интерпретируется; вместо этого используется механизм компиляции времени исполнения, который генерирует машинный код. Подразумевается, что большинство программ, исполняемых на платформе .NET, будет использовать многочисленные стандартные классы, предоставляющие базовую функциональность (от работы с данными до встроенных механизмов безопасности).
Ниже кратко остановимся на основных преимуществах платформы .NET по сравнению с существующими подходами.
Достоинства платформы .NET
Цельная объектно-ориентированная модель программирования, упрощающая разработку программ
Многоплатформенность приложений
Автоматическое управление ресурсами
Упрощение развертывания приложений
Современная модель безопасности развертывания и сопровождения кода
Полный отказ от реестра!
Платформа .NET основана на единой объектно-ориентированной модели; все сервисы, предоставляемые программисту платформой, оформлены в виде единой иерархии классов. Это решает многие проблемы программирования на платформе Win32, когда большинство функций были сосредоточены в COMобъектах, а некоторые функции необходимо было вызывать через DLL.
Благодаря тому, что промежуточное представление .NET не привязано к ка- кой-либо платформе, приложения, созданные в архитектуре.NET, являются многоплатформенными.
Платформа .NET предоставляет автоматическое управление ресурсами. Это решает многие распространенных проблемы, такие как утечки памяти, повторное освобождение ресурса и т.п. На самом деле, в .NET вообще нет никакого способа явно освободить ресурс!
Одной из наиболее распространенных трудностей при развертывании приложения является использование разделяемых библиотек. Из-за этого установка нового приложения может привести к прекращению работы ранее установленного приложения. В архитектуре .NET установка приложения может свестись к простому копированию всех файлов в определенный каталог. При установке используются криптографические стандарты, которые позволяют придавать разную степень доверия различным модулям приложения. Наконец, приложения .NET не используют реестр Windows — возможность отказаться от реестра достигается за счет использования механизма метаданных.
Недостатки платформы .NET
Замедление при выполнении программ
Привязанность некоторых архитектурных решений .NET к С++ – подобным языкам
Необходимость изменения стандартов для многих языков программирования Естественно, что все преимущества .NET, которые мы перечислили выше, не
могут быть абсолютно бесплатными. Как и у любой другой архитектуры, у
.NET есть свои недостатки.
Самым ощутимым недостатком является существенное замедление выполнения программ. Это неудивительно, так как между исходным языком и машинным кодом вводится дополнительный уровень, MSIL. Однако промежуточное представление .NET с самого начала проектировалось с прицнлом на компиляцию времени исполнения (в отличие, например, от Java bytecode, который разрабатывался с прицелом на интерпретацию).
Это дает некоторые дополнительные возможности по борьбе с замедлением. Например, можно равномерно распределить замедление при запуске, так как обычно компилируется не вся библиотека, а только тот метод, который вызывается, и повторной компиляции одного и того же метода не производится.
Другая проблема .NET заключается в том, что при ее создании основной упор был сделан на С++/Java-подобные языки (например, конструкторы с именем, равным имени метода, запрет множественного наследования и т.п.). Это ограничивает возможности интеграции некоторых языков с более богатыми возможностями, особенно с принципиально отличающимися языками, такими как функциональные языки (ML, Haskell, Scheme) или устаревшие языки (Кобол, PL/I). Во многих случаях разработчикам компиляторов все-таки удается реализовать "проблемные" особенности исходных языков в рамках .NET, пусть даже и не слишком тривиальным образом — достаточно сказать, что уже существуют реализации типичных представителей этих классов языков для платформы .NET. Другое направление связано c развитием самой платформы .NET: например, недавно было заявлено о поддержке платформой .NET механизма параметрического полиморфизма (generics).
Наконец, наблюдается и движение с противоположной стороны: уже сегодня стандарты некоторых языков программирования претерпевают значительные изменения для того, чтобы эти языки могли быть поддержаны в .NET.
11.4. Задание на лабораторную работу
Вариант 1.
Создать приложение с основной формой, на которой расположены два окна редактирования. В одно из окон вводиться целое число. При помощи кнопок оправления и стандартного класса перевода чисел осуществить вывод во второе окно редактирования числа в различных система счисления.
Вариант 2.
Нарисовать в центре формы прямоугольник. При помощи кнопок управления организовать разные режимы заливки треугольника: одним цветом, штриховой заливкой, градиентной заливкой. При нажатии клавиш «+» и «-», треугольник должен увеличиваться и уменьшаться.
Вариант 3.
Нарисовать в центре формы приложения линию. При помощи второго (диалогового) окна организовать выбор цвета и стиля линии, которые должны изменяться автоматически при изменении в диалоговом окне.
Вариант 4.
Нарисовать в центре формы приложения эллипс. При помощи второго (диалогового) окна организовать выбор цвета и стиля заливки эллипса, которые должны изменяться автоматически при изменении в диалоговом окне.
Вариант 5.
При помощи клавиш управления курсором перемещать в пределах формы прямоугольник. При каждом перемещении случайным образом менять цвет заливки прямоугольника.
Вариант 6.
Используя градиентную заливку от цвета1 до цвета2, нарисовать прямоугольник. Цвета задаются в отдельном диалоговом окне в виде rgbсоставляющих. Перерисовка прямоугольника осуществляется по нажатию кнопки «принять» в диалоговом окне.
Вариант 7.
При помощи мыши выбрать на форме 3 точки. Используя градиентную заливу нарисовать треугольник по выбранным точкам.
Вариант 8.
Нарисовать график функции sin(x), учитывая масштаб формы. Цвет графика задается путем ввода r,g,b – параметров в специальных окнах редактирования.
Вариант 9.
Нарисовать в центре экрана прямоугольник и эллипс в одних и тех же координатах. Изменяя прозрачность при помощи клавиш клавиатуры, поочередно добиться видимости обеих фигур.
Вариант 10.
Используя градиентную заливку, осуществить вывод в прямоугольную область цветовую палитру, содержащую все основные цвета в порядке: красный – желтый – зеленый – голубой – синий – розовый – красный. При нажатии мыши внутри прямоугольника, в форме должны отражаться составляющие выбранного цвета.
10.5.Контрольные вопросы и задания
1.Какова структура приложения на языке С#?
