Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Стандартная система типов CTS

Основы Common Language Runtime — среды выполнения.NET

Среду выполнения CLR можно рассматривать как набор служб, необходимых для работы блока программного кода. К таким службам можно отнести и требуемые библио­теки. Например, если создано приложение MFC. то в качестве компонента среды выполнения вам потребуется весьма объемистая библиотека времени выполнения Microsoft Foundation Classes — mfc42.dll Программы на Visual Basic привязаны к такому компоненту среды выполнения, как библиотека msvbvm60.dll. а программам на Java необходим большой набор файлов, входящих в состав виртуальной машины Java.

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

Сама CLR состоит из двух главных компонентов. Первый компонент — это ядро среды выполнения, которое реализовано в виде библиотеки mscoree.dll. При обращении к приложению.NET mscoree.dll автоматически загружается в память, и, в свою очередь, эта библиотека управляет процессом загрузки в память сборки данного приложения. Ядро среды выполнения ответственно за множество задач. Оно занимается поиском физического местонахождения сборки, обнаружением внутри сборки запрошенного типа (класса, интерфейса, структуры и т. п.) на основе информации метаданных, компилирует IL в платформенно-зависимые инструкции, выполняет проверки, связанные с обеспечением безопасности, — и этот перечень далеко не полон.

Второй главный компонент CLR— это библиотека базовых классов. Сама биб­лиотека разбита на множество отдельных сборок, однако главная сборка библиотеки базовых классов представлена файлом mscorlib.dll. В библиотеке базовых классов содержится огромное количество типов для решения распространенных задач при создании приложения. Приложение.NET будет обязательно использовать сборку mscorlib.dll и по мере необходимости— другие сборки (как встроенные, так и создаваемые вновь).

 

Стандартная система типов (Common Type System, CTS) — это формальная спецификация, которая определяет, как какой-либо тип (класс, структура, интерфейс, встроенный тип данных и т.п.) должен быть определен для его правильного восприятия средой выполнения.NET. CTS определяет синтаксические конструкции (в качестве примера можно взять перегрузку операторов), которые могут поддерживаться, а могут и не поддерживаться конкретным языком программирования.NET. Если необходимо создавать сборки, которые могли бы использоваться всеми языками программирования.NET, то придется при создании типов следовать правилам Common Language Specification— CLS.

Концепция классов — краеугольный камень любого объектно-ориентированного программирования. Она поддерживается всеми языками программирования.NET. Класс (class) — это набор свойств, методов и событий, объединенных в единое целое. В CTS предусмотрены абстрактные члены классов, что обеспечивает возможность применения полиморфизма в производных классах. Множественное наследование в CTS запрещено.

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

Интерфейсы (interfaces) — это просто наборы абстрактных методов, свойств и определений событий. В отличие от классической технологии СОМ, интерфейсы.NET не являются производными от единого общего интерфейса, каким в технологии СОМ был интерфейс IUnknown. В интерфейсах самих по себе смысла не очень много. Однако если мы знаем, что какой-либо класс реализует известный интерфейс, мы вправе требовать от этого класса определенной функциональности. При создании собственного интерфейса на.NET-совместимом языке программирования можно произвести этот интерфейс сразу от нескольких базовых интерфейсов.

Член класса или структуры (member) — это либо метод, либо свойство, либо поле, либо событие. Однако важно отметить, что для любого члена в.NET существует набор характеристик.

Например, любой член в.NET характеризуется своей областью видимости (public, private, protected и т.д.). Член можно объявить как абстрактный, чтобы воспользоваться возможностями полиморфизма при работе с производными классами. Члены могут быть статическими (static, такие члены могут совместно использоваться всеми объектами данного класса) и обычными — принадлежащими только одному объекту данного класса.

Перечисление (enumeration) — это удобная программная конструкция, которая по­зволяет объединять пары имя — значение под указанным именем перечисления.

В CTS все перечисления являются производными от единственного базового класса System.Enum. Делегаты (delegates) — в технологии.NET это безопасный для типов эквивалент указателя на функцию в С. Однако между ними есть и существенное отличие. Делегат.NET — это уже не просто адрес в оперативной памяти, а класс, производный от базового класса MulticastDelegate. Делегаты очень полезны в тех ситуациях, когда необходимо, чтобы одна сущность передала вызов другой сущности. Делегаты — это краеугольный камень в технологии обработки событий.NET.

Не все языки.NET могут работать с некоторыми встроенными типами данных CTS. Поэтому очень важно определить такой набор типов (и программных конструкций), с которым гарантированно смогут работать любые.NET-совместимые языки программирования. Такой набор есть, и он называется CLS.

Нет необходимости доказывать, что одни и те же программные конструкции в раз­ных языках выглядят абсолютно по-разному. Например, в С# объединение строк (конкатенация) производится с помощью оператора плюс (+), в то время как в Visual Basic для этой же цели используется амперсанд (&).

Для среды выполнения.NET такая разница в синтаксисе абсолютно безразлична: все равно соответствующие компиляторы создадут одинаковый код IL. Однако языки программирования отличаются не только синтаксисом» но и возможностями. Например, в одних языках программирования разрешена перегрузка операторов, а в других — нет. Одни языки могут использовать беззнаковые (unsigned) типы данных, а в других такие типы данных не предусмотрены. Вывод очевиден — необходимы некие единые правила для всех языков.NET. Если им следовать, то гарантируется, что программные модули, написанные на разных языках, будут нормально взаимодействовать друг с другом. Такой набор правил определен в спецификации CLS (Common Language Specification).

Набор правил, определяемый CLS, не только гарантирует нормальное взаимо­действие блоков кода, созданных на разных языках. Такой набор правил еще и определяет минимальные требования, которые предъявляются к любому.NET-совместимому компилятору. Необходимо помнить, что в CLS — это лишь часть тех возможностей, которые определены в CTS.

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

 

 

<== предыдущая лекция | следующая лекция ==>
Роль метаданных | Назначение и функции операционных систем
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 453; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.