- •Раздел 4. Разработка по Тема 4.1. Проектирование интерфейса с пользователем
- •4.1.1. Типы пользовательских интерфейсов.
- •4.1.2. Пользовательская и программная модели интерфейса.
- •4.1.3. Разработка диалогов.
- •4.1.4. Основные компоненты графических пользовательских интерфейсов.
- •Тема 4.2. Реализация графических пользовательских интерфейсов.
- •4.2.1. Диалоги, управляемые пользователем.
- •4.2.2. Диалоги, управляемые системой.
- •4.2.3. Использование метафор.
- •4.2.4. Технология Drag and Drop.
- •4.2.5. Интеллектуальные элементы.
- •4.3.1. Базовые типы данных.
- •Константы
- •Область действия имен
- •4.3.2. Указатели и адресная арифметика.
- •4.3.3. Составные типы данных. Структуры
- •Битовые поля
- •Определение типов
- •Перечислимые типы
- •4.3.4. Выражения и операции.
- •4.3.5. Управляющие конструкции. Условные операторы
- •Операторы циклов
- •4.4.1. Статические одномерные массивы.
- •4.4.2. Статические многомерные массивы.
- •4.4.3. Динамические массивы.
- •4.4.4. Массивы указателей.
- •4.5.1. Стеки.
- •4.5.2. Очереди.
- •4.5.3. Списки.
- •4.5.4. Бинарные деревья.
- •4.6.1. Объявление классов и экземпляров классов.
- •4.6.2. Инкапсуляция данных и методов.
- •4.6.3. Конструкторы классов.
- •Конструктор по умолчанию
- •Конструктор копирования
- •4.6.4. Деструкторы классов.
- •4.7.1. Разделы в описании класса.
- •4.7.2. Friend-конструкции.
- •4.7.3. Статические члены классов.
- •4.7.4. Использование описателя const в классах.
- •4.8.1. Вложенность классов.
- •4.8.2. Наследование данных и методов.
- •4.8.3. Типы наследования.
- •4.9.1. Полиморфизм раннего связывания.
- •4.9.2. Полиморфизм позднего связывания и виртуальные функции.
- •4.9.3. Абстрактные методы и классы.
- •4.10.1. Функции консольного ввода-вывода.
- •4.10.2. Функции файлового ввода-вывода.
- •4.10.3. Использование библиотеки классов потокового ввода-вывода.
- •4.11.1. Перегрузка операций.
- •4.11.2. Шаблоны функций.
- •4.11.3. Шаблоны классов.
- •4.11.4. Обработка исключений.
- •Тема 4.12. Com-технология.
- •4.12.1. Основные понятия.
- •4.12.2. Типы интерфейсов.
- •Свойства интерфейсов
- •Типы интерфейсов
- •4.12.3. Типы com-объектов.
- •4.12.4. Фабрика классов.
- •Тема 4.13. Построение com-сервера.
- •4.13.1. Язык idl.
- •Содержимое файла idl
- •4.13.2. Определение пользовательского интерфейса.
- •4.13.3. Реализация пользовательского интерфейса.
- •4.13.4. Создание тестового клиента.
- •Тема 4.14. Обзор платформы ms .Net.
- •4.14.1. Общая идея архитектуры .Net.
- •4.14.2. Достоинства и недостатки .Net.
- •4.14.3. Схема трансляции программ в .Net.
- •4.14.4. Язык msil.
- •4.14.5. Объектно-ориентированная модель .Net.
4.14.5. Объектно-ориентированная модель .Net.
С-программ исты, пишущие для Windows, обычно используют в своих программах вызовы API Windows и DLL других производителей. С-н-программисты часто используют библиотеки классов, написанные ими самими или стандартные библиотеки типа MFC. Visual Basic-программисты используют API Visual Basic, представляющие абстракцию низкоуровневых API ОС.
Работая с .NET Framework, можно забыть обо всех этих устаревших API. Вам нужно выучить совершенно новый API — библиотеку классов .NET Framework, которая содержит более 7 000 типов: классов, структур, интерфейсов, перечислений и делегатов (так называются оболочки функций обратного вызова, обеспечивающие безопасность типов). Некоторые классы FCL содержат до 100 методов, свойств и других членов, так что изучить FCL нелегко. Плохо, что это подобно изучению новой ОС, но прелесть в том, что все языки используют один и тот же API, поэтому ваши усилия по изучению FCL не пропадут, если ваша компания решит перейти с Visual Basic на C++ или наоборот.
Чтобы облегчить изучение и использование FCL, Microsoft разделила эту библиотеку на иерархические пространства имен. Всего в FCL около 100 таких пространств. В каждом содержатся классы и другие типы, имеющие некоторое общее назначение. Так, большая часть API Windows для управления окнами инкапсулирована в пространстве имен SystemWindowsJ-'orms. Здесь можно найти классы, представляющие окна, диалоги, меню и другие элементы, обычно применяемые в приложениях с графическим интерфейсом пользователя, Отдельное пространство — SystemCollections — содержит классы хэш-таблиц, массивов переменной размерности и других контейнеров, a SyslemJO — классы файлового ввода-вывода, Полный список пространств имен FCL см, в электронной документации Framework SDK. Вам, подающим надежды .NET-программистам, надо познакомиться с ними. К счастью, FCL настолько громадна и всеобъемлюща, что большинству разработчиков нет нужды подробно изучать ее полностью,
В таблице перечислены несколько пространств имен FCL и кратко описано их содержимое. Выражение «и др.* обозначает пространства-потомки. Например, «SystemData и др.» — это SystemDala, System&ata.Common, SystemData.OleDb, Sys-temDataSqlClienl и SystemDatoSqllypes.
Первое, и самое важное пространство имен FCL, используемое каждым приложением, — это System. Помимо прочего, в нем определены фундаментальные типы данных, необходимые управляемым приложениям: байты, целые, строки и т. д, Когда вы объявляете переменную типа int на С#, фактически создается экземпляр Sy$t(imJnt32. Компилятор С# допускает сокращение int, 'потому что проще написать:
int a
чем:
System.Int32 a = 7;
В пространстве имен System находятся также многие типы исключений, определенные FCL (например, InvalidCastException), и такие полезные классы, как Math, содержащий методы для выполнения сложных математических операций, и Random, в котором реализован генератор псевдослучайных чисел и GC, предоставляющий программный интерфейс сборщика мусора.
Физически FCL представляет собой набор DLL в каталоге \%SysternRoot%\Micro-soft.NET\Framework\vl.0.nn«n. Каждая DLL — это сборка, загружаемая CLR по запросу. Фундаментальные типы данных, такие как Int32, реализованы в Mscorlib.dll. другие типы разбросаны по разным DLL FCL В документации на каждый тип указана сборка, в которой он определен. Это важно, поскольку вы обязаны указать конкретную сборку, в которой реализован класс FCL, если компилятор сообщает о том, что этот класс является неопределенным типом. Компилятору С# сборки, на которые имеются внешние ссылки, указываются с помощью ключей /reference],
Конечно, одной главы (и даже книги) не хватит, чтобы рассмотреть FCL полностью. Начиная с главы 3, где представлены наиболее интересные классы и пространства имен FCL, вы познакомитесь со многими классами FCL. Пока же вам нужно усвоить, что FCL — это API .NET Framework и что это необычайно обширная библиотека классов. Чем больше вы будете узнавать ее, тем больше она вам будет нравиться, тем выше вы оцените громадную работу, результатом которой стала FCL.