
- •Д. Е. Турчин
- •Лабораторный практикум
- •Кемерово 2014
- •Предисловие
- •Xslt-процессоры.
- •1.2.2. Структура и основные элементы таблицы стилей xslt. Редакторы xslt Структура таблицы стилей xslt. Шаблоны преобразования.
- •Принятие решений и сортировка данных.
- •Выбор методов вывода. Связывание xml-документа с таблицей стилей xslt.
- •Работа с xslt в ms Visual Studio. Отладчик xslt.
- •1.2.3. Работа с xslt на платформе .Net Framework. Класс XmlCompiledTransform Работа с xslt на платформе .Net Framework. Класс XmlCompiledTransform.
- •1.3. Порядок выполнения работы
- •1.4. Контрольные вопросы
- •2.2.2. Понятие события. Объявление и обработка событий. Стандартные обработчики событий Понятие события. Объявление и обработка событий.
- •Стандартные обработчики событий в .Net Framework.
- •2.3. Порядок выполнения работы
- •2.4. Контрольные вопросы
- •3. Работа с интерфейсами в приложениях на языке c#
- •3.1. Цель и задачи работы
- •3.2. Основные теоретические сведения
- •3.2.1. Объявление и реализация интерфейсов Объявление интерфейса в c#. Сравнение интерфейсов и абстрактных классов.
- •Реализация интерфейса. Интерфейсные свойства и индексаторы.
- •Интерфейсы на диаграммах uml. Интерфейсы и отношение реализации.
- •3.2.2. Стандартные интерфейсы .Net Framework. Интерфейсы iComparable, iEnumerable и iEnumertor Стандартные интерфейсы .Net Framework. Интерфейс iComparable.
- •Интерфейсы iEnumerable и iEnumerator. Итераторы
- •Операции is и as.
- •3.3. Порядок выполнения работы
- •3.4. Контрольные вопросы
- •4. Основы работы с шаблонами grasp в приложениях на языке c#
- •4.1. Цель и задачи работы
- •4.2. Основные теоретические сведения
- •4.2.1. Проектирование классов на основе обязанностей. Основные шаблоны grasp Проектирование классов на основе обязанностей.
- •Шаблоны Information Expert и Creator.
- •Шаблоны Low Coupling и High Cohesion.
- •4.2.2. Работа с uml-моделями в Visual Studio Создание проектов моделирования в Visual Studio.
- •Разработка uml-схем классов.
- •Создание кода из uml-схем классов.
- •4.3. Порядок выполнения работы
- •4.4. Контрольные вопросы
- •5. Работа со структурными шаблонами GoF в приложениях на языке c#
- •5.1. Цель и задачи работы
- •5.2. Основные теоретические сведения
- •5.2.1. Понятие и виды структурных шаблонов GoF. Шаблон Адаптер Понятие и виды структурных шаблонов GoF. Шаблон Адаптер.
- •Реализация шаблона Адаптер на языке c#.
- •5.2.2. Шаблон Фасад Шаблон Фасад.
- •Реализация шаблона Фасад на языке c#.
- •5.3. Порядок выполнения работы
- •5.4. Контрольные вопросы
- •6. Работа с поведенческими шаблонами GoF на языке c#
- •6.1. Цель и задачи работы
- •6.2. Основные теоретические сведения
- •6.2.2. Поведенческие шаблоны проектирования. Диаграммы конечных автоматов. Шаблон Состояние Поведенческие шаблоны проектирования. Диаграммы конечных автоматов uml.
- •Шаблон Состояние.
- •6.2.1. Шаблоны Стратегия и Шаблонный метод Шаблон Стратегия.
- •Шаблонный метод.
- •6.3. Порядок выполнения работы
- •Операции запросов linq.
- •7.2.2. Анонимные типы. Расширяющие методы Анонимные типы. Расширяющие методы.
- •7.2.3. Понятие лямбда-выражения. Использование лямбда-выражений в запросах linq Понятие лямбда-выражения. Деревья выражений.
- •Применение лямбда-выражений в запросах linq.
- •7.3. Порядок выполнения работы
- •7.4. Контрольные вопросы
- •8.2.2. Осевые методы linq to xml. Модификация xml-документов с помощью linq to xml Осевые методы linq to xml. Использование xPath.
- •8.3. Порядок выполнения работы
- •8.4. Контрольные вопросы
- •9. Основы создания приложений wpf с использованием языка xaml
- •9.1. Цель и задачи работы
- •9.2. Основные теоретические сведения
- •9.2.1. Назначение и возможности wpf. Создание приложений wpf в Visual Studio
- •9.2.2. Особенности языка разметки xaml. Основные элементы xaml. Свойства и события в xaml
- •9.2.3. Основные элементы управления wpf. Размещение элементов управления. Панель Grid
- •9.2.4. Страничная навигация в приложениях wpf
- •9.3. Порядок выполнения работы
- •9.4. Контрольные вопросы
- •10. Основы привязки и форматирования данных в приложениях wpf
- •10.1. Цель и задачи работы
- •10.2. Основные теоретические сведения
- •10.2.1. Привязка данных wpf. Основные поставщики данных Общие сведения о привязке данных wpf.
- •10.2.2. Шаблоны данных Шаблоны данных.
- •10.3. Порядок выполнения работы
- •10.4. Контрольные вопросы
- •Список литературы Печатные издания.
- •Интернет-ресурсы.
- •Приложение п.1. Пример разработки xml-документа
- •П.2. Некоторые физические формулы и константы
Стандартные обработчики событий в .Net Framework.
В приложениях на языке C# разрешается формировать события с любым списком параметров, но для совместимости программных компонентов с .NET Framework следует придерживаться определённых требований.
Стандартные обработчики событий в .NET Framework должны объявляться следующим образом:
[модификаторы] void Имя_Обработчика(object sender, EventArgs e) { ... } |
Стандартный обработчик событий должен иметь два параметра:
• sender – ссылка на объект, формирующий событие; параметр, передаваемый вызывающим кодом с помощью ключевого слова this;
• e – параметр типа EventArgs, содержащий любую дополнительную информацию, которая требуется обработчику.
Класс EventArgs является базовым классом для классов, содержащих данные о событии. Он предназначен исключительно для передачи аргументов объекта обработчикам событий.
Обычно имена стандартных обработчиков событий формируются следующим образом: имя класса, нижнее подчёркивание, имя события (например, Phone_CallEvent).
Для объявления делегатов событий в .NET Framework предоставляется встроенный обобщённый делегат под названием EventHandler<TEventArgs>, где тип TEventArgs обозначает тип аргумента e.
❒ Пример 2.3. Разработка приложения Windows Forms, содержащего класс с событием и стандартный обработчик.
Требуется разработать приложение Window Forms, которое обеспечивает моделирование объектов класса «телефон» (Phone), содержащего событие «звонок по телефону» (Phone_Call). Для обработки события в классе формы (Form1) должен быть реализовать стандартный обработчик void CallEventHandler(object sender, EventArgs e).
Вызов события Phone_Call будет производиться с помощью элемента управления «таймер» (timer1). Скорость работы таймера, задаваемая свойством Interval, должна иметь возможность регулироваться в процессе работы приложения.
Интерфейс пользователя приложения показан на рис. 2.4.
Рис. 2.4. Интерфейс пользователя приложения
Для передачи аргументов события (длительность разговора) в стандартный обработчик создадим класс CallEventArgs, производный от класса EventArgs (листинг 2.9).
Листинг 2.9. Исходный код класса CallEventArgs |
|
Листинг 2.10. Исходный код класса Phone |
|
Листинг 2.11. Исходный код класса Form1 |
|
Работа приложения при заданном времени моделирования показана на рис. 2.5.
Рис. 2.5. Работа приложения
2.3. Порядок выполнения работы
Данная лабораторная работа предполагает выполнение следующих этапов:
Изучить методические указания к лабораторной работе.
Разработать проект консольного приложения, в котором с помощью делегата реализуется универсальный метод, реализующий численное интегрирование функции одной переменной (табл. 2.1) по методу прямоугольников.
Формула метода прямоугольников:
. (2.3)
Разработать проект консольного приложения, в котором присутствует заданный класс с событием (табл. 2.2). Вызов события осуществляется случайным образом с передачей указанных параметров. Обработчик события задаётся в классе Program консольного приложения.
Разработать проект приложения Windows Forms, в котором имеется класс с событием (табл. 2.2). Вызов события должен производиться с помощью таймера. Для обработки события необходимо использовать стандартные обработчики .NET Framework.
Оформить и защитить отчет по лабораторной работе.
Таблица 2.1
Варианты заданий для реализации универсального метода с помощью делегата
№ вар. |
Функции |
Параметры |
№ вар. |
Функции |
Параметры |
1 |
|
a = 2 b = 3,5 ε = 0,001 |
13 |
|
a = 0 b = 1 ε = 0,005 |
2 |
|
a = 0 b = 1 ε = 0,002 |
14 |
|
a = 0 b = 2 ε = 0,001 |
3 |
|
a = 0 b = 1 ε = 0,005 |
15 |
|
a = 0 b = 2 ε = 0,002 |
4 |
|
a = 0 b = 2 ε = 0,001 |
16 |
|
a = 0 b = 0,5 ε = 0,005 |
5 |
|
a = 0 b = 0,6 ε = 0,002 |
17 |
|
a = 0 b = 1 ε = 0,001 |
6 |
|
a = 0 b = 1 ε = 0,005 |
18 |
|
a = 0 b = 1 ε = 0,001 |
7 |
|
a = 0 b = 1 ε = 0,001 |
19 |
|
a = 0 b = 1 ε = 0,002 |
8 |
|
a = 0 b = 0,5 ε = 0,002 |
20 |
|
a = 2 b = 3 ε = 0,005 |
9 |
|
a = 0 b = 1 ε = 0,005 |
21 |
|
a = 0 b = 3 ε = 0,001 |
10 |
|
a = 0,2 b = 1 ε = 0,001 |
22 |
|
a = 0 b = 1 ε = 0,002 |
11 |
|
a = 0 b = 3 ε = 0,001 |
23 |
|
a = 0,2 b = 1 ε = 0,005 |
12 |
|
a = 0,4 b = 0,6 ε = 0,002 |
24 |
|
a = 0 b = 0,8 ε = 0,002 |
Таблица 2.2
Варианты заданий для создания класса с событием
№ вар. |
Данные для разработки класса с событием |
|
1, 9, 17 |
Банкомат (время, код карты, снимаемая сумма) |
|
2, 10, 18 |
Сейсмостанция (время, координаты эпицентра (x, y), сила землетрясения по шкале Рихтера) |
|
3, 11, 19 |
Интернет-магазин (время покупки, № товара, количество) |
|
4, 12, 20 |
Пожарная сигнализация (время, номер дома, номер квартиры) |
|
5, 13, 21 |
Оплата покупок в супермаркете (время, № кассы, сумма) |
|
6, 14, 22 |
Станция РЛС (время, координаты объекта (x, y), высота объекта) |
|
7, 15, 23 |
Домофон (время вызова, номер квартиры, открытие двери (да, нет)) |
|
8, 16, 24 |
Ремонтная служба цеха (время, номер отказавшего станка, категория сложности ремонта) |
|