Скачиваний:
79
Добавлен:
24.03.2015
Размер:
139.78 Кб
Скачать

Глава 5. Типы c# как классы платформы .Net Framework

5.1. Платформа .Net Framework и спецификация cts

Язык C# и средства его поддержки в настоящее время крепко связаны с платформой разработки .NET Framework. Названная платформа включает: общеязыковую исполняющую среду (CLR - Common Language Runtime) и библиотеку классов (FCL - Framework Class Library). Платформа .Net Framework разработана Microsoft и реализована в последних версиях ОС Windows. Планируется постепенное включение CLR и FCL в операционные системы для портативных устройств и компьютеров разных типов. Для обеспечения этой возможности Европейская ассоциация производителей компьютеров (ЕСМА - European Computer Manufacturers Association) приняла стандарты CLR, FCL и языка C#.

В операционную систему Windows Vista среда .NET Framework уже включена. При использовании более старых версий Windows (например, Windows XP) для исполнения приложений, написанных на C#, .NET Framework необходимо поставить отдельно. Microsoft разработала установочный файл, который можно бесплатно поставлять со своими приложениями.

Следует заметить, что язык C# является только одним из многих языков, на которых можно писать программы, работающие на платформе .NET Framework. В среду разработки Visual Studio .NET включены средства для программирования на Visual Basic, C++, Jscript. Сторонние производители программных продуктов (не фирма Microsoft) поставляют компиляторы других языков для платформы .NET Framework.

При использовании платформы .NET Framework подготовленный программистом код (текст программы, например, на C#) вначале транслируется в код на общем для всех исходных языков промежуточном языке (CIL - Common Intermediate Language, иногда сокращенно 1С -Intermediate Language).

Последовательность процессорных команд появляется позже - во время исполнения команд CIL средой CLR. Этот временной «разрыв» между трансляцией исходного текста и появлением процессорного кода не случаен. Код на промежуточном «универсальном» языке CIL может исполняться на процессорах с разной архитектурой (PowerPC, x86, LA64, Alpha и др.). Единственное, но обязательное требование - на компьютере, где выполняется приложение на языке CIL должна быть развернута среда .NET Framework, то есть установлены CLR и FCL, соответствующие стандартам ЕСМА.

Платформа .NET Framework позволяет разрабатывать приложение, используя одновременно несколько разных языков программирования. Такая возможность обеспечена общей системой типов (CTS - Common Type System), которую используют все языки, ориентированные на CLR. Так как наша книга посвящена только одному языку программирования, то все ограничения, которые возникают при использовании в одном приложении частей, написанных на разных языках, мы рассматривать не будем. Достаточно отметить, что для обеспечения межъязыкового взаимодействия необходимо придерживаться общеязыковой спецификации (CLS - Common Language Specification), предложенной Microsoft. Эта спецификация ограничивает всеразнообразие типов того или иного языка программирования тем подмножеством, которое присутствует одновременно во всех языках. Любой из типов, соответствующих спецификации CLS, присутствует в каждом из языков и «понятен» в каждой части многоязыковой программы.

Спецификация CTS описывает правила определения типов и особенности их поведения. При изучении C# мы будем подробно рассматривать правила определения типов именно на языке C#. Сейчас очень кратко остановимся только на основных требованиях CTS.

Во-первых, CTS утверждает, что каждый тип - это класс, который может включать нуль или более членов. Отдельным членом может быть:

Поле - переменная, определяющая состояние класса или объекта. Поле идентифицируется именем и типом.

Метод - функция, выполняющая действие над классом или объектом. Метод идентифицируется сигнатурой и для него определён тип возвращаемого значения.

Свойство - средство для получения или задания значения некоторой характеристики, зависящей от состояния объекта. Для вызывающей стороны свойство синтаксически неотличимо от поля. В реализации типа свойство представлено одним или двумя методами с фиксированными именами.

Событие - средство для уведомления адресатов (других объектов, классов, методов) об изменении состояния объекта или о воздействии на него.

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

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

  • сравнения с другим экземпляром;

  • получения хэш-кода;

  • определения (идентификации) типа;

  • копирования;

  • формирования строкового представления значения.

Изучая программирование на языке C#, мы познакомимся не с CTS, а с ее «проекций» на конкретный язык программирования (на C#). В конкретном языке для упрощения вводят «надстройки» над CTS, обеспечивающие более высокий уровень абстракции. В языке C# именно так появляются индексаторы, делегаты, массивы и другие конструкции, которые будут нами подробно рассмотрены.

Кроме того, для упрощения записи программ развернутое обозначение типов, принятых в CTS, в конкретных языках разрешено заменять традиционными для языков программирования более короткими названиями: int, char и т.п. Именно такие типы языка C# мы рассматривали в предыдущих главах, не обращая внимания на тот факт, что каждый из этих типов просто-напросто представляет в программе на C# один из типов CTS, имеющих более громоздкие обозначения.

Соседние файлы в папке Lekc_C#