
- •Д. Е. Турчин
- •Лабораторный практикум
- •Кемерово 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. Некоторые физические формулы и константы
2.4. Контрольные вопросы
Что понимают под делегатом в языке C#?
Для решения каких задач применяют делегаты?
Как объявляется делегат в программе на языке C#?
Какие методы называют универсальными?
Что такое обратный вызов?
Что понимают под событием в языке C#?
Какие методы называют обработчиками событий?
Каков синтаксис объявления события на языке C#?
Как объявляются стандартные обработчики событий на языке C#?
3. Работа с интерфейсами в приложениях на языке c#
3.1. Цель и задачи работы
Цель работы – прибрести умение работать с интерфейсами при разработке приложений на языке C#.
Основные задачи:
научиться описывать собственные интерфейсы на языке C#;
освоить реализацию интерфейсов классами и структурами в программах на C#;
научиться работать со стандартными интерфейсами .NET Framework (IComparable, IEnumerable, IEnumerator).
Работа рассчитана на 6 часов.
3.2. Основные теоретические сведения
3.2.1. Объявление и реализация интерфейсов Объявление интерфейса в c#. Сравнение интерфейсов и абстрактных классов.
Одним из наиболее важных средств языка C# являются интерфейсы, которые позволяют определить, что именно должен делать класс (структура), но не как он должен это делать. Для этого интерфейс должен быть объявлен предком выбранного класса.
Благодаря поддержке интерфейсов в C# может быть в полной мере реализован главный принцип полиморфизма: один интерфейс – множество методов.
Под интерфейсом в языке C# понимают именованный набор сигнатур методов. То есть внутри интерфейса следует перечисление заголовков методов без их реализации.
Интерфейсы в языке C# объявляются с помощью ключевого слова interface. Синтаксис объявления интерфейса аналогичен синтаксису класса и имеет следующий вид:
[атрибуты] [модификаторы] interface Имя_интерфейса [: Предки] { Возвр_тип Имя_метода1([список_параметров]); Возвр_тип Имя_метода2([список_параметров]); . . . Возвр_тип Имя_методаN([список_параметров]); } |
Для интерфейсов могут быть указаны модификаторы new, public (по умолчанию), protected, internal и private. Модификатор new применяется для вложенных интерфейсов.
По соглашению имена всех интерфейсов .NET снабжаются префиксом в виде заглавной буквы «I». При создании собственных специальных интерфейсов также рекомендуется следовать этому соглашению.
Предками интерфейса могут выступать другие интерфейсы.
Помимо методов, в интерфейсах также можно указывать свойства, индексаторы и события.
Модификатор доступа у элементов интерфейса не указывается, поскольку элементы интерфейса всегда являются открытыми. Кроме того, ни один из элементов интерфейса не может быть объявлен с модификаторами virtual и static.
С точки зрения синтаксиса интерфейсы подобны абстрактным классам. Можно отметить следующие отличия интерфейса от абстрактного класса:
если класс наследует абстрактный класс, то он может реализовать лишь некоторые методы родительского абстрактного класса, оставаясь абстрактным классом; класс, наследующий интерфейс, обязан полностью реализовать все методы интерфейса;
абстрактный класс представляет собой начальный этап проектирования иерархии классов, которые в будущем получат конкретную реализацию; интерфейсы задают дополнительные свойства разных иерархий классов;
элементы интерфейса по умолчанию имеют модификатор доступа public и не могут иметь модификаторов, заданных явным образом;
интерфейс не может иметь полей и обычных методов – все элементы интерфейса должны быть абстрактными;
интерфейс не может иметь перегруженных операций, что вызвано возможной несовместимостью с другими языками .NET (например, с Visual Basic .NET, который не поддерживает перегрузку операций).
Интерфейсы чаще всего используются для задания общего поведения объектов различных иерархий. Если определённый набор действий имеет смысл только для какой-то конкретной иерархии классов, реализующих эти действия разными способами, то уместнее задать этот набор в виде виртуальных методов абстрактного базового класса иерархии.
В настоящее время интерфейсы являются незаменимым инструментом в различных шаблонах проектирования, которые позволяют создавать большие, но при этом очень гибкие и расширяемые приложения.