Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПро - методичка.pdf
Скачиваний:
34
Добавлен:
16.03.2016
Размер:
847 Кб
Скачать
☆

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

Вариант 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.Какова структура приложения на языке С#?