WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Pages:     || 2 | 3 | 4 | 5 |   ...   | 7 |
-- [ Страница 1 ] --

Exam 70-310 and 70-320 XML Web Services and Server Components WITH VISUAL BASIC AND VISUAL Exam 70-306 and 70-316 DEVELOPING APPLICATIONS WITH VISUAL BASIC AND VISUAL Press Сертификационный

экзамен 70-306 и 70-316 Разработка Windows-приложений на Microsoft* Visual и Microsoft* Visual Официальное пособие Microsoft для самостоятельной подготовки Москва 2003 УДК 004 М59 Microsoft Corporation М59 Разработка Windows-приложений на Microsoft Visual Basic и Mic rosoft Visual C# Учебный курс с англ. — М.:

дом «Русская 2003. — 512 стр.: ил.

ISBN Этот учебный курс разработке Windows-приложений на Microsoft Visual Basic и Microsoft Visual C# В книге изложены основы объек тно-ориентированного программирования Windows, методы создания поль зовательского интерфейса и работы с базами данных;

значительное внимание уделяется вопросам защиты, тестирования и развертывания Windows-приложе ний, а также их и созданию справочной системы. Освоив теорети ческие материалы и выполнив практические задания курса, вы получите знания и необходимые разработчику Windows-приложений, использующих со временную платформу Microsoft Книга адресована всем тем, кто хочет научиться создавать ния в среде Visual Studio на языках Visual Basic и С#. Настоящий учебный курс также поможет вам самостоятельно подготовиться к сдаче экзаме нов по программе сертификации Microsoft (Microsoft Certified Application Deve loper и Microsoft Certified Solution Developer) № 70-306: Developing and Imple menting Windows-based Applications with Microsoft Visual Basic and Microsoft Visual Studio и 70-316: Developing and Implementing Windows-based Applica tions with Microsoft Visual C# and Microsoft Visual Studio Книга состоит из глав, приложения и предметного указателя, содержит множество иллюстраций и примеров программного кода. На прилагаемом ком пакт-диске находятся словарь терминов, демонстрационные файлы, выполнен ные практические задания и др. справочные материалы.

УДК ББК 32.973.26-018. к изданию по лицензионному договору с Microsoft Corporation.

Вашингтон, США.

Active Directory, ActiveX, JScript, Microsoft, Microsoft Press, Visual Basic, C++, Visual C#, Visual Studio, Windows и Windows NT являются товарными знаками или охраняемыми товарными знаками корпорации Microsoft в США и/или других странах. Все другие товарные знаки собственностью соответствующих фирм.

Все названия компаний, организаций и продуктов, а также имена лиц, используемые в примерах, вымышлены и не имеют никакого отношения к реальным компаниям, органи зациям, продуктам и лицам.

© Оригинальное издание на английском языке, Microsoft Corporation, © Перевод на русский язык, Microsoft Corporation, ISBN © Оформление и подготовка к ISBN торговый лом «Русская Содержание Об этой книге XVI Глава 1 Введение в Framework Занятие Инфраструктура Framework и общеязыковая исполняющая среда Обзор ЕТ Framework Framework и языки программирования Структура.NET-приложений Компиляция и исполнение Резюме Занятие 2. Библиотека базовых классов Типы значений и ссылочные типы Применение типов Framework в приложениях Типы значений Ссылочные типы Применение переменных ссылочных типов и типов значений Операторы Imports и using Ссылки на внешние библиотеки Резюме Занятие 3. Классы и структуры Члены Создание классов Создание структур Добавление членов Вложенные типы Создание экземпляров пользовательских типов Классы и структуры Резюме Занятие 4. Методы Объявление методов Вызов методов Переменные методов Параметры Выходные параметры Необязательные параметры Конструкторы и деструкторы Резюме Занятие 5. Область видимости и уровни доступа Модификаторы доступа к членам Модификаторы доступа к типам Модификаторы доступа для вложенных типов Общие (статические) члены Доступ членам Резюме Занятие 6. Сбор мусора Циклические ссылки Резюме Практикум Применение классов и демонстрация сбора мусора Упражнение 1. Создание класса Demo Упражнение 2. Демонстрация сбора мусора Закрепление материала Глава 2 Создание пользовательского интерфейса Занятие 1. Принципы разработки пользовательского интерфейса Формы, элементы управления и меню Принципы дизайна интерфейса Простота Композиция формы Согласованность Эстетика внешнего вида Резюме Занятие 2. Работа с формами Добавление формы к проекту Применение наследования с формами Назначение стартовой формы Выбор формы Изменение внешнего вида формы Свойства и Text Свойства Font, Cursor и Прозрачность Применение методов формы Методы Show и Метод Activate Метод Hide Метод Применение событий формы События жизненного цикла формы Событие Load События Activated и Deactivated Событие Событие Closing Событие Closed Резюме Занятие 3. Применение элементов управления и компонентов Работа с элементами управления Установка порядка передачи фокуса при нажатии клавиши Tab Вложенные элементы управления и контейнеры Применение элементов управления Group Box и Panel Применение элемента управления TabControI Стыковка и фиксация элементов управления Применение свойства Anchor Применение свойства Dock Применение наборов элементов управления Добавление элементов управления на панель Toolbox Создание обработчиков событий элементов управления Использование провайдеров дополнительных свойств Резюме Занятие 4. Меню Конструирование меню во время разработки Применение компонента MainMenu Разделение элементов меню Доступ к меню с клавиатуры ;

События элементов меню Создание контекстного меню Изменение меню во время выполнения и деактивация команд меню Отображение элементов меню с флажками Отображение элементов меню с переключателями Как сделать элемент меню невидимым Клонирование меню Слияние меню во время выполнения Создание элементов меню во время выполнения Резюме Занятие 5. Проверка данных, вводимых пользователем Проверка на уровне поля Применение свойств элемента управления TextBox Применение событий для проверки на уровне поля Проверка вводимых символов Работа с фокусом ввода Проверка на уровне формы Обработка событий клавиатуры на уровне формы пользователя об ошибках ввода Компонент Отображение об ошибках Резюме Практикум 2. Приложение Virtual Doughnut Factory Упражнение 1. Создание пользовательского интерфейса Упражнение 2. Создание меню Упражнение 3. Создание обработчиков, вводимые данные Закрепление материала Глава 3 Типы и члены Занятие Применение типов данных Типы Framework Целочисленные типы Типы значений с плавающей точкой Нечисловые типы Преобразование типов Неявное преобразование Явное преобразование Применение встроенной функциональности типов данных Упаковка Собственные методы типов данных Резюме Занятие 2. Константы, перечисления, массивы и наборы Константы и перечисления Применение констант Применение перечислений Массивы Объявление и инициализация массивов Многомерные массивы Наборы Класс Другие типы наборов из класса Collections Перебор элементов массивов и наборов Резюме Занятие 3. Реализация свойств Реализация свойств Свойства, доступные для чтения или только для записи Создание свойств, доступных только для чтения Свойства, доступные только для записи Параметризованные свойства Свойства по умолчанию и индексаторы Резюме Занятие 4. Реализация событий и делегатов Делегаты Объявление и генерация событий Реализация обработчиков событий Создание обработчиков событий в Visual Basic Создание обработчиков событий на Visual Создание обработчика для группы событий События с несколькими обработчиками Отключение обработчиков во время выполнения Резюме Практикум 3. Добавление компонентов и реализация членов Упражнение 1. Создание компонента Dough nut Упражнение 2. Подключение класса к пользовательскому интерфейсу Закрепление материала Глава 4 программирование и полиморфизм Занятие Введение в программирование Объекты, члены и абстрагирование Классы как шаблоны объектов Объекты и члены Объектные модели Инкапсуляция Полиморфизм Реализация полиморфизма через интерфейсы Реализация полиморфизма через наследование Резюме Занятие 2. Перегрузка членов Создание перегруженных методов Перегрузка операторов в Visual C# Резюме Занятие 3. Реализация полиморфизма через интерфейсы Определение интерфейсов Интерфейсы как средство достижения полиморфизма Реализация интерфейсов Реализация членов интерфейса на Visual C# Реализация членов интерфейса на Visual Basic Резюме.

Занятие 4. полиморфизма через наследование Наследование Полиморфизм и производные классы Создание производных классов Создание запечатанных классов Наследуемые члены Переопределение унаследованных от базового класса членов базового класса в Visual Basic Сокрытие членов базового класса в Visual,. Обеспечение совместимости с замешенными или скрытыми членами Получение доступа к членам базового класса,. Защищенные члены Абстрактные классы и члены,. Создание абстрактных классов Создание абстрактных членов Наследование от абстрактного класса Резюме Практикум 4. Применение производных классов Упражнение 1. Создание класса строго типизированного набора на основе класса CollectionBase Упражнение 2. Создание дополнительных типов объектов Doughnut Упражнение 3. Реализация метода RemoveStale Закрепление материала Глава 5 Тестирование и отладка Занятие Использование отладочных инструментов Основные типы ошибок Синтаксические ошибки Ошибки периода выполнения Логические ошибки Пошаговое исполнение кода Step Into Step Over Step Out Run To Cursor Set Next Statement Установка точек прерывания Окно Breakpoints Удаление и отключение точек прерывания Применение отладочных инструментов Окно Output Окна Locals, Autos и Watch Резюме Занятие 2. Применение классов Debug и Trace Как работает трассировка Запись данных, генерируемых классами Trace и Debug Набор Listeners Запись трассировочных данных в текстовом формате Запись трассировочных данных в журнал событий Применение трассировочных переключателей Настройка трассировочных переключателей Резюме. Занятие 3. Создание плана блочного тестирования План блочного тестирования Разработка контрольных примеров Составление тестовых данных Резюме Занятие 4. Обработка и исключений обработки исключений Создание обработчиков исключений Генерация исключений Повторная генерация исключений Нестандартные исключения Резюме Практикум 5. Отладка приложения Упражнение Поиск синтаксических ошибок Закрепление материала Глава 6 Доступ к данным с помощью Занятие 3. Обзор ADO.NET Доступ к отсоединенным данным Архитектура данных ADO.NET Объект DataSet Провайдер данных Объект Connection Объект Command Объект Объект DataAdapter Резюме Занятие 2. Доступ к данным Подключение к БД Команды для манипулирования данными Создание и настройка команд Исполнение команд Применение объекта DataReader Создание объекта DataReader Организация простого доступа к данным с помощью объекта DataReader Выборка столбца с помощью объекта DataReader Извлечение типизированных данных с помощью объекта DataReader Работа с несколькими результирующими наборами Формирование запросов SQL во время выполнения Создание и настройка объекта DataAdapter Создание с помощью окна Server Создание DataAdapter с помощью мастера Data Adapter Configuration Wizard Извлечение данных с помощью объектов DataAdapter Предварительный просмотр данных Типизированные объекты DataSet Резюме Занятие 3. Применение объектов DataSet и обновление данных Создание и заполнение DataSet без использования DataAdapter Доступ к файлам Объект DataRelation Извлечение связанных записей.. Содержание Ограничения Ограничения Unique Ограничения Foreign Key Модификация и данных Модификация данных Обновление базы данных Транзакции Обработка ошибок при обновлении базы данных Резюме Занятие 4. Связывание, просмотр и фильтрация данных Связывание данных Провайдеры данных Потребители данных Создание элемента использующего простое связывание данных Связывание данных в период выполнения Управление потоком данных Сложное связывание данных Фильтрация и сортировка данных Создание объектов Фильтрация и сортировка содержимого DataSet Модификация данных через объект DataView Класс View Manager Резюме Занятие 5. Применение ADO.NET Извлечение данных XML из баз данных SQL Server Получение объекта XmlReader с помощью SqlCommand Применение XML с объектами DataSet Чтение XML-данных в объект DataSet Запись содержимого объекта DataSet в формате XML Применение класса Преобразования XSL Резюме Практикум 6. Подключение к базе данных Упражнение Организация доступа к данным и работа с объектом Упражнение Извлечение и обновление данных с помощью объектов DataAdapter и DataSet Упражнение 3. Создание типизированного объекта DataSet с помощью XML Designer Упражнение 4. Работа с мастером Data Form Закрепление материала Глава 7 управления с помощью Framework Занятие Применение Пространства имен Объект Graphics Объекты Brush и Pen Системные кисти, перья и цвета Рисование простых фигур Отображение текста Рисование фигур Создание объекта GraphicsPath Резюме Занятие 2. Создание элементов управления Принципы создания элементов управления Наследование от элементов управления Наследование от класса Наследование от класса Control членов к элементам управления Создание производных элементов управления Реализация новых возможностей в производных элементах управления Модификация внешнего вида существующих элементов управления Создание составных элементов управления Создание формируемых элементов управления Резюме Занятие 3. Решение типичных задач, связанных с разработкой элементов управления Добавление элементов управления на панель Toolbox Назначение значка элементу управления Отладка элементов управления Управление лицензированием элементов управления Загрузка элемента управления в Internet Explorer Резюме Практикум 7. Создание нестандартного элемента управления Упражнение Создание элемента управления Упражнение 2. Тестирование элемента управления Закрепление материала Глава 8 Сложные случаи с применением Framework Занятие Поддержка печати Компонент PrintDocument Создание объекта PrintDocument Как работает поддержка печати Событие Вывод на печать Печать графики Печать текста Печать текста Работа с цветами Применение элемента управления Элемент управления Настройка параметров печати PrintDialog PageSetupDiatog Конфигурирование PageSettings в период выполнения Резюме Занятие 2. Получение доступа к компонентам и их вызов Получение доступа к библиотекам типов и СОМ Создание экземпляров элементов управления ActiveX Доступ к Web-сервисам Вызов функций Windows Резюме. Занятие 3. Реализация дополнительных возможностей доступа Реализация специальных возможностей на этапе проектирования Специальные возможности и логотип «Certified Windows» Поддержка стандартных параметров Поддержка высококонтрастных цветовых схем Наличие документированных возможностей доступа с клавиатуры ко всем функциям программы Поддержка следования за фокусом ввода Использование различных средств отображения информации Специальные возможности и элементы управления Windows Forms Резюме Занятие 4. Создание справочной системы Работа с классом Help Применение компонента Резюме Занятие 5. Глобализация и локализация Определение глобализации и локализации Концепция культур Получение и установка текущей культуры Глобализация приложений Локализация приложений Получение и установка культуры пользовательского интерфейса Создание локализованных форм Проверка информации, вводимой на разных языках Форматирование, зависимое от культуры Отображение текста справа налево Преобразование кодировки символов Резюме Практикум 8. Создание локализованной формы, поддерживающей печать Упражнение Создание формы Упражнение 2. Локализация формы Упражнение 3. Создание поддержки печати,. Закрепление материала,. Глава 9 Конфигурирование и защита сборок Занятие Сборки и ресурсы Сборки Создание сборок с библиотеками классов Ресурсы и ресурсные сборки Создание ресурсных файлов Внедрение ресурсов в сборки Создание ресурсных сборок Создание сопутствующих сборок Извлечение ресурсов во время выполнения Извлечение из сопутствующих сборок ресурсов, специфичных для культуры Разделяемые сборки Закрытые и разделяемые сборки Строгое имя Установка сборок в GAC Резюме. Занятие 2. Конфигурирование и приложений Создание конфигурационного файла Схема конфигурационного файла Динамические свойства Настройка динамических свойств посредством окна Properties Установка и извлечение динамических свойств вручную Оптимизация приложений Оптимизация на этапе разработки Стратегия оптимизации Измерение производительности.

Оптимизация средствами компилятора Резюме Занятие 3. Защита приложений Разрешения Интерфейс Модель защиты, основанная на ролях Объект Principal Императивная защита, основанная на ролях Декларативная защита, основанная на ролях Конфигурирование защиты по правам доступа к коду Разрешения на доступ коду Создание разрешений на доступ к коду Члены класса Императивная по правам доступа к коду Декларативная защита по правам доступа к коду Обработка исключений и императивная защита Резюме Практикум 9. Конфигурирование и защита приложения Упражнение Создание файла Упражнение 2. Зашита приложения Закрепление материала Глава Развертывание Занятие Планирование развертывания приложения Развертывание приложений с помощью XCOPY Создание проекта установочной программы Мастер Setup Project Параметры компоновки установочной программы Output File Name Package Files CAB Size Bootstrapper Compression Подпись Компоновка, распространение и проекта Компоновка Распространение на сменных носителях Распространение через сеть Распространение приложений через Интернет Развертывание проекта Резюме. Занятие 2. Конфигурирование проекта установочной программы Проект установочной программы Регистрация компонентов во время установки Редакторы свойств программы установки Редактор файловой системы Редактор реестра,. Редактор типов файлов Редактор пользовательского интерфейса Редактор нестандартных действий Редактор условий установки Установка сборок в виде компилированных образов Проверка разрешений, запрашиваемых установленной сборкой Резюме Практикум ] 0. Создание установочной программы Упражнение Создание проекта установочной программы Упражнение 2. Настройка установочной программы Упражнение 3. Установка приложения Закрепление материала Приложение и Предметный указатель 06 этой книге Мы рады представить вам учебный курс, посвященный разработке Windows-при ложений на Visual Basic и Visual C# Теоретический материал и практи ческие задания из этой книги помогут вам получить знания и навыки, необходи мые для разработки на языках Visual Basic и С#. Кроме того, вы сможете подготовиться к сдаче экзаменов 70-306 и 70-316 по программе сертификации Microsoft Certified Professional.

Примечание Подробно о программах специалистов Microsoft Cer tified Application Developer и Microsoft Certified Solution Developer рассказано в раз деле «Программа специалистов В разделе «Начало этой главы указаны требования к оборудованию и программному обеспечению, а также параметры сетевой конфигурации, необходи мые для выполнения некоторых практических заданий курса. Внимательно прочи тайте его, прежде чем приступить к изучению материала.

Кому адресована эта книга Данный курс предназначен разработчикам, которым приходится заниматься про ектированием, реализацией и поддержкой Windows-приложений, а также всем, кто желает сдать следующие сертификационные экзамены:

• Developing and Implementing Applications with Microsoft Visual Basic and Microsoft Visual Studio (экзамен 70-306);

• Developing and Implementing Windows-Based Applications with Microsoft Visual C# and Microsoft Visual Studio (экзамен 70-316).

Для изучения курса необходимо:

• уметь конструировать Windows-приложения на языках Visual Basic или Visual C# в среде Visual Studio • знать назначение и уметь применять основные элементы управления и меню в приложениях на Visual Basic и Visual C#;

• понимать связь между элементами и событиями;

• знать основы языка Содержимое компакт-диска Компакт-диск учебного курса ряд вспомогательных материалов, требуе мых при изучении всего курса:

Об этой • электронная книга. На компакт-диске записана полная электронная версия ма териалов учебного курса;

• результаты выполненных Каждая глава этого курса завершается уп ражнениями для закрепления навыков. На компакт-диске вы найдете результа ты упражнения, с которыми можно будет сравнить собственные результаты. Эти материалы также вы можете использовать в качестве подсказки, если в ходе вы полнения упражнения возникнут трудности;

• необходимые файлы. Все необходимые для выполнения практических за даний, есть на компакт-диске;

если потребуется, их можно скопировать оттуда;

• экзаменационные вопросы. Они позволят вам получить представление о сертификационном экзамене, а также выяснить, насколько полно вы усвоили материал этого курса;

• словарь терминов.

Структура книги Для повышения эффективности обучения главы этой книги разбиты на разделы:

• каждая глава начинается с раздела «В этой главе», содержащего краткий обзор обсуждаемых тем;

за ним раздел «Прежде всего» поможет подгото виться к изучению материала главы;

• главы делятся на посвященные отдельным темам. Каждое занятие включает теоретическую и практическую часть.

Для некоторых и упражнений практикумов даны пошаговые — они помечены так же, как этот • в разделе «Резюме» подводятся краткие итоги занятия и формулируются основ ные выводы;

• упражнения в конце занятий (обозначаются значком на полях) позволят вам применить полученные навыки на практике или поэкспериментировать с при ложением-примером, о котором шла речь в занятии. Где возможно, задания организованы так, чтобы к концу практикума получилось готовое приложение, Каждое упражнение отдельному этапу построения приложения;

• каждую главу завершает раздел материала». Отвечая на вопросы этого раздела, вы проверите, насколько твердо усвоили материал.

Приложение «Вопросы и ответы» содержит ответы на все вопросы книги.

Примечания В этой книге используются различные виды примечаний:

• Внимание! — содержит сведения, необходимые для выполнения поставленной Примечание — содержит дополнительную информацию.

• вами символы или команды набраны строчными буквами полужирного начертания.

• Курсив в операторах указывает, что в этом месте следует подставить собственные значения;

элементы кода также напечатаны курсивом.

Об этой книге • Имена файлов и каталогов начинаются с Прописных Букв (за исключением которые вы сами). Кроме особо оговоренных случаев, для ввода имен файлов и каталогов в диалоговых окнах или в командной строке можно использовать строчные буквы.

• Расширения имен файлов набраны строчными буквами.

• Аббревиатуры напечатаны ПРОПИСНЫМИ БУКВАМИ.

• Примеры кода, текста, выводимого на экран и набираемого в командной строке, а также фрагменты файлов выделены шрифтом.

• В угловые скобки, >, заключаются необязательные элементы. Например, на личие в синтаксисе команды элемента показывает, что здесь можно ввести имя файла. Сами скобки вводить не надо.

• Если в тексте соседствуют ключевые и операторы Visual Basic и Visual первым приводится вариант для Visual Basic, а следом в скобках — вариант для Visual C#.

Значками на полях помечены конкретные разделы.

Значок Описание Файлы на компакт-диске. О назначении и расположении нужных файлов рассказывается в сопутствующем тексте Упражнения, выполнив которые вы приобретете необходимые навыки Вопросы для закрепления которые позволят проверить, как вы усвоили материал данной главы. Ответы на них см. в приложении «Вопросы и ответы» в конце книги Клавиатура • Знак между названиями клавиш означает, что их следует нажать одновре менно. Например, выражение обозначает, что нужно нажать клавишу Tab, удерживая нажатой клавишу Alt.

• Запятая между названиями клавиш означает их последовательное нажатие. На пример, выражение «Нажмите F, означает, что надо последовательно нажать и отпустить указанные клавиши. Если же указано «Нажмите то вам придется сначала нажать клавиши Alt и W вместе, потом отпустить их и нажать клавишу L.

• Команды меню можно выбирать с клавиатуры. Для этого нажмите клавишу Alt (чтобы активизировать меню), а затем последовательно — выделенные или под черкнутые буквы в названиях нужных Вам разделов меню или команд. Кроме того, некоторым командам сопоставлены клавиатурные сокращения (они указа ны в меню).

• Флажки и переключатели также можно устанавливать и снимать с клавиатуры.

Для этого достаточно нажать АН, а затем клавишу, соответствующую подчерк нутой букве в названии флажка или переключателя. Кроме того, нажимая кла вишу Tab, Вы можете сделать зону нужного параметра активной, а затем устано вить или снять выбранный флажок или переключатель, нажав клавишу «пробел».

• Работу с диалоговым окном всегда можно прервать, нажав клавишу ESC.

06 этой книге Обзор глав и приложений Этот курс, для самостоятельного изучения, включает материалы, которые помогут вам научиться создавать Web-приложения при помощи Visual Studio Курс рассчитан на последовательное изучение, но не исключена воз можность работы лишь с интересующими вас главами (сориентироваться в струк туре книги вам поможет следующий раздел). В этом случае обращайте внимание на раздел «Прежде всего» в начале каждой главы, где указаны предварительные требо вания и даны ссылки на главы, в которых можно найти материалы для подготовки к выполнению упражнений.

Ниже кратко описаны главы и приложения учебного курса.

• В главе «Об этой собраны сведения о содержании учебника, а также о структурных единицах и условных обозначениях, принятых в нем. Внимательно прочитайте ее: это поможет вам эффективнее работать с материалами курса, а также выбрать интересующие вас темы.

• Глава 1 «Введение в Framework» посвящена знакомству с инфраструкту рой Framework, общеязыковой исполняющей средой и библиотекой базо вых классов Кроме того, в ней разъясняются принципы управления па мятью с помощью сбора мусора, способы создания классов, структур и методов с различной областью действия.

• В главе 2 «Создание пользовательского интерфейса» обсуждаются компоненты и конструирование пользовательского интерфейса. В этой главе идет речь об элементах управления, демонстрируются способы работы с формами и событи ями элементов управления, а также проверки данных, вводимых пользователями, • В главе 3 «Типы и подробно рассматривается создание и применение нестандартных типов. В частности, в этой главе рассказывается, как создают массивы и наборы, а также обсуждается реализация свойства и событий.

• Глава 4 «Объектно-ориентированное программирование и полиморфизм» посвя щена концепциям программирования. Здесь опи сано создание перегруженных типов и реализация полиморфизма с применени ем наследования и интерфейсов.

В главе 5 «Тестирование и отладка описаны приемы отладки при ложений с помощью инструментов, поддерживаемых Visual Studio Здесь рассказывается, как в реальном времени собирать сведения о работе приложе ния с помощью классов Trace и как создать план блочного тестирования приложения, а также описана генерация и обработка исключений.

• В главе 6 «Доступ к данным с помощью ADO.NET» в деталях приемы получения доступа к данных из различных источников при помощи ADO.NET. Разъясняются модели доступа к данным, на исполь зование отсоединенных и подсоединенных а также связывание данных с элементами пользовательского интерфейса. В завершение разбираются при емы работы с данными в формате XML.

• В главе 7 «Создание элементов управления с помощью Framework» речь идет о создании составных, производных и формируемых элементов ния, о рисовании графики с помощью функций GDI+ и приводится методика решения задач, часто возникающих во время создания элементов управления.

В главе 8 «Сложные случаи программирования с применением Framework» рассказано о решении усложненных задач программирования. В частности, рас Об этой книге сматривается создание локализованных приложений, организация поддержки печати, а также получение доступа к компонентам СОМ, вызов функций Win dows API и Web-сервисов. Заключительные разделы этой главы посвящены со зданию справочной системы и реализации возможностей дос тупа.

В главе 9 «Конфигурирование и защита рассматривается создание сбо рок и работа с ресурсами, извлечение из конфигурационных файлов значений для свойств различных объектов приложения, а также реализация системы безо пасности, основанной на ролях, и применение защиты по правам доступа к коду.

• В главе 10 «Развертывание» описано, как создать и сконфигурировать проект установочной программы для приложения, а также разъясняются принципы планирования развертывания приложений.

• В приложении «Вопросы и ответы» приведены ответы на вопросы из разделов «Закрепление материала» всех глав учебного курса.

С чего начать Данный курс предназначен для самостоятельного изучения, поэтому вы можете пропускать некоторые занятия, чтобы вернуться к ним позже. Чтобы определить, с чего начать изучение курса, обратитесь к этой таблице.

Если вы Что делать готовитесь к сдаче см. раздел затем изучите экзамена 70-306 или книгу в удобном вам порядке хотите изучить информацию см. раздел «Материалы для подготовки по определенной теме экзамена к Материалы для подготовки к экзаменам В таблицах перечислены темы сертификационных экзаменов 70-306: and with Microsoft Basic and Microsoft Visual Studio и 70-316: Developing and Implementing with C# Microsoft Visual Studio а также главы настоя щего учебного курса, где обсуждаются соответствующие вопросы.

Примечание Конкретное содержание любого экзамена определяется компанией Microsoft и может быть изменено без предварительного уведомления.

Создание сервисов, для Тема Где обсуждается Глава Занятие Создание с помощью дизайнера форм Размещение элементов управления на Windows-формах 2 2- Отображение форм пользовательского интерфейса 2 2- и реализация переходов между ними Проверка информации, вводимой пользователем 2 2- Об этой книге (окончание) Тема Где обсуждается Глава Занятие Обработка ошибок, связанных с пользовательским интерфейсом 5- Создание встроенной справочной системы Отображение содержимого источника данных 6- Вызов кода из 8- Создание и вызов экземпляров Web-сервисов и других компонентов Глобализация приложений 8- Объявление, реализация и обработка событий поддержки печати Реализация дополнительных возможностей доступа к приложению 8- Создание компонентов и и управление ими Тема Где обсуждается Глава Занятие Создание и модификация Создание управления 7- с данными и манипулирование ими Тема Где обсуждается Глава Доступ к базам данных Microsoft SQL Server и манипулирование 6 2, в них информацией при помощи запросов и хранимых процедур Доступ к хранилищам данных и манипулирование содержащейся 6 2, в них информацией Обработка ошибок, при работе с данными 6 6- Тестирование отладка Тема Где обсуждается Глава Занятие 5 Создание плана блочного тестирования 5- Применение трассировки Отладка, доработка и устранение дефектов кода 5 5- Развертывание Где обсуждается Тема Глава Занятие Планирование развертывания 10 Создание установочной программы, поддерживающей 10 удаление приложения Развертывание ] Добавление сборок в глобальный кэш сборок 9, 10 9-1, 10- Проверка соответствия разрешений, запрошенных 10 10- устанавливаемым приложением, политике безопасности Сопровождение и поддержка Тема Где обсуждается Глава Занятие производительности 5, 9 5-2, 9- Диагностика ошибок и устранение сбоев 5, Конфигурирование и зашита Тема Где обсуждается Глава Занятие Конфигурирование 9 9- Защита Windows-приложений 9- Настройка авторизации 9 9- Начало работы Данный курс предназначен для самостоятельного изучения и содержит упражне ния и практические которые помогут вам освоить разработку Win dows-приложений на Visual Basic и Visual Аппаратное обеспечение Компьютер должен соответствовать приведенной ниже минимальной конфигура ции, а установленное на нем оборудование необходимо выбрать из списка совмес тимых устройств Microsoft Windows XP или Microsoft Windows 2000 Hardware Com patibility List:

• процессор Pentium II 450 МГц;

• 160 Мб памяти (рекомендуется 256 Мб);

• привод CD-ROM или более быстрый;

• 3,5 Гб свободного пространства на жестком в том числе 500 Мб в систем ном разделе;

• монитор SVGA (256 цветов, рекомендуется разрешение 800x600 или более вы сокое);

• мышь Microsoft или другое аналогичное устройство;

Об этой Программное обеспечение Для выполнения упражнений вам потребуется ПО:

• Microsoft Windows XP Edition или Windows 2000;

• Microsoft Visual Studio Professional Edition, Enterprise Developer Edition или Visual Studio Enterprise Подготовка компьютера к выполнению упражнений Прежде всего настройте компьютер согласно инструкциям Установка файлов, необходимых для занятий Чтобы установить на жесткий диск файлы, необходимые для выполнения занятий, выполните действия.

1. Вставьте прилагаемый компакт-диск в дисковод CD-ROM своего компьютера, Примечание Если на вашем компьютере отключена функция автозапуска, сле дуйте указаниям из файла Readme.txt на компакт-диске.

2. Щелкните в открывшемся меню ссылку Lab Folder и выберите папку с данными для интересующего вас упражнения. При необходимости скопируйте эти файлы в рабочий каталог на жестком диске.

Электронная версия книги На прилагаемом компакт диске вы найдете электронную версию этой кото рую можно просматривать через Чтобы установить электронную книгу, выполните следующие действия, 1. Вставьте прилагаемый компакт-диск в дисковод CD-ROM своего компьютера.

Примечание Если на вашем компьютере отключена функция сле дуйте указаниям из файла Readme.txt на компакт-диске.

2. Щелкните в открывшемся меню ссылку Training Kit eBook и указаниям программы.

Примечание Для работы с электронной книгой необходимо наличие прилагае мого компакт-диска в приводе CD-ROM вашего компьютера.

Вопросы экзамена Чтобы установить на диск вопросы пробного экзамена, выполните следу ющие действия.

Вставьте прилагаемый компакт-диск в дисковод CD-ROM своего компьютера.

Примечание Если на вашем компьютере отключена функция автозапуска, сле дуйте указаниям из файла Readme.txt на компакт-диске.

2. Щелкните в открывшемся меню ссылку Exam Questions и нуж ный тест.

Бесплатную пробную версию Visual Studio можно загрузить с Web-сайта Microsoft по адресу msdn.microsoft.com/vstudio. — Прим. ред.

Об этой Программа сертификации специалистов Microsoft Программа сертификации Microsoft (Microsoft Certified Professional, MCP) — отличная возможность подтвердить Ваше знание современных технологий и программных продуктов этой фирмы. Лидер отрасли в области сертификации, Microsoft разработала современные методы тестирования. Экзамены и программы сертификации Вашу квалификацию разработчика или специалиста по решений на основе технологий и программных продуктов Microsoft.

Сертифицированные Microsoft профессионалы квалифицируются как эксперты и высоко ценятся на рынке труда.

Программа сертификации специалистов предлагает 7 типов сертификации по разным специальностям.

Сертифицированный разработчик приложений Microsoft (Microsoft Certified Appli для платформы Microsoft способен разрабатывать и поддерживать приложения уровня департамента, а также серверные и клиент ские компоненты служб для работы предназначенных для использо вания как в Web, так и в корпоративных сетях, • Сертифицированный программных решений Microsoft (Microsoft Certi fied Developer, MCSD) — проектирование и разработка решений для биз неса с использованием средств разработки, платформ и технологий корпорации Microsoft, а также архитектуры Microsoft Windows;

' Сертифицированный специалист Microsoft (Microsoft Professional, MCP) — предполагает доскональное знание по крайней мере одной ОС из семейства Windows или ключевой платформы Microsoft. Такой специалист обладает навы ками внедрения продукта или технологии Microsoft как части бизнес-системы предприятия.

• Сертифицированный системный инженер Microsoft (Microsoft Certified System Engi neer, ~ предполагает умение эффективно анализировать потребности компаний, а также проектировать и реализовать инфраструктуры для бизнес-ре шений базе платформы Windows 2000 и серверных продуктов корпорации Microsoft.

• Сертифицированный системный администратор Microsoft (Microsoft Certified System MCSA) на Windows 2000 — занимается вопросами реализации, управления и устранения неполадок в системах на основе Win dows 2000 и включая Windows Server.

Сертифицированный администратор баз данных Microsoft (Microsoft Certified Data base MCDBA) на Microsoft SQL Server 2000 — разработка физичес кой структуры, логических моделей данных, создание физических БД, создание служб доступа к данным с использованием управление и поддержка БД, настройка и управление системой защиты, мониторинг и оптимизация БД, а также установка и настройка Microsoft SQL Server.

преподаватель Microsoft (Microsoft Certified Trainer, MCT) ~ теоретическая и практическая подготовка для ведения соответствуюших курсов с использованием учебных материалов Microsoft Official Curriculum (MOC) в сер тифицированных центрах технического обучения Microsoft (Microsoft Certified Technical Education Centers, CTECs).

Достоинства сертификации Microsoft Программа сертификации Microsoft — один из самых строгих и полных тестов ки знаний и навыков в области проектирования, разработки и сопровождения про граммного обеспечения. удостаивается лишь тот, кто демонстрирует умение решать конкретные задачи, применяя продукты компании. Программа тес тирования позволяет не только оценить квалификацию специалиста, но и служит ориентиром для всех, кто стремится достичь современного уровня знаний в этой области. Как и любой другой тест или экзамен, сертификация Microsoft показателем определенного уровня знаний специалиста, что важно для работодате ля и всей организации в целом.

Преимущества сертифицированного специалиста Звание Microsoft Certified Professional дает вам:

• официальное признание ваших знаний и опыта работы с продуктами и техноло гиями Microsoft;

• подписку на Microsoft Developer Network. MCP получают скидку на годовую подписку на Microsoft Developer Network (см. в течение первого года действия сертификации (более точную информацию об условиях подписки вы найдете в MCP Welcome Kit);

доступ к технической информации о продуктах Microsoft через защищенную область Web-узла МСР (см.

• доступ к эксклюзивным скидкам на продукты и услуги от определенных компа ний. Сертифицированные специалисты могут узнать больше о предлагаемых скидках на защищенной области сайта МСР в разделе Other Benefits (см.

• право использовать логотип МСР, транскрипт, сертификат, карточку и МСР, чтобы проинформировать ваших клиентов и коллег об имеющемся стату се Microsoft Certified Professional. Электронные файлы логотипа МСР и ваш пер сональный транскрипт могут быть получены через защищенную облает], сайта МСР • на конференции, семинары и специальные мероприятия Microsoft, предназначенные для специалистов;

• свободный доступ к защищенной области Microsoft Certified Professional Maga zine Online — журнала, посвященного вопросам карьеры и профессионального развития сертифицированных специалистов Microsoft, а также к разделам Web сайта журнала со статьями и другой информацией, доступной только на сайте, и регулярно проводимым форумам с участием экспертов Microsoft и других ком паний;

• скидку на членство в Professional Association for SQL Server (PASS, Профессио нальная Ассоциация пользователей SQL Server) — единственной всемирной организации, управляемой пользователями SQL Server и с одобрения Microsoft. Ее членам доступны уникальные возможности уровня своих знаний и навыков. Обратитесь на защищенную область сайта МСР для получения дополни тельной информации том, как воспользоваться данным преимуществом.

Кроме того, в зависимости от типа сертификации и страны, обладатели серти фиката MCSA или MCDBA получают 50-процентную скидку на годовую подписку Об этой книге на компакт-диски с материалами TechNet и TechNet Plus в течение первого года действия сертификации (более точную информацию об условиях подписки вы най дете в МСР Welcome Kit). Эти специалисты также могут получить бесплатный до ступ к большинству материалов, на компакт-дисках, через сайт TechNet Обладатели сертификата MCDBA дополнительно получают бесплатную годовую подписку на журнал SQL Server Magazine, авторами которого являются ведущие специалисты отрасли. Этот журнал, содержащий массу полезной технической ин формации и практических советов, необходим каждому, кто работает с SQL Server.

Список преимуществ сертифицированных преподавателей Microsoft можно най ти на сайте Выигрыш от сертификации Microsoft для работодателей и организаций Сертификация позволяет организациям быстро окупить затраты на технологии Microsoft и извлечь максимум прибыли из этих технологий. Исследования показы вают, что сертификация сотрудников по программам Microsoft:

• быстро окупается счет стандартизации требований к обучению специалистов и методов оценки их квалификации;

• позволяет увеличить эффективность обслуживания клиентов, повысить произ водительность труда и снизить расходы на сопровождение ПО;

• обеспечивает надежные критерии для найма специалистов и их продвижения по службе;

• предоставляет методы оценки эффективности труда персонала;

• обеспечивает гибкие методы переподготовки сотрудников для обучения новым технологиям;

• позволяет оценить партнеров сторонние фирмы.

Требования к соискателям Требования к соискателям определяются специализацией, а также служебными функциями и задачами.

Соискатель сертификата Microsoft должен сдать экзамен, подтверждающий его глубокие знания в области программных продуктов Microsoft. Экзаменационные вопросы, подготовленные с участием специалистов компьютерной отрас ли, отражают реалии применения программных продуктов Microsoft.

• На звание специалиста сдают экзамен по работе с одной из операционных систем. Кандидат может сдать дополнительные экзаме ны, которые подтвердят его право на работу с другими продуктами, инструмен тальными средствами или прикладными программами Microsoft.

• На звание Сертифицированного системного инженера Microsoft сдают семь экза менов: пять ключевых и два по выбору.

• На звание Сертифицированного системного администратора Microsoft сдают че тыре экзамена: три ключевых и один по выбору.

• На звание Сертифицированного администратора баз данных Microsoft сдают три ключевых экзамена и один по выбору.

На звание Сертифицированного разработчика программных решений на основе тех нологий Microsoft сдают четыре экзамена по основам технологий ОС Microsoft Windows и один по выбору.

06 этой книге • На звание Сертифицированного преподавателя Microsoft надо подтвердить свою теоретическую и практическую подготовку для ведения кур сов в авторизованных учебных центрах Microsoft. Участие в требует соответствия требованиям, предъявляемым при ежегодном обновлении статуса преподавателя. Более подробные сведения о ции по этой программе можно получить на сайте http://www.microsqft.com/train в местном отделении компании Microsoft.

Подготовка к экзаменам Предусмотрено три режима подготовки: самостоятельная работа, интерактивный режим, а также занятия с инструктором в авторизованных центрах Самостоятельная подготовка Самостоятельная подготовка — наиболее эффективный метод подготовки для ини циативных соискателей. Издательство Microsoft Press предлагает весь спектр учеб ных пособий для подготовки к экзаменам по программе сертификации специалис тов Microsoft. Учебные курсы для самостоятельного изучения, адресованные спе циалистам компьютерной отрасли, содержат теоретические и практические материалы, мультимедийные презентации, упражнения и необходимое ПО. Серия «Mastering» — это интерактивные обучающие компакт-диски для опытных разра ботчиков. Все эти пособия позволят Вам наилучшим образом подготовиться к сда че сертификационных экзаменов.

Интерактивная подготовка Интерактивная подготовка средствами Интернета — альтернатива занятиям учеб ных центрах. Вы можете выбрать наиболее удобный распорядок занятий в вирту альном классе, где Вы научитесь работать с продуктами и технологиями Microsoft и подготовитесь к сдаче экзаменов. Интерактивное обучение предусмотрено для мно жества курсов Microsoft — от обычных официальных до специальных, доступных только в таком режиме. Интерактивные ресурсы доступны круглосуточно в зованных подготовки.

Сертифицированные центры технического обучения Сертифицированные центры технического обучения (Microsoft Certified Technical Education Center, CTEC) самый простой способ пройти курс обучения пол руко водством опытного инструктора и стать сертифицированным специалистом. Micro soft CTEC — всемирная сеть учебных центров, которые позволяют специалистам повысить свой технический потенциал под руководством сертифицированных ин структоров Microsoft.

Список центров СТЕС в США и Канаде можно получить на Web сайте Техническая поддержка Мы постарались сделать все от нас чтобы и учебный курс, и прилагае мый к нему компакт-диск не содержали ошибок. Издательство Microsoft Press пуб ликует постоянно обновляемый список исправлений и дополнений к своим книгам по адресу http://mspress.microsoft.com/support/.

Если все же у вас возникнут вопросы или Вы захотите поделиться своими пред ложениями или комментариями, в издательство Microsoft Press по од ному из указанных ниже адресов:

TKINPUT@MICROSOFT.COM Почтовый адрес: Microsoft Press Kit:

Developing Web with Visual Basic and One Microsoft Way 98052- Введение в Framework Занятие Инфраструктура Framework и исполняющая среда Занятие 2. Библиотека базовых классов Занятие 3. Классы и структуры Занятие 4. Методы 5. Область видимости и уровни доступа Занятие 6. Сбор мусора В этой главе В этой главе обсуждаются инфраструктура Framework и общеязыковая няющая среда (Common Language Runtime, CLR), а также основы синтаксиса объяв ления классов, структур и методов.

Прежде всего Для освоения материалов этой главы не требуется предварительной подготовки, 2 Введение в Framework Глава Занятие Инфраструктура Framework и общеязыковая исполняющая среда Инфраструктура Framework — это интегрированная управляемая среда для создания и исполнения кода. На этом занятии вы познакомитесь с инфраструкту рой Framework, ее философией и принципами работы.

Изучив материал этого занятия, вы сможете:

описать элементы Framework;

рассказать, из каких частей состоит сборка, и что содержится в каждой из них;

объяснить, как компилируются и исполняются Продолжительность занятия - около 20 минут.

Обзор Framework Framework — это управляемая среда для разработки и исполнения приложе ний, обеспечивающая контроль типов. Эта среда управляет выполнением програм мы: она выделяет память под данные и команды, назначает разрешения программе или отказывает в их предоставлении, начинает исполнение приложения и управля ет его ходом, а также отвечает за освобождение и повторное использование памяти, занятой ресурсами, более ненужными программе. Framework состоит из двух основных компонентов: общеязыковой исполняющей среды (CLR) и библиотеки классов Framework.

CLR можно рассматривать как среду, управляющую исполнением кода и предо ставляющую ключевые функции, такие, как компиляция кода, выделение памяти, управление потоками и сбор мусора. Благодаря использованию общей системы ти пов type system, CTS) CLR выполняет строгую проверку а защита по правам доступа к коду позволяет гарантировать исполнение кода в защищенном окружении.

Библиотека классов Framework содержит набор полезных разрабо танных специально для и для многократного использования. Типы, поддерживаемые являются объектно-ориентированными, полно стью расширяемыми и обеспечивают бесшовную интеграцию приложений с Framework. Библиотека базовых классов обсуждается на занятии 2.

и языки программирования Конструкция Framework обеспечивает межъязыковую совместимость. Проще говоря, компоненты, реализованные с применением Framework, способны взаимодействовать друг с другом независимо от языка, на котором они написаны.

Так, приложение на Visual Basic может обращаться к DLL, написанной на а та, в свою очередь, способна вызвать ресурсы, созданные на управляемом C++ или любом другом.NET-совместимом языке. Межъязыковая совместимость под держивается и для наследования в ООП (объектно-ориентированном программи ровании), например, на основе можно объявлять классы в программах на Visual Basic и наоборот.

Занятие 1 Инфраструктура и CLR Столь высокий уровень межъязыковой совместимости стал возможным благо даря использованию общеязыковой исполняющей среды. Во время написанного на языке высокого уровня (таком, как Visual Basic C# или другом.NET-совместимом языке) генерируются команды языка Microsoft Intermediate Language (MSIL или просто IL). IL — это специальный уровневый язык, который «понимает» CLR. Все DLL и исполняемые файлы содержат команды этого языка, что позволяет им легко взаимодействовать. Стан дарт под названием общеязыковая спецификация (Common Language Specification) определяет минимальный набор правил, которым должны следовать компиляторы для чтобы откомпилированный ими код мог взаимодействовать с Framework.

Использование CTS обеспечивает совместимость типов между тами. Поскольку перед развертыванием и исполнением выпол няется их компиляция в IL-код, все элементарные типы данных будут представле ны типами, поддерживаемыми Так, типы Integer (Visual Basic) и (Visual C#) в представлены типом Применение в обоих языках общей системы типов, которые можно преобразовать друг в друга, позволяет там обмениваться данными, избегая потерь времени на преобразование типов и неизбежных при этом ошибок.

С Visual Studio поставляются языки Visual Basic Visual Visual C++ с управляемыми а также язык сценариев JScript. Есть и другие языки, на которых можно писать управляемый код для Framework. Напри мер, сторонними производителями созданы компиляторы для языков Fortran Perl — и это далеко не полный список. Все они поддерживают межъязыковую совместимость, в том числе при наследовании. Таким образом, про граммы для Framework можно писать на любом из них — созданный код бу дет способен к взаимодействию с кодом для этой платформы, написанным на дру гих языках.

Структура Чтобы понять, как общеязыковая исполняющая среда контролирует исполнение кода, необходимо изучить структуру Основным блоком приложений является сборка (assembly) — самоописываемый набор кода, ресурсов и метаданных. Содержимое сборки описано в ее декларации (manifest), которая включает следующие сведения:

• идентификационные данные сборки, такие, как имя и номер версии;

• полный список открытых типов, поддерживаемых сборкой;

• список сборок, необходимых для работы данной сборки;

• список разрешений на доступ к коду, включающий права требуемые сборкой, и права, в которых ей будет отказано.

У каждой сборки имеется только одна декларация, которая содержит все сведе ния, описывающие эту сборку. Декларация сборки хранится в отдельном файле либо в одном из модулей сборки.

Сборка также содержит один или несколько модулей. Модуль (module) хранит код приложения или библиотеки, а также метаданные, описывающие этот код. Во время проекта в сборку исходный текст, написанный на языке высо кого транслируется в IL-код. Благодаря такому преобразованию свободно взаимодействуют программы на разных языках. Например, можно написать на в Framework Visual приложение, которое вызывает DLL, разработанную с применением язы ка Visual Basic Перед исполнением оба компонента преобразуются в что устраняет проблемы с совместимостью языков высокого уровня.

Кроме того, модули содержат типы. Тип — это шаблон кода, инкапсулирующего некоторые данные и определенной Видов ти пов два: ссылочные типы, или классы, и типы значений, или структуры. Более по дробно о них рассказано на занятии 3. Для каждого типа в декларации сборки со держится описание, понятное CLR. У типа есть поля, свойства и методы, так или иначе участвующие в реализации его Например, у пред ставляющего банковский счет, должны быть поля, свойства и методы, представля ющие все необходимые для реализации банковского счета. Поля предо ставляют память для хранения определенного типа данных. Классу банковского счета, скорее всего, понадобится поле для хранения имени вкладчика. Свойства на поминают поля, но в отличие от них обычно проверяют значения при их установке и извлечении. В нашем примере у класса может быть свойство, хранящее остаток средств на счете. При попытке изменить значение это свойство проверит, не пре вышают ли изменения заданный предел, и, если это так, запретит выполнение опе Методы представляют поведение классов, например действия, которые они выполняют над хранимыми данными, либо изменения пользовательского фейса. Продолжая пример, можно предположить, что у класса банковского счета будет метод который переносит остаток со счета до востребования на де позит, а также метод Alert, извещающий пользователя о снижении остатка средств до критического уровня.

Компиляция и исполнение уже говорилось, во время компиляции вместо двоичных ма шинных кодов генерируется который представляет собой набор низкоуров невых команд, интерпретируемых Приложения развертываются в виде одной или нескольких сборок, которые состоят из исполняемых файлов и DLL, содержа щих IL-код. По крайней мере одна из этих сборок должна содержать исполняемый файл, помеченный как входная точка приложения.

После запуска программы в память загружается первая сборка. Анализируя ее декларацию, определяет требования для работы программы. В частности, CLR анализирует разрешения, запрашиваемые сборкой, и сравнивает их с системной политикой безопасности. Если системная политика безопасности не дает програм ме запрошенные разрешения, приложение не запускается, в противном случае CLR приступает к исполнению кода. Сначала CLR создает процесс, в котором будет ра ботать и начинает исполнять его код. При этом первая порция испол няемого кода (в виде команд языка IL) загружается в память и компилируется JIT (Just-In-Time compiler) в машинные коды, специфичные для данно го компьютера. Машинный код исполняется и остается в памяти, поэтому каждый фрагмент кода компилируется не более одного раза во время исполнения приложе ния. Каждый раз, когда программа вызывает новую часть кода, которая не испол нялась ранее, заблаговременно компилирует ее и сохраняет полу ченный двоичный код в памяти. Такой подход позволяет достичь максимальной производительности приложения, поскольку компилируются только те части про граммы, которые исполняются.

Занятие t Framework и Резюме • Инфраструктура Framework представляет собой основу для программного обеспечения. Она состоит из общеязыковой исполняющей среды поддерживающей основные необходимые для исполнения про грамм, и библиотеки базовых классов со множеством готовых классов, что значительно облегчает разработку программ. Общеязыковая спецификация (CLS) определяет минимальный набор правил, которых должны придерживать ся все языки, использующие Framework, а общая система типов га рантирует совместимость типов в компонентах, написанных на разных языках.

• Основной единицей считается сборка, непременным компо нентом которой является декларация. Декларация описывает сборку, а также один или несколько модулей с исходным кодом приложения.

• Исполняемые файлы в содержат команды языка При загрузке сборки запрошенные ею разрешения проверяются на соответствие системной политике безопасности локального компьютера. Если исполнение приложения разреша ется, первая сборка загружается в память и компилируется в двоичный код, непосредственно для данного компьютера;

этот код остается в памяти до окончания исполнения программы.

g Введение в Framework Глава Занятие 2. Библиотека базовых классов Библиотека базовых классов — это набор объектно-ориентированных типов и интерфейсов, объектные модели и сервисы для решения боль шинства сложных задач программирования, с которыми может столкнуться разра ботчик. По большей части это расширяемые типы, на основе которых разработчи ки могут создавать собственные типы, необходимой им функциональ ностью. На этом занятии вы познакомитесь с некоторыми пространствами имен из библиотеки базовых классов, научитесь добавлять ссылки на нее и применять ее типы и методы.

Изучив материал этого занятия, вы сможете:

описать библиотеку базовых классов чем отличаются ссылочные типы и типы значений;

создавать ссылки на пространства имен;

создавать экземпляры классов и типов значений Framework.

занятия - около 30 минут.

Библиотека базовых классов Framework содержит базовые классы, пред ставляющие большинство сервисов и объектов, необходимых для разработки при ложений. Библиотека классов организована в виде пространств имен.

ство имен (namespace) — это логическая группа, объединяющая типы со функциональностью. Например, в пространстве имен сгруп пированы типы, необходимые для создания Windows-форм и размещаемых на них элементов управления.

Пространства имен, библиотеку базовых классов органи зованы в иерархическую структуру, корневым пространством имен которой явля ется System. Пространства имен в ссылках отделяются друг от друга точками, на пример, так:

Первая конструкция из этого примера ссылается на пространство имен вторая — на пространство имен а третья — на Введение в наиболее востребованные пространства имен, содержащие базовые классы вы найдете втаблице 1-I.

Таблица 1-1. Примеры имен Имя Описание System Корневое пространство имен, содержит множество низкоуровневых типов Framework, в том числе основные типы данных. Поскольку это пространство имен корневое, в нем расположены все остальные пространства имен библиотеки базовых классов Framework System. Co/lections Классы разнообразных контейнеров, такие, как Queue и а также ряд абстрактных классов, полезных для создания собственных классов наборов, например Занятие 2 классов 1-1. (окончание) Имя Описание Классы, применяемые для создания компонентов и их контейнеров, например провайдеры типы атрибутов и классы, преобразование типов System. Data предназначенные для доступа к базам данных и работы с ними, а также дополнительные пространства имен, применяемые для доступа к System. Data, Common Набор классов, предназначенных для совместного использования управляемыми провайдерами данных из System. OieDb Классы управляемых провайдеров данных, применяемых для доступа к базам данных OLE Классы, оптимизированные для взаимодействия с базами данных SQL Server System. Drawing Открывает доступ к GDI+ и предоставляет вспомогательные классы для формирования и графических элементов Типы для файлового ввода-вывода System.

Типы математических функций, извлекающие корни, System. Math вычисляющие тригонометрические функции и т.п.

System. Reflection Обеспечивает получение сведений о типах и динамическое создание типов во время выполнения System. Security Типы, связанные с разрешениями, криптографией и защитой по правам доступа к коду Классы для создания многопоточных приложений System. Threading Типы для создания стандартных Windows-приложений, а также System. Windows. Forms классы, представляющие формы и применяемые с ними элементы управления Можно заметить, название пространства имен отражает предоставляемую им функциональность, что не случайно. Такой подход к именованию облегчает работу с Framework и позволяет быстрее освоится с ее компонентами.

Типы значений и ссылочные типы Как говорилось ранее, в Framework две разновидности типов: ссылочные типы (reference types) и типы значений (value types). Основное различие между ними за ключается в способе доступа к переменным, объявленным с этими типами. Чтобы разобраться в сути этого различия, необходимо кратко пояснить основы динами ческого использования памяти.

Занимаемая приложением память складывается из двух основных компонентов:

стека (stack) и кучи (heap). Стек — это область резервируемая для исполне ния программы. Стек напоминает стопку тарелок: если нужна чистая тарелка, бе рут тарелку из стопки (то есть ту, которую положили последней). С переменными программы происходит то же самое: при вызове функции все объявленные в ней переменные заталкиваются в стек (эта операция называется если эта функ ция вызовет другую то все переменные, объявленные новой функцией, в тоже попадут в стек. Когда вызванная последней, завершится, ее пере менные выходят из области видимости (scope) программы и выталкиваются из сте ка (эта называется pop);

в результате память, занимаемая этими перемен ными, освобождается, и выполнение программы продолжается.

Куча — отдельная область памяти, резервируемая для создания объектов, кото рые предназначены для многократного использования. CLR выделяет в куче па мять под объекты и управляет утилизацией памяти, занятой неиспользуемыми объектами, посредством механизма под названием мусора.

Примечание Процедура сбора мусора обсуждается на занятии 6.

Память под экземпляры типов значений выделяется из стека. При выходе из области видимости переменной, объявленной с типом значения, переменная унич тожается, а занятая ей память освобождается. Для переменной ссылочного типа выделяются сразу две области памяти: в куче — под сам объект и в стеке — под переменную с указателем на этот объект. Когда функция обращается к такой пере та возвращает адрес объекта, на который она ссылается. Когда же пере менная покидает область видимости, уничтожается указатель, но не сам объект. При наличии других ссылок на этот объект он сохраняется, а если все ссылки на объект уничтожены, то он становится добычей сборщика мусора (см. занятие 6).

В качестве примеров типов значений можно привести элементарные типы дан ных: целочисленные булевы символьные (char) и т.п., а также структу ры (struct) и перечислимые типы определяемые пользователем. Большин ство ссылочных типов представлено классами. Кроме того, к ссылочным типам от носятся интерфейсы, делегаты и массивы. Классы и структуры обсуждаются на за нятии 3 этой главы, а остальные ссылочные типы и типы значений — в главе 3.

Примечание Везде в этой где в одном месте показаны примеры ключевых слов Visual Basic и Visual C#, первым приводится пример на Visual Basic, а за ним в скобках — пример на Visual C#.

Применение типов Framework в приложениях В начало кода любого автоматически помещается ссылка на биб лиотеку базовых классов Framework, чтобы приложение о библиоте ке базовых классов и смогло создавать экземпляры типов, которые эта библиотека поддерживает.

Типы значений Для объявления переменных с типом значений в программах на Visual Basic применяется оператор Dim;

чтобы переменную в программе на С#, необ ходимо сначала указать тип, а затем — имя переменной, например, так:

Visual Basic Dim as Integer int mylnteger;

Занятие 2 классов о о Эта команда заставляет исполняющую среду выделить память, необходимую для хранения целочисленной переменной, но не присваивает ей значение. Для опреде ления значений переменных используется оператор присваивания:

Visual mylnteger - Visual = 42;

При желании можно инициализировать переменную при ее объявлении:

Visual Basic Dim mylnteger as Integer - Visual int mylnteger 42:

Примечание В Visual Basic 6 не рекомендуется объявлять и пе ременную в одной и той же строке, однако в Visual Basic этот прием не сни жает производительность.

Ссылочные типы Экземпляры ссылочных типов создаются в два этапа. Вначале объявляется пере менная требуемого типа. При этом память, необходимая для хранения данной переменной, но сам объект пока не создается. Синтаксис объявления объек таков:

Visual Basic Dim As Visual C# myForm;

Предыдущая строка приказывает среде выделить необходимый объем памяти под переменную, которая в данном примере представляет форму, присваивает этой переменной имя но пока не создает в памяти реальный объект формы. Собственно объект создается в ходе второго этапа, называемого со зданием экземпляра (instantiation), например:

Visual = New () Visual myForm - new ();

Ключевое слово New использованное в этом примере, вызывает конст руктор типа System. Windows. Forms. Конструктор — это специальный метод, 0 введение в только в начале жизни объекта и содержащий который необходимо ис полнить, чтобы получить работоспособный объект. Этот код способен, например, назначать свойствам объекта начальные значения. Любые параметры, необходимые конструктору, указываются в скобках в строки. пример иллюст рирует объявление и создание экземпляра класса конструктор которого тре бует передать ему в качестве параметра строку. Подробнее о конструкторах расска зывается на занятии 4.

Visual Basic Dim myWidget as Widget myWidget = New Widget ("This string is required by the constructor") Visual C# Widget myWidget;

myWidget new Widget ("This string is required by the Можно объявить объект и создать его экземпляр в одной и той же строке. При этом выделяется память под объект, и в зарезервированной памяти тотчас создает ся экземпляр объекта. В предыдущих версиях Visual Basic совмещать объявление и создание экземпляров не рекомендуется, так как подобная экономия существенно снижает производительность. Однако Visual Basic и Visual C# оптимизирова ны для подобных операций и выполняют их без потери производительности. Вот пример кода, иллюстрирующий новой формы с одновременным созда нием ее экземпляра:

Visual Basic myForm As New () myForm = ();

Любые переменные — как ссылочных типов, так и переменные с типами значе ния — необходимо перед использованием. Поля классов и струк туры в Visual Basic инициализируются значениями по умолчанию при объяв лении. Переменные числовых типов (например типы значений, представляющие целые числа или числа с точкой) инициализируются перемен ные типа Boolean — значением False, а переменные ссылочных типов — пустой ссыл кой В С# по умолчанию инициализируются значением null, однако лю бая использования неинициализированной переменной с классами и ме тодами закончится ошибкой.

Применение переменных ссылочных типов и типов значений Переменная, объявленная с типом значения, содержит все данные, которые пред ставляет этот тип, тогда как переменная ссылочного типа содержит ссылку на не который объект — это принципиальное отличие между типами значения и ссылоч ными типами. Рассмотрим следующий пример;

Занятие 2 базовых классов Visual Basic Dim x, у As Integer x = у = x x = Каково значение у?

Visual C# int x, у;

х = 15;

У = х;

х 30;

// Каково значение у?

Здесь создаются две целочисленные переменные: х и у. Переменной х присваи вается значение 15, после чего ее значение присваивается переменной В завер шение х присваивается значение 30. А каково значение у? Ответ кажется очевид ным: 15. Так у — разные переменные, модификация одной из них никак не влияет на другую. При исполнении команды у=х значение переменной х копирует ся в у, между этими переменными больше нет никакой связи.

Со ссылочными типами все иначе. Рассмотрим пример, аналогичный преды но использующий переменные ссылочного типа (Form) вместо типа зна чения:

Visual Basic Dim у as x = New () "This is Form 1" у = x x.Text - "This is 2" ' Какое значение вернет Visual C# x,y;

x = new ();

x.Text - "This is Form 1";

у = x;

x.Text "This is Form 2";

// Какое значение вернет Какое значение вернет На этот раз ответ не столь очевиден. Поскольку System. это ссылочный тип, переменная х не содержит фор му, в она хранит лишь ссылку на экземпляр формы. При нении команды х=у исполняющая среда копирует эту ссылку из после чего переменная у ссылается на тот же экземпляр формы, что и переменная х. Посколь ку обе переменные ссылаются на один и тот же экземпляр объекта, они ют одинаковые значения свойств объекта, который они представляют, то есть у. Text вернет «This is Form 2».

2 Введение в Глава Операторы Imports и Теперь вы умеете получать доступ к типам из библиотеки базовых классов Framework, ссылаясь на них по полным именам. Полное имя типа включает все пространства имен, к которым он принадлежит, например:

Однако можно заставить среду разработки «запомнить» пространства имен, кото рые вы используете. Для этого применяются операторы (в Visual Basic и using (в Visual C#). Эти операторы позволяют ссылаться на тип по имени, не все пространства имен, к которым он принадлежит. Так, вмес то System. можно записать просто Form. В Visual Basic опе ратор Imports следует помещать в кода, то есть перед любыми другими опе раторами (за исключением Option). В программах на Visual C# оператор using рас полагается перед ссылками на любые элементы пространств имен, такими, как классы или структуры. Следующий пример демонстрирует использование операто ров и Visual Basic Imports Visual C# using Однако во избежание конфликта все равно придется задавать полные имена для ссылки на типы с одинаковыми именами, импортируемые из разных пространств имен. Таким образом, если вы импортируете из пространств имен и MyNameSpaceTwo классы следует ссылаться на эти классы как на MyName SpaceOne. Widget и MyNameSpaceTwo. Widget соответственно, В программах на подобные конфликты имен удается разрешать при помощи псевдонимов. Псевдоним (alias) позволяет назначить классу другое имя и создается при помощи ключевого слова Visual C# using myAlias Назначив некоторому классу псевдоним, применяйте его в коде для ссылки на экземпляры этого класса, например, так:

Visual // Теперь можно заменить псевдонимом // поэтому следующие строки = new MyAlias = new myAlias:

Ссылки на внешние библиотеки Наверняка вам в программах понадобятся библиотеки, которые не входят в состав Framework: от сторонних разработчиков или ваши собственные. Чтобы полу чить доступ к внешней библиотеке классов, необходимо создать ссылку на нее.

2 базовых классов Как создать ссылку на внешнюю библиотеку В окне Solution Explorer раскройте нужный проект и щелкните правой кнопкой узел References.

2. Из контекстного меню выберите команду Add Reference — откроется диалого вое окно Add Reference.

3. Перейдите на вкладку, где находится библиотека, ссылку на которую следует со здать:.NET-библиотеки расположены на вкладке унаследованные библиотеки — на вкладке а локальные проекты Visual Studio — на вкладке Projects.

4. Найдите необходимую библиотеку и дважды щелкните ее, чтобы к списку Selected components;

в подтверждение своего выбора щелкните ОК.

Резюме • Библиотека базовых классов Framework — это подборка кода, который ре ализует функциональность, полезную для разработки приложений;

ее содержи мое упорядочено при помощи пространств имен, которые содержат типы и дру гие пространства имен, предоставляющие средства для решения общих задач.

• Все типы делятся на ссылочные типы и типы значений: переменная, ная с типом значения, содержит все данные, связанные с этим типом;

перемен ная ссылочного типа содержит указатель на экземпляр объекта этого типа.

• Предопределенные типы значений создаются путем объявления и остаются пу стыми до присвоения им значения. Чтобы получить объект ссылочного типа, необходимо объявить этот тип, а затем создать его экземпляр (совмещение этих действий не ведет к потере производительности).

• Во время присваивания значения одной переменной с типом значения переменной аналогичного типа выполняется копирование данных из первой переменной во вторую. При присваивании значения переменной ссылочного типа другой такой же переменной копируется только ссылка на объект. В ре зультате получаются переменные, ссылающиеся на один и тот же объект.

• Операторы using и Imports позволяют ссылаться на члены пространств имен по сокращенным именам, в результате чего нет необходимости указывать их пол ные имена. Для использования внешней библиотеки требуется создать ссылку на нее.

Введение в Framework Занятие 3. Классы и структуры Итак, вы узнали, что библиотека базовых классов Framework предоставляет богатый набор стандартных типов, облегчающих разработку приложений. Разработ чики получают возможность создавать собственные (пользовательские) типы, реа нестандартные функции. На этом занятии вы познакомитесь с классами и структурами основными разновидностями пользовательских типов.

Изучив материал этого занятия, вы сможете:

создавать новые классы и структуры;

создавать экземпляры классов и структур;

уяснить различия между классами и структурами;

создавать вложенные типы.

Продолжительность занятия - около 30 минут.

Можно сказать, что классы — это шаблоны для объектов. Класс указывает, сколько и каких данных содержит объект, но сам никаких данных не содержит. В реальном мире аналогом классов можно считать абстрактные понятия и собира тельные образы. Возьмем, например, понятие — оно обозначает во обше любой автомобиль. Каждый знает, что у автомобиля есть двигатель, четыре колеса, он характеризуется цветом, расходом топлива и рядом других параметров.

Хотя понятие «автомобиль» включает все эти свойства, а также способность выпол нять ряд действий (например, двигаться, светить фарами и т.д.), оно не обозначает никакой конкретный автомобиль. Понятие «автомобиль» аналогично, например, классу (по-английски «автомобиль» — «саг»), тогда как объектом этого класса можно считать ваш личный автомобиль с его характеристиками — цветом, расхо дом топлива, типом двигателя и колесами. Характеристики машины вашего друга могут отличаться (как и объекты — значениями свойств), но он все равно останется автомобилем (объектом класса Члены Классы описывают свойства и поведение представляемых ими объектов при помо щи членов (members). Членами класса являются все его методы, поля, свойства и события. Поля и свойства содержат сведения об объекте — для автомобиля это цвет, расход топлива, тип коробки передач (автоматическая или ручная) и т.п. Методы представляют действия, которые способен выполнять объект (например, автомо биль может ехать прямо, светить фарами и много чего еще), а события — нечто интересное, происходящее с этим объектом (скажем, у автомобиля перегрелся дви гатель или он попал в аварию).

Примечание В этой главе мы рассмотрим только и методы, а разговор о свой ствах и событиях отложим до главы 3.

Создание классов Новые классы создаются при помощи ключевого слова (Visual Basic или например, так:

Занятие 3 Классы и структуры Visual Basic Public Class Widget Сюда помещают реализацию членов класса.

End Class Visual public class Widget { II Сюда помещают реализацию членов класса.

;

В этом примере ключевое слово Class применяется для создания пользо вательского класса с именем Widget, а ключевое слово Public определяет уровень доступа для этого класса. Более подробно об уровнях доступа рассказано на заня тии 5.

Создание структур Создание структур весьма напоминает создание классов. Для этой цели применяют ключевое слово Structure (Visual Basic или struct например:

Basic Structure Vector Сюда помещается реализация структуры.

End Structure Visual C# public struct Vector { // Сюда помещается реализация структуры.

I Добавление членов В Visual Basic к классу относится все, что располагается между ключевыми Class и End а в С# — все, что заключено между фигурными скобка ми;

то же верно и для структур. К классу или структуре разрешается добавлять чле ны, помещая их между указанными границами. Ниже показан пример класса Widget, к которому добавлен член — поле:

Visual Basic Public Class Widget Public As Integer Spin End Class Visual C# public class Widget Введение в Framework public Spin;

} Теперь у класса Widget есть переменная-член Spin, она объявлена как открытая (Public) и способна хранить числа (int). Добавление к классам других членов, таких, как методы, обсуждается на занятии 4.

Вложенные типы Внутри типов могут быть другие типы, которые называют вложенными (nested). Если говорить о классах, то вложенный класс обычно представляет объект, который со здается и используется родительским классом, внешний класс никогда не создает вложенный объект независимо от его родительского класса. Рассмотрим, напри мер, класс Wheel Ему необходим набор вложенных объектов Spoke ца») для внутреннего пользования. пользователям класса Wheel никогда не потребуется создавать объект Spoke отдельно от объекта Wheel. А вот более конк ретный пример. Допустим, класс Manager, все особенности взаимодействия с объектами Account, при этом никому кроме Account Manager не разрешено создавать объекты Account. Чтобы реализовать такой сцена рий, сделайте класс Account вложенным в Однако это не означает, что внешние объекты не смогут создать экземпляр родительского объекта — это зависит от уровней доступа к родительскому и вложенному классам. Подробнее об этом рассказано на занятии 5, а пока взгляните на пример класса;

Public Class Widget класса Widget помещается здесь, Private Class а здесь - код класса Widgurt.

End Class End Class Visual C# public class Widget !

// Код класса Widget помещается здесь, private class Widgurt :

// а здесь - код класса Widgurt.

;

Создание экземпляров пользовательских типов Процедура объявления пользовательских типов и создания их экземпляров не от личается от таковой для типов из Framework. Чтобы задействовать в своем коде тип значения (структуру) или ссылочный тип (класс), сначала объявите пере менную с этим типом, а затем создайте экземпляр этого типа при помощи ключе вого слова New (new), например, так:

3 Классы и Basic Public Class Demo Public Structure Public X As Integer End Structure Public Class Public Y As Integer Class Public Sub InstantiateTypes () Объявить переменную типа ValueDemo.

Dim As ValueDemo Создать экземпляр типа ValueDemo в стеке.

DemoStructure - New ValueDemo () Переменная готова.

= ' Следующая строка переменную типа ' но не создает экземпляр этого класса.

Dim DemoClass As RefDemo А теперь можно создать объект класса RefDemo...

DemoClass = New RefDemo () '...и значения его членам.

= Sub End Class Visual public class Demo { public struct ValueDemo { public X;

} public class RefDemo { public int Y;

public void InstantiateTypes () { // Объявить переменную типа ValueDemo.

DemoStructure;

// Создать экземпляр типа ValueDemo а стеке.

DemoStructure new ValueDemo (}:

// Переменная готова.

= 15;

// Следующая строка объявляет переменную типа RefDemo, // но не создает экземпляр этого класса.

1 g Введение в Framework Глава DemoClass;

// А теперь можно создать объект класса = RefDemo //... и присвоить значения его членам.

15;

Классы и На первый взгляд классы и структуры очень похожи: у тех и других могут быть чле ны (например поля и методы), тем и другим требуется конструктор для создания экземпляров и, подобно всем типам NET Framework, они происходят от базового типа Object Ключевое отличие между ними в том, что классы — это ссылочные типы, а структуры являются типами значения. С точки зрения низкоуровневых ме ханизмов это означает, что под экземпляры классов (объекты) память выделяется из кучи, а под экземпляры структур — из стека. Благодаря особенностям реализа ции, доступ к стеку быстро и просто, но в стек нельзя поместить много данных без риска снизить производительность приложения.

На практике это означает, что структуры лучше применять для реализации про стых небольших объектов, экземпляры которых содержат сравнительно немного данных, либо для хранения объектов. Классы же лучше подходят для объектов, которые содержат больше данных, либо должны храниться в памяти достаточно долгое время.

Резюме К пользовательским типам относятся структуры и классы. У тех и других име ются члены — поля, свойства, методы и события. Классы — это ссылочные типы, а структуры — типы значения.

• Для создания классов в применяют ключевое слово а в — class. Для создания структур в Visual Basic служит ключевое слово Structure, в для этой цели применяют ключевое слово struct. Как для классов, так и для структур разрешены вложенные типы.

• Процедура объявления и создания экземпляров пользовательского типа не от личается от таковой для предопределенных типов за исключением необходимо сти использования ключевого слова New (new) для создания экземпляров пользо вательских типов значений и ссылочных типов.

Занятие 4 Методы g Занятие 4. Методы Методы делают всю работу, для исполнения которой предназначены классы и структуры: вычисляют значения, изменяют данные, получают вводимую информа цию — в общем, выполняют все действия, поведение объекта. На этом занятии вы научитесь объявлять методы, применять а также со здавать конструкторы и деструкторы для своих классов.

Изучив материал этого занятия, вы сможете:

создавать новые методы;

задавать типы значений, возвращаемых методами;

указывать входные и выходные параметры метода;

создавать конструкторы и деструкторы для классов.

Продолжительность - около 45 минут.

Объявление методов Один из видов членов, которые добавляются к классам, — это определяю щие действия, которые должен выполнять класс. Есть две разновидности те, что возвращают значения (в Visual Basic они называются функциями), и которые никаких значений не возвращают (такие методы в Visual Basic называ ются процедурами). Следующий пример иллюстрирует обе разновидности методов:

Visual Basic Public Sub () ("This is a non-value returning method") End Sub Public Function Add first as Integer, second as Dim Result as Integer Result first + second Returu Result End Function В Visual C# методы подобным образом не делятся, этот язык требует указывать тип возвращаемого значения для всех методов. Если метод ничего не возвращает, при объявлении для него указывают void как тип возвращаемого значения. Вот при мер объявления методов на С#:

Visual C# public void С) ( MessageBox.Show ("This method return a ) public int Add (int first, second) в Framework int Result;

Result = first + second;

} Вызов методов Метод не выполняется, пока его не Чтобы вызвать метод, следует указать его имя и задать необходимые ему параметры, например, так:

Visual Basic ' Так метод Rotate с двумя параметрами Rotate "Degrees") Visual C# // Так вызывают метод Rotate с двумя параметрами Rotate (45, Метод Main — особый, он вызывается сразу после начала исполнения програм мы. К особым методам также относятся деструкторы, которые вызывают во время выполнения непосредственно перед уничтожением объекта. Третий вид особых методов — конструкторы;

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

Переменные методов Говорят, что область видимости переменных, объявленных внутри метода, ограни чена этим методом. Это означает, что по завершении исполнения метода они унич тожаются, а занятая ими память освобождается. О таких переменных говорят, что они вышли из области видимости.

Область объявленных внутри структур метода, еще бо лее ограничена. Например, область видимости переменных, объявленных внутри цикла (в — for), ограничена этим циклом, то есть они доступны лишь в его пределах. Вот пример:

Visual Basic Public Sub () Dim X as Integer X = 1 to Dim Y as Integer Y = X Next X Эта строка вызовет ошибку Sub Visual public void myMethod () { int X;

4 Методы for (X = 1;

X < 101;

Х++) int Y;

Y = X;

} // Эта строка вызовет ошибку (Y.ToString ());

Visual Basic позволяет объявлять внутри метода переменные, которые не унич тожаются по завершении исполнения этого метода. Такие переменные называются статическими переменными метода, они остаются в памяти, сохраняя свое значе ние, в течение нескольких вызовов метода. Чтобы сделать переменную статичес кой, необходимо при ее объявлении указать ключевое слово Static, например, так:

Visual Basic Public Sub myMethod () Static Iterations as Integer При каждом вызове метода значение этой переменной будет увеличиваться на 1.

Iterations End Sub Статическая переменная метода присутствует в памяти постоянно, но доступна только во время выполнения метода, в котором она объявлена. Такие переменные позволяют отслеживать, сколько раз вызывался метод.

Примечание В С# таких переменных нет. В этом языке имеется ключевое слово static, но у него совсем другой смысл, подробнее о нем рассказано на занятии 5.

Параметры Метод может иметь один или несколько параметров. Параметр — это пе редаваемый методу другим методом, который его вызывает. При объявлении мето да список параметров указывают после его имени в круглых скобках, при для каждого параметра необходимо указать его тип. Вот пример метода с параметрами:

Visual Basic Public Sub DisplayName (ByVal name As String, ByVal age As Byte) ("Hello & name & You are & _ age.ToString & years End Sub Visual C# public void DisplayName (string name, byte age) ("Hello + + You + age.ToString () + "years 22 Введение в Framework Глава У этого метода два параметра: один типа String, с локальным именем пате, а вто рой, age, — типа Byte. Их область видимости ограничена методом, вне которого пе ременные не доступны. Подробнее об области видимости — на занятии 5.

Есть два способа передачи параметров — по значению и по ссылке. По умолчанию в Framework параметры передаются по значению. Это что когда пе ременная передается как параметр, создается новая переменная того же типа, в которую копируется значение исходной переменной. Вызываемому методу переда ется новая переменная, поэтому никакие изменения, вносимые методом в пере данное ему значение, не затрагивают исходную переменную. Хотя этот способ пе редачи параметров принят по умолчанию, в Visual Basic разрешается явно указать его при помощи ключевого слова Если параметр передают по ссылке, то вместо значения переменной методу пе редается ссылка на область памяти, в которой оно хранится. Если вызванный ме тод изменит значение, переданное ему как параметр, фактически он изменит зна чение исходной переменной. Чтобы указать, что параметр передается по ссылке, в Visual Basic применяют ключевое слово а в Visual C# — ref. Далее пока заны примеры передачи параметров по ссылке и по значению:

Visual Basic Public Sub () Dim x, у As Integer x у Вызвать метод объявленный ниже.

(x, у) Каковы х и у?

("X = & x.ToString & = & End Sub Public Sub (ByVal p1 As Integer, ByRef p2 As Integer) p1 = p1 + p p2 = p2 + p Sub Visual public void Demol (J { x = 15;

У = 20;

// Вызвать метод объявленный ниже.

Demo2 у);

// значения х и у?

= x.ToString () + "Y = + y.ToString ());

public void Oemo2 (int p1, int p2) !

Занятие 4 Методы р1 р1 + р2;

р2 = р2 + р1;

Здесь создаются две переменные — х и у, которым присваиваются начальные значения. После этого они передаются другому методу в качестве при чем х передается по значению, а у — по ссылке. В вызванном методе х и у представ лены соответственно переменными и р2. Поскольку параметр передан по чению, это просто копия переменной и все действия, выполняемые над ни как не влияют на значение переменной х. После завершения метода пере менная выходит из области видимости, а занятая ею память Ина че обстоит дело с параметром в нем нет, собственно, значения — только ссылка на область памяти, в которой хранится значение переменной у, поэтому при вы полнении команды р2 + изменяется значение, на которое указывает р2. Та ким образом, после завершения метода меняется а значе ние у станет равно 55.

Заметьте, что для параметра ссылочного типа не имеет значения, как он переда ется — по ссылке или по значению, результат окажется одним и тем же. В обоих случаях все действия, выполненные над параметром, отразятся на объекте, кото рый был передан в качестве параметра.

Выходные параметры В Visual C# допускается применение выходных параметров, в Visual Basic Выходной параметр — это тот, который вызванный метод передает (воз вращает) вызвавшему его методу. Выходные параметры удобно использовать в ме тодах, которые должны несколько значений.

Выходные параметры обозначаются ключевым словом out, всегда передаются по ссылке и не требуют инициализации перед использованием. Вот пример использо вания выходных параметров:

Visual C# public void (out string Word public void () { string aWord (out word of the day is + Word);

} Здесь метод вызывает метод у которого есть один выходной параметр Word. Присваивая значение выходному параметру метод самым устанавливает значение переменной Word метода ShowWord.

параметры В Visual Basic у метода могут быть необязательные параметры, а в Visual это не допускается. Необязательные параметры обозначаются ключевым 24 Введение в Framework Глава и замыкают список параметров в объявлении метода. Кроме того, для нео бязательных параметров необходимо определить значения по умолчанию. при мер, иллюстрирующий использование необязательных параметров:

Visual Basic Public Sub Cook time as Integer, Optional temp As Integer = 350) Сюда помещают реализацию метода End Sub Конструкторы и Конструктор — это первый метод, который исполняется при создании экземпляра типа. В Visual Basic конструктор всегда называется Sub New, а в Visual C# имя метода-конструктора совпадает с именем класса. Конструкторы служат для иници ализации экземпляра класса или структуры перед его использованием и не возвра никаких значений. Переопределив конструктор, вы заставите его выполнять нестандартную инициализацию (переопределение методов подробно описано в гла ве 4). Конструктор также способен вызывать другие методы. Вот пример тора:

Visual Basic Public Class aClass Public Sub New () Сюда помещается инициализирующий код Sub End Class Visual public class aClass < public aClass (} i // Сюда помещается инициализирующий код Деструктор (в Visual Basic он называется finalizer) выполняется последним из ме тодов класса и содержит выполняющий «очистку» при уничтожении объекта класса (например, значения счетчика или ресур сы). В Visual Basic деструктору всегда назначается имя Sab Finalize а в Visual С# имя метода-деструктора образуется из имени класса, предваренного тильдой (~).

Вот примеры деструкторов:

Visual Basic Public Class aClass Protected Overrides Sub Finalize () Сюда помещают код для очистки Занятие 4 Методы Sub End Class C# public Class aClass !

() { // Сюда помещают код для очистки \ Примечание В Visual Basic деструкторы необходимо объявлять с ключевым словом Overrides, назначение и использование которого описаны в главе 4.

Недетерминированный характер сбора мусора (см. ниже) не позволяет предска зать когда будет вызван деструктор класса.

Резюме • Методы, выполняющие различные действия над данными, формируют поведе ние класса или где они объявлены. Методы способны (но не обяза ны) возвращать значения. В Visual Basic методы, возвращающие значения, называются функциями, а методы, которые ничего не возвращают, — процедура ми. В Visual C# считается, что метод, не значений, возвращает значение типа void. Чтобы вызвать метод, укажите в коде имя метода с димыми ему параметрами (в скобках).

• У методов могут быть параметры — значения, необходимые для работы метода.

По умолчанию параметры передают по значению. Чтобы передать параметр по необходимо объявить его с ключевым словом ге/(в Visual C#) или (в Visual Basic Параметры ссылочного типа всегда, со всем вытекающими последствиями передаются по ссылке, независимо от объявленного способа пе редачи. В Visual C# у метода могут быть выходные а в Visual Basic — необязательные параметры.

• Конструктор — это первый метод класса, вызываемый при создании его экзем пляра. Конструктор позволяет задавать начальные значения данных и выпол нять другие действия до того, как объект станет доступным для Деструкторы вызываются непосредственно перед уничтожением объекта, их код выполняет необходимую Управлять вызовом деструктора невозможно.

2g в Глава Занятие 5. Область видимости и уровни доступа От уровня доступа зависит, как будут создаваться экземпляры типа и осуществлять ся доступ к его членам. Уровни доступа применяются для данных и методов типа, а также для предоставления внешним объектам доступа к нальности типа. На этом занятии вы узнаете, как модификаторы доступа управля ют доступом к коду, и научитесь применять их при разработке собственных типов.

Изучив материал этого занятия, сможете:

объяснить назначение различных уровней доступа и рассказать, как они влияют на доступ к классам, переменным и вложенным типам;

объяснить, что такое область видимости и как она влияет на исполнение программы.

Продолжительность - около 20 минут.

Модификаторы доступа позволяют управлять доступом к элементам приложе ния. Модификаторы доступа — это ключевые слова, такие, как Public (public), Private (private) или (internal), которые размешаются перед объявлением переменной или типа и управляют уровнем доступа к членам. Модификатор доступа, размещен ный перед объявлением некоторого члена, задает его область видимости (scope), то есть определяет, какой код получит доступ к члену. Модификатор доступа, щенный перед объявлением типа, управляет созданием экземпляров этого типа и областью видимости его членов.

Модификаторы доступа к членам У членов типа также могут быть модификаторы, управляющие их областью види мости. Эти модификаторы перечислены в таблице 1-2.

Таблица 1-2. и задаваемые ими уровни доступа Модификатор Уровень доступа к членам Public (Visual Basic Члены доступны из любого места приложения public (Visual Private (Visual Basic Доступны только членам этого же типа private (Visual (в котором определен данный член) Friend (Visual Basic Доступны из любого типа данной сборки, internal но не из внешних сборок Protected (Visual Basic Доступны только членам этого же типа и типов, protected (Visual производных от него Protected Friend (Visual Basic Доступны любым типам данной сборки, а также protected internal (Visual C#) типам, производным от типа, которому принадлежит данный член;

является гибридом Protected (protected) и Friend (internal) Любой член, объявленный с модификатором Public (public), видим для любого кода, расположенного за пределами и является открытым. Открытые поля и методы могут быть вызваны другими объектами. Напротив, методы с Занятие 5 Область видимости и уровни доступа тором Private (private) видимы только внутри в котором они объявлены, их нельзя вызвать извне. Третий модификатор, friend указывает, что данный член доступен типам, объявленным внутри этой сборки. Однако для типов, распо ложенных вне сборки, доступ к этому типу Модификатор Protected (pro tected) разрешает доступ к члену из типа, к которому данный член принадлежит, а также из любых типов, производных от него. По правам доступа модификатор Protected Friend (protected internal) представляет собой гибрид соответствующих мо дификаторов.

При объявлении модификатор доступа может заменять опе ратор Dim. Если используется оператор Dim (в Visual Basic либо модификатор доступа не указан (в Visual считается, что для переменных классов Visual Basic и Visual задан модификатор private, для переменных структур Basic — модификатор а для переменных структур C# — private. Можно не указывать модификатор доступа при объявлении метода, при этом считается, что для методов классов и структур Visual задан модификатор а для методов классов и структур Visual Basic — Public.

Примечание Детально наследование обсуждается в главе 4.

Следующий пример иллюстрирует применение модификаторов доступа и их дей ствие:

Visual Basic Public Class aClass ' Это поле доступно любому внешнему коду.

Public As Integer Этот метод могут вызвать только члены данного ' класса или данной сборки, внешнему коду он не доступен.

Friend Sub () End Sub Это поле доступно только членам данного класса.

Private aString As String ' Этот метод могут вызывать только члены данного класса и ' классов, производных от него.

Protected Function () As Integer Return End Function ' Это поле доступно членам любых из данной сборки, а также типов, производных от данного класса.

Protected Friend As Long End Class 23 Введение в Framework Visual C# public class aClass { // Это поле доступно любому внешнему коду.

public // Этот метод могут вызвать только члены данного // класса или данной сборки, внешнему коду он не доступен.

internal void () !

// Это поле доступно лишь членам данного класса private string aString;

// Этот метод могут вызывать только члены данного класса и // классов, производных от него protected int () // Это поле доступно членам любых типов из данной // а также типов, производных от данного класса.

protected internal long Модификаторы доступа к типам Доступом к структурам и классам также можно управлять средствами модификато ров, контролирующих создание экземпляров;

они напоминают модификаторы, уп доступом к членам. Экземпляр класса, объявленного с модификатором Public (public) способен создать любой объект приложения, объект класса с моди фикатором Friend (internal) — любой объект сборки, а объекты, которые не входят в данную сборку, этого сделать не могут. Модификаторы Private (private) и Protected (protected) применяются только с вложенными типами. Объект класса, объявленно го с модификатором Private (private), создается только объектами того же типа или объектами родительского типа (то есть типа, который содержит этот вложен ный тип). Вложенные типы с модификатором Protected (protected) или Protected Friend (protected доступны классам, производным от их родительского класса.

Классы, объявленные с модификатором Protected friend (protected internal), также видимы всем классам из данного пространства имен. Если модификатор доступа для класса или структуры не указан, по умолчанию считается, что задан модифика тор (public).

Примечание Более подробно (protected) типы в главе 4.

5 Область видимости и уровни доступа Модификаторы доступа для вложенных типов Вложенный тип, как правило, используется только его родительским типом. По этому для вложенных типов лучше всего подходит модификатор доступа (private). Другие модификаторы нужны только для вложенных типов, создание своих экземпляров отличными от родительского, что требуется довольно редко. В принципе, у вложенного типа может быть любой модификатор доступа, но его область видимости никогда не будет шире таковой его го типа. Рассмотрим пример;

Visual Basic Friend Class ParentClass Public Class End Class End Class Visual internal class ParentClass { public class NestedClass { } !

Хотя вложенный класс NestedClass объявлен здесь как открытый он находится внутри класса с модификатором Friend (internal), поэтому его не уви дит ни один класс, расположенный за пределами данной сборки. Дело в что его родительский класс помечен модификатором Friend (internal), поэтому вложен ному классу автоматически назначается такой же уровень доступа.

Общие (статические) члены Обычно члены экземпляра класса принадлежат только данному экземпляру и ни кому другому, что демонстрирует следующий псевдокод:

Visual Basic Dim as New DemoClass (} Object2 as New DemoClass () = = Visual C# DemoClass = new (};

DemoClass = new DemoClass {);

15;

20;

Поле MyField объектов класса DemoClass содержит разные значения. Од нако можно создавать члены, для всех экземпляров класса. Они называются 30 Введение в Framework Глава общими (Shared) или статическими Независимо от числа экземпляров типа возможно не более одного экземпляра каждого из его общих членов.

Чтобы создать общее поле, необходимо объявить его с ключевым словом Shared (в Visual Basic или static (в например:

Visual Basic Public Class Demo Public Shared As Integer End Class Visual C# public class Demo { public static int MyField;

!

Даже при наличии нескольких экземпляров класса Demo существует только один экземпляр поля MyField. Заметьте, что слово Shared (static) не является модификатором доступа, оно лишь свидетельствует о том, что помеченный им член является обшим. Для общих членов разрешается задавать любые модификаторы доступа — Public (public), (private), Friend (internal) и т.д.

Методы, как и поля, тоже могут быть общими (статическими). Если обычные методы принадлежат типа, то общие методы — самому типу, поэтому общие методы не имеют доступа к данным экземпляров этого откуда бы их ни вызывали. Общему методу доступны лишь общие переменные, переменные, объяв ленные в этом методе, а также переданные ему параметры.

Доступ к общим членам Поскольку общие члены принадлежат типу, а не его экземпляру, на них нужно ссы латься по имени класса, а не экземпляра. Visual Basic позволяет обра щаться к общим членам из разных экземпляров класса, при этом вы все равно об ращаетесь к одному и тому же экземпляру общего члена. В этом отношении прави ла, принятые в Visual C#, более строги: они не позволяют к статичес ким членам из экземпляров класса.

Basic Здесь используется класс Demo из предыдущего Dim as New Demo С) к общему полю из некорректно, хоть это и не вызывает ошибку.

Это корректный синтаксис для вызова общего поля:

он использует имя класса, а не экземпляра.

Занятие 5 видимости и уровни Visual // Здесь используется класс Demo из предыдущего примера.

Demo = Demo // Синтаксическая ошибка! В Visual обращаться // к общим членам через = 15;

// Это корректный синтаксис для вызова общего поля:

// он использует имя класса, а не экземпляра.

15;

Поскольку члены принадлежат типу, а не его экземпляру, к ним можно не создавая экземпляр данного класса, то есть вызывать общие методы и поля типа, даже если не существует не одного его экземпляра.

Резюме • Модификаторы доступа управляют областью видимости членов типа. Модифи каторов, различные уровни доступа, всего пять: Public (public), Private (private), Protected (protected) и Protected Friend (protected • Если для метода не указан модификатор доступа, то в классах и структурах Visual С# для него по умолчанию принимается уровень доступа private, а в классах и структурах Basic — public. Соответственно для членов-переменных по умолчанию принимаются уровни доступа private (в классах и структурах Visual С#) и public (в структурах Visual Basic • Модификаторы доступа к типам управляют созданием экземпляров типов. С типами следующие модификаторы: Public (public) — разрешает со здавать экземпляры типа в любом месте приложения;

Friend (internal) — позво ляет создавать экземпляры типа только членам из данной сборки и Private (private) — разрешает создавать экземпляры только самому типу и его родитель ским типам.

• Если для класса или структуры модификатор доступа не задан, по умолчанию для них принимается модификатор Public (public), • Вложенные типы подчиняются аналогичным правилам, однако их уровень тупа не может быть больше уровня доступа родительского класса.

• Общие (статические) члены принадлежат типу, а не его экземплярам, поэтому они доступны без создания типа. К общим членам следует обра щаться по имени класса, а не его экземпляра. Общие методы не имеют доступа к данным экземпляров типа, в котором они объявлены.

32 в Framework Занятие 6. Сбор мусора Схема автоматического управления памятью, применяемая в Framework, по лучила название сбор мусора (garbage collection). Этот механизм позволяет отслежи вать неиспользуемые объекты и освобождать занятую ими память совершенно без участия приложения. На этом занятии вы узнаете, как работает механизм сбора мусора.

Изучив материал этого занятия, вы сможете:

уяснить, как память неиспользуемых объектов при сборе мусора;

понять, как сборщик мусора управляется с циклическими ссылками, Продолжительность занятия - около минут.

В Framework применяется автоматическое управление памятью, то есть Framework автоматически утилизирует память неиспользуемых объектов. Этот процесс называется сбором мусора. Рассмотрим следующий пример:

Visual Basic Sub C) Dim myWidget as New Widget () Sub Visual C# void {) !

Widget myWidget = new Widget Когда эта процедура завершится, переменная выйдет из области ви димости, после чего на нее не будет ссылаться ни одна из переменных приложения.

Сборщик мусора непрерывно проверяет дерево ссылок в фоновом режиме и опре деляет объекты, на которые больше нет ссылок. Обнаружив такой объект (напри мер, из примера), сборщик мусора удаляет его и освобождает за нятую им память.

Поскольку сбор мусора работает постоянно, не обязательно явно уничтожать объекты, как только они станут ненужными. Обычно сборщик мусора работает в низкоприоритетном потоке, который исполняется, пока процессор не занят более важными задачами, но при дефиците памяти приоритет этого потока повышается.

В результате память освобождается быстрее, пока не исчезнет ее дефицит, тогда приоритет потока сборщика мусора вновь снижается.

Подобный подход к освобождению памяти, получивший название недетерми нированного, призван обеспечить производительность приложений и предоставить им окружение, более устойчивое к ошибкам. Однако за эти удоб ства приходится расплачиваться неопределенностью. Невозможно с уверенностью сказать, когда именно будет уничтожен тот или иной объект, то есть нельзя контро лировать момент вызова деструктора класса (в или метода Visual Basic подготавливающего объекты к уничтожению. В силу этих причин в деструкторе не 6 Сбор мусора быть кода, который необходимо исполнить в заданное время. удер живающие дефицитные ресурсы, обычно вызывают метод Dispose (), гарантирован но освобождающий эти ресурсы, как только объект становится ненужным, Циклические ссылки Сборщик мусора успешно справляется с циклическими ссылками, которые раньше были одной из наиболее распространенных причин утечек памяти. Рассмотрим сле дующий пример:

Visual Basic Class Widget Public ChildWidget As Widget Public Parent As Widget End Class Class aClass Public GrandParent As Widget Sub Demo () Dim Parent As Widget Dim Child As Widget GrandParent = New Widget () = New Widget () Parent = New Widget () Child = = Parent GrandParent = Nothing End Sub End Class class Widget { public Widget ChildWidget;

public Widget Parent;

} class aClass !

Widget GrandParent;

Demo () { Parent;

Widget Child;

GrandParent = new Widget ();

= new Widget ();

Parent = new Widget ();

Child = 34 в Глава = Parent;

Grandparent = null;

} Класс Widget состоит из полей ChildWidget и в которых хранятся ссылки на объекты Widget. В этом примере создается экземпляр класса и ссылка на него записывается в переменную Затем этот объект создает один экземпляр Widget и записывает ссылку на него в свое поле ChildWidget, а также в переменную Parent. Далее объект Parent создает третий объект типа Widget и запи сывает ссылку на него в свое поле ChildWidget и в переменную Child. Наконец, в поле Parent объекта Child помещается ссылка на объект Parent — в результате полу чается обратная ссылка от объекта Child на объект Parent. После сброса переменной GrandParent (путем записи в нее остается пара объектов, ссылающихся только друг на друга — налицо циклическая ссылка!

При разработке с использованием других платформ циклические ссылки вызы вают утечки памяти, которые очень трудно обнаружить, однако сборщик мусора Framework в состоянии отследить и устранить их. Так, если обнаружена пара объектов, ссылающихся только друг на друга, оба этих объекта помечаются как мусор.

Резюме • Framework обеспечивает автоматическое освобождение неиспользуемой памяти посредством сбора мусора, который осуществляет низкоприоритетный поток, работающий в фоновом режиме. При возникновении дефицита памяти приоритет сборщика мусора повышается, пока он не освободит достаточно па мяти.

• Нельзя точно предсказать, когда сборщик мусора уничтожит объект, поэтому не помещайте в деструкторы код, который требуется исполнять в заданное время, Для максимально быстрого освобождения дефицитных ресурсов следует приме нять метод Dispose (), который разрешается вызывать явно.

• Сборщик мусора непрерывно отслеживает дерево ссылок и освобождает память, занятую объектами, на которые никто не ссылается, а также объектами, связан ными циклическими ссылками.

Практикум Применение классов и демонстрация сбора мусора Цель этого практикума — получение и закрепление навыков создания классов и членов. Для этого вы напишете программу, демонстрирующую автоматическое освобождение памяти при помощи сбора мусора. Для это го следует создать класс, взаимодействующий с готовым пользовательс ким интерфейсом. У него будет общая переменная для учета его экземп существующих в памяти. Код, или уменьшающий значение этой переменной, вы поместите соответственно в конструктор и деструктор этого класса. Далее вы создадите несколько экземпляров клас са и посмотрите, как сборщик мусора освобождает занятую ими память.

Готовую программу вы найдете на прилагаемом к книге компакт-диске в каталоге \Labs\Ch01\Solution.

Продолжительность практикума - около Примечание Решение задач этого и всех остальных практикумов (на Baste и Visual C#) из данной книги вы найдете на прилагаемом компакт-диске каталогах где хх — номер соответствующей главы.

Упражнение Создание класса Demo Сейчас вы создадите класс Demo, взаимодействующий с проектом Demo Test (его можно взять с прилагаемого CD из каталога Создание класса Demo 1. Откройте решение DemoTest.sln из каталога — оно интерфейс, необходимый для проекта.

2. В меню Project выберите Add Class.

3. В диалоговом окне Add New Item введите для класса имя или в зависимости от используемого языка программирования.

4. Объявите в классе Demo открытое общее поле (см. код ниже). Оно тре буется для учета экземпляров класса Demo, в памяти:

Visual Basic Public Instances as Long Visual public static long Instances;

5. Напишите конструктор для нового класса самостоятельно, если вы используете Visual Basic или воспользуйтесь конструктором по умолчанию, генериро ванным Visual Studio (если вы пишете на Visual C#). В конструкторе должен быть код, значение переменной Instances:

Visual Basic Public Sub New {) Instances End Sub Visual C# public Demo (} { } 6. Создайте для класса Demo деструктор с кодом, уменьшающим значение пере менной Visual Basic Protected Overrides Sub Finalize () Instances -= End Sub Visual C# () !

Instances -;

:

Примечание В деструкторе, написанном на Visual Basic должно быть клю чевое слово Overrides (см. главу 4).

7. В меню File команду Save чтобы сохранить результаты своей работы.

Упражнение 2. Демонстрация сбора мусора Интерфейс, взятый из проекта DemoTest, состоит из формы с двумя ви элементами управления — кнопкой (button) и надписью (label) и одним невидимым — таймером, обновляющим надпись каждые секунд.

Запустите созданное вами приложение и пронаблюдайте за созданием класса Demo и их уничтожением при сборе мусора, работы мусора Откройте форму 1 и убедитесь, что на ней есть элементы управления Button и Label, а в области компонентов присутствует компонент Примечание Подробнее об элементах управления — в главе 2.

2. Щелкните правой кнопкой — откроется окно кода с обработчиком со бытия Click для кнопки.

3. Найдите строку Private Basic или void button C#). Изучите следующий код:

Visual Dim Counter As Integer Dim For Counter = 1 to aDemo = New Demo Visual C# int Counter;

Demo = 0;

Counter < 1000;

{ aDemo = new Demo } Здесь объявляются две переменные типа Demo — за которыми следует тысячу раз присваивающий переменной aDemo ссылку на новый экземпляр класса Demo. При создании каждого экземпляра класса Demo няется его конструктор, который увеличивает значение переменной Запись ссылки на новый экземпляр Demo в переменную выполняемая в цикле, уничтожает ссылку на предыдущий экземпляр. С каждым оборотом цикл создает все больше объектов Demo, на которые никто не ссылается, увеличивая работу для сборщика мусора. Каждый щелчок кнопки создает тысячу новых объектов.

4. Нажмите чтобы скомпоновать и запустить приложение. Появится кнопка и надпись, отображающая число экземпляров класса Demo, существующих в па мяти. Щелкните кнопку один раз.

На форме появится следующая надпись;

are 1000 instances of Demo in memory». Подождите немного, через некоторое время (примерно через пару минут) вы увидите, что в памяти не осталось ни одного экземпляра Demo. Это означает, что все экземпляров класса Demo были удалены при мусо ра. При удалении каждого объекта был исполнен деструктор, при этом значение переменной Instances уменьшалось.

Поскольку приоритет поток сборщика мусора относительно невысок, надпись изменяется не мгновенно. Однако при нехватке памяти приоритет этого потока возрастает.

5. Щелкните кнопку несколько раз подряд. Посмотрите, сколько экземпляров ва шего объекта уместится в памяти. Если на компьютере установлено много па число объектов может достигать десятков тысяч, прежде чем начнется сбор мусора. Как только возникнет дефицит памяти, сборщик мусора быстро и эф фективно освободит память, занятую объектами, на которые нет ссылок 3- 38 в Framework Закрепление материала Приведенные ниже вопросы помогут вам лучше усвоить основные темы данной главы. Если вы не сумеете ответить на вопрос, повторите матери ал занятия. Ответы для самопроверки — в приложении «Вопросы и ответы» в конце книги.

1. Кратко перечислите главные компоненты Framework и опиши те, для чего они предназначены.

2. Дайте определение ссылочным типам и типам значения.

3. Как ссылаться на члены библиотеки базовых классов при помо их имен?

4. Расскажите, как работает сборщик мусора.

5. Что такое члены класса? Назовите четыре типа членов.

6. Что такое конструкторы и деструкторы и для чего они нужны?

7. Кратко поясните различия между уровнями которые задают для пользовательских типов и членов модификаторы Public (public), Friend (internal) и Private (private).

8. Нужно ли создавать экземпляр класса для обращения к общему члену?

Почему?

Создание пользовательского интерфейса Занятие Принципы пользовательского интерфейса Занятие 2. Работа с формами Занятие 3. Применение управления и компонентов Занятие 4. Меню Занятие 5. Проверка данных, вводимых пользователем В этой главе Эта глава созданию пользовательского интерфейса для форм. Здесь рас сматриваются ключевые вопросы разработки интерфейса — принципы ди применение элементов управления, конструирование меню и форм, способы про верки данных, вводимых пользователем.

Прежде всего Для выполнения занятий этой главы достаточно освоить ее материал.

Создание Занятие Принципы разработки пользовательского интерфейса Интерфейс — это механизм, обеспечивающий взаимодействие пользователей с при ложением. интерфейса, обеспечива ющая простоту работы с ним, имеет первостепенное значение при создании прило жений. На этом занятии вы познакомитесь с правилами разработки дружественных пользователю, элегантных и простых в применении интерфейсов.

Интерфейс прежде всего должен учитывать потребности конечных пользовате лей приложения, которых принято называть целевой аудиторией. Если целевая ауди тория программы известна, разработка пользовательского интерфейса не представ ляет трудностей. Рационально сконструированный интерфейс облегчает освоение и применение программы, а неудачный вызывает у клиентов ощущение бессилия и снижает эффективность работы с приложением. В результате пользователи все чаще игнорируют его и даже могут полностью отказаться от него.

Центральный элемент интерфейса приложения для Windows — форма, Это ос нова взаимодействия пользователя с приложением на любом уровне. Для поддерж ки необходимой функциональности к приложению добавляют соответствующие элементы управления и меню. Однако кроме этого интерфейс должен быть привле кательным и вызывать у пользователя желание работать. Framework поддер живает богатый набор графических эффектов, позволяющих сделать внешний вид приложения более привлекательным, в том числе фигурные формы и элементы управления, прозрачные или полупрозрачные компоненты, а также сложные эф фекты затенения.

Изучив материал этого вы сможете:

объяснить, почему пользовательский интерфейс так важен;

рассказать о роли форм, управления и меню в пользовательском интерфейсе;

пояснить значение основных дизайна — выбора оптимальной композиции и цветов;

рассказать о применении изображений, значков и шрифтов при интерактивной разработке интерфейса.

Продолжительность занятия - около 30 минут.

Формы, элементы управления и меню Форма — это основной элемент пользовательского интерфейса, основа для постро ения приложения. Обычно формы отображают логически связанные данные и со держат инструментальные средства, позволяющие пользователю получать инфор мацию, необходимую для продолжения работы. Любая форма одновременно и класс, поэтому удается создавать экземпляры форм и порождать одни формы от других — об этом будет рассказано на занятии 2 и в главе 4.

При помощи элементов управления конечный пользователь получает необходи мую информацию и работает с программой. Одни элементы управления, такие, как надписи и только отображают информацию, тогда как поля и спис ки, кроме того, способны к приему вводимых пользователем данных, а кнопки пре Занятие Принципы доставляют пользователю возможность управлять развитием событий. Применение элементов управления обсуждается на занятии 3.

Меню и панели инструментов упорядочивают доступные лю. Как правило, меню открывает доступ к командам верхнего уровня, обшим для всех форм приложения (например, командам для сохранения данных или выхода из приложения). Логично и последовательно организованное меню приносит удов летворение от работы с приложением и помогает быстро освоить его возможности.

и деактивация элементов меню позволяет менять набор доступных пользователю возможностей в зависимости от того, в каком месте приложения тот находится. О применении меню рассказывается на занятии 4.

Принципы дизайна интерфейса Дизайн пользовательского интерфейса во многом определяет впечатление от рабо ты с приложением. От него зависит, примут ли пользователи приложение и как быстро они освоят его. Основных принципов дизайна немного:

• простота;

• оптимальное размещение элементов управления;

• логика и последовательность;

• эстетика внешнего вида.

Простота Простота пользовательского интерфейса — это одна из важнейших его тик. Освоение и использование программы с запутанным или чересчур сложным интерфейсом весьма затруднительно и требует много времени. Пользовательский интерфейс должен помогать быстро исполнять любые операции, необходимые для взаимодействия с программой, предоставляя ровно столько возможностей, сколь ко требуется на данном этапе работы.

Конструировать интерфейс следует с учетом логики работы Эле менты управления, отображающие логически связанные данные, следует размещать на формах группами. То же касается списков, полей и флажков для выбора и уста новки предопределенных параметров. Корректная передача фокуса позволяет быс тро перемещаться между элементами управления, составляющими нажи мая клавишу Tab.

При разработке интерфейса часто допускают ошибку, пытаясь точно воспроиз вести объект из реального мира. Например, при формы для заме ны бумажного бланка возникает естественное желание воспроизвести этот бланк «один к одному». Иногда такой подход оправдан, но чаще он лишь ограничивает возможности приложения, не принося реальной выгоды. В любом случае следует хорошо обдумать ситуацию и попытаться расширить функциональность приложе ния за счет дополнительных возможностей, которые предоставляет компьютер, Применение значений по умолчанию также позволяет упростить ский интерфейс. Если большинство клиентов выбирают значение «Вашингтон» для поля «Штат», имеет смысл назначить «Вашингтон» значением по умолчанию для этого поля. Однако следует позаботиться о том, чтобы при необходимости пользо ватель смог без труда указать другое значение.

Пользовательский интерфейс рекомендуется создавать на основе опро са целевой аудитории. Узнайте, как пользователи хотят работать с приложением, и постарайтесь спроектировать интерфейс так, чтобы упростить решение наиболее интерфейса Глава типовых задач. Результаты опросов также пригодятся для совершенствования гото вых приложений.

Композиция формы При размещении элементов управления следует насколько они важны и как часто они требуются. Предположим, есть форма для ввода обязательной и нео бязательной информацию. Ясно, что элементы управления для ввода обязательной информации важнее и поэтому должны выделяться среди остальных элементов формы. Как правило, предполагают, что пользовательский интерфейс просматри вают слева направо и сверху вниз, поэтому считается, что наиболее важные и вос требованные элементы управления лучше размещать в верхней части формы. Эле менты управления, с которыми пользователь работает после завершения основных действий на форме (такие, как кнопка Submit), логично разместить в нижней части формы.

Следующий вопрос — согласованность отображаемой информации. Элементы управления, показывающие логически связанные данные, следует группировать.

Допустим, вы создаете форму для публикации сведений о клиенте, товаре или слу жашем. Для ее создания можно сгруппировать необходимые элементы управления средствами элемента Tab, чтобы пользователь легко перемешался между ними.

позаботьтесь об эстетике размещения элементов управления на фор ме. Избегайте перегруженных форм, содержащих больше данных, чем можно усво ить с первого взгляда. Старайтесь оставлять достаточно свободного места между элементами управления — так вы придадите форме привлекательный вид и облег чите ее чтение.

Согласованность Облик интерфейса должен гармонировать с содержанием приложения, в против ном случае интерфейс раздражает взгляд, а приложение кажется нелогичным и де зорганизованным, что затрудняет его освоение.

Согласованность следует закладывать в проекте. Для этого необходимо еще до разработки создать стройную и логичную схему внешнего вида приложения.

деляя облик интерфейса, продумайте цвета, шрифты, размеры и тип используемых элементов управления. Не поддавайтесь искушению сделать интерфейс броским — применяйте лишь то, что требуется для решения поставленной задачи. Перегрузка элементами управления и множество броских, но неуместных эффектов лишь от влекает пользователя и в конечном счете снижает производительность его труда.

Все формы приложения необходимо создавать по единой схеме. Позаботьтесь о том, чтобы пользователю не заново привыкать к размещению элементов интерфейса каждый раз, когда он открывает новую форму.

Эстетика внешнего вида По возможности сделайте внешний вид приложения привлекательным и однако ни в коем случае не приносите ясность и простоту интерфейса в жертву при влекательности. Достаточно, чтобы интерфейс не был отталкивающим.

Выбор цветов Грамотное использование цветов — один из действенных способов улучшить вне шний вид интерфейса, однако берегитесь излишеств. Яркие кричащие цвета при Занятие 1 Принципы разработки пользовательского интерфейса влекают одних пользователей, но вызывают дискомфорт у других, поэтому в каче стве фона лучше выбирать приглушенные тона.

При разработке цветовой схемы приложения также важно ориентироваться на целевую аудиторию. Если вы выполняете заказ компании, стоит воспользоваться ее фирменными цветами, а если программа предназначена для многонациональ ной аудитории, учитывайте смысловую нагрузку тех или иных цветов в различных культурах. Стремитесь к последовательности в оформлении интерфейса, в ра зумных пределах.

Подумайте, будут ли выбранные цвета удобными для пользователей, в том числе для людей с дефектами зрения. Например, голубой цвет на черном фоне читается очень плохо. Не забывайте также о цветовой слепоте: некоторые люди не ра:шича ют красный и зеленый цвета, поэтому они не увидят красный текст на зеленом фоне.

Сделайте важные элементы приложения контрастными, но не полагайтесь при вы делении информации исключительно на цвет.

Подбор Основным критерием выбора шрифта является его удобство, причем схема приме нения шрифтов должна быть единой для всего приложения. Избегайте чи таемых и вычурных гарнитур, старайтесь применять простые, легко читаемые шрифты вроде или Times New Roman. рукопис ный текст, а также декоративные допускаются для визуального выделения, напри мер, заголовков страниц, но только там, где это уместно. Никогда не оформляйте такими шрифтами важный текст.

Изображения и значки Изображения и значки делают интерфейс более но при этом важ но продумать их применение. Излишние и отвлекающие изображения затрудняют работу с приложением. Хотя значки успешно применяются во многих приложениях как альтернативный способ представления информации, это от меняет необходимость их тщательного выбора с учетом потребностей конечного пользователя. Например, значок в виде дорожного знака «stop», запрещающего дви жение, подходит для предупреждения пользователя о возможных нежелательных последствиях их действий. Однако дорожные знаки одинаковы не во всех странах, и вполне вероятно, что для некоторых ваших пользователей такой значок окажется бессмысленным. Изучайте целевую аудиторию и выбирайте значки и другие графи ческие исходя из ее особенностей.

Лучше для значков применять простые изображения, которые легко передаются квадратом размеров пикселов. Более сложные значки сильно искажаются при просмотре с низким разрешением.

Фигурные и прозрачные элементы управления Framework предоставляет инструменты для создания элементов разной прозрачности и формы, отличной от традиционного прямоугольника. Хотя это чрезвычайно средство создания визуальных эффектов для интерфейса, пользуйтесь им в меру. Например, текстовое поле в форме пончика выглядит за бавно и оригинально, но едва ли оно повысит эффективность приложения или сде лает его удобнее. Применяя подобные эффекты, всегда помните об интересах ко нечного пользователя. Разнообразные элементы управления и формы (например круглые кнопки) делают пользовательский интерфейс привлекательным и не вы 44 пользовательского Глава биваются из стиля приложения, только когда применены со вкусом. Полупрозрач ные формы хороши тем, что позволяют держать в поле зрения форму, расположен ную на заднем плане. Эстетика повышает удобство работы с приложением.

Резюме * Дизайн интерфейса очень важен, поскольку выдержанный в едином стиле и ло гично организованный интерфейс облегчает освоение и эффективное использо вание программы.

Главные компоненты интерфейса — это формы, элементы уп равления и меню.

Хороший пользовательский интерфейс продуман и разработан. В нем сочетаются:

• простота;

• оптимальное расположение элементов управления;

• логика и последовательность;

• эстетика внешнего вида.

* Выбирайте элементы оформления интерфейса на основе потребностей целевой аудитории вашего приложения. Однако непременно учитывайте смысловую на грузку этих элементов в контексте различных культур. Основные принципы раз работки интерфейса — последовательность и простота.

Занятие 2. Работа с формами Как говорилось ранее, форма — это фундаментальная единица Формы представляют собой основу для взаимодействия с пользователем, для построения гармоничного и привлекательного интерфейса. Формы получают от пользователя данные и отображают их. В принципе, возможно приложение и без единой формы (например, сервисы Windows и консольные приложения). Однако приложению, постоянно взаимодействующему с по крайней мере одна форма, а для нормальной работы более сложных иногда требуется несколько форм.

Изучив материал этого вы сможете:

описать роль форм в приложениях;

добавить форму к назначить стартовую форму и выбирать ее первоначальное определить внешний вид формы;

методы формы;

применять события формы.

Продолжительность занятия - около 30 минут.

Добавление формы к проекту Благодаря формам пользователь взаимодействует с приложением. При создании но вого проекта Windows Forms к нему по умолчанию добавляется форма с именем В действительности это не экземпляр формы, а класс, представляющий ее объект кода. Эту форму можно редактировать средствами инструмента под назва нием дизайнер (designer), добавлять к ней элементы управления, меню и прочие гра фические компоненты. При усложнении приложения наступает момент, когда требуются дополнительные классы форм.

Как добавить к проекту новую форму Выберите из меню Project команду Add Windows — откроется диалоговое окно Add New Item.

Pages:     || 2 | 3 | 4 | 5 |   ...   | 7 |



© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.