- •Общие сведения Введение в платформу .Net
- •Общая система типов (Common Type System)
- •Assemblies - управляемые компоненты
- •Система безопасности
- •Промежуточный Язык и jit компилятор
- •Базовые классы
- •Компилятор сsc.Exe
- •Разработка элементарных программ на языке программирования c#
- •Основные управляющие операторы:
- •Пространство имен:
- •Пример программы на c#
- •Классы и обьекты
- •Наследование
- •Полиморфизм
- •Виртуальные методы
- •Интерфейсы
- •Делегаты
- •Обработка событий
- •Исключительные ситуации
- •Ход работы
- •Написать c# программу, реализующую функцию согласно варианту задания. Исходные данные вводятся с клавиатуры.
- •2) Построить иерархию классов в соответствии с вариантом задания(добавление редактирование, удаление и просмотр):
- •3) Расширить иерархию классов из задания №2 с использованием виртуального класса в качестве основы иерархии. Показать пример использования полиморфизма методов.
- •5) Реализовать обработку ошибок задания №4, при этом переопределив с помощью наследования событие:
- •Контрольные вопросы
- •Отчетность
- •Дополнительная литература
Общая система типов (Common Type System)
Формальная спецификация системы типов, реализованной CLR, называется Common Type System (CTS). Основная задача системы типов – обеспечение интеграции языков.
Чтобы писать управляемый код не нужно знать правила CTS, поскольку выбранный язык предоставит собственный синтаксис и правила типов и отобразит свой синтаксис в синтаксис CLR в процессе компиляции. Например, CTS поддерживает только одиночное наследование, а Cи++ поддерживает классы, которые наследуют от нескольких базовых классов. Чтобы помочь разработчикам, компилятор Visual C++ сообщит об ошибке, если заметит, что вы пытаетесь использовать множественное наследование в управляемом коде.
Еще одно правило CTS гласит, что все базовые классы должны наследовать классу System.Object. Object – это имя типа, определенного в пространстве имен System. (Более подробно базовые классы описываются ниже).
Assemblies - управляемые компоненты
[assembly – новый термин, который раньше употреблялся только в отношении языка ассемблера. По сути это «пакет» или «комплект», но я думаю, что лучше или оставить английское написание, или перевести как асембл (по аналогии со словом stub, которое сейчас правильно переводится как «стаб», а раньше пытались переводить как «заглушка»). Но managed я перевел как «управляемый», поскольку вряд ли приживется слово «менеджед». CLR тоже сложно переводить.]
.NET использует новую модель расположения приложений, которая упрощает инсталляцию и отслеживание версий. Ключевое понятие этой модели – асембл (assembly). Assembly – это набор ресурсов и типов, а также метаданные, описывающие типы и методы, реализованные assembly. Т.о. assembly – это самоописанный компонент. Основное преимущество таких компонентов в том, что для их использования не нужны никакие другие файлы. Заголовочные файлы, IDL файлы, библиотеки типов и прокси-стабы не требуются, чтобы получить доступ к компоненту из любого языка - необходимая информация заключена в метаданных компонента.
Assemblies могут принадлежать одному приложению или разделяться между несколькими приложениями. CLR может загружать различные версии одного assembly для двух различных приложений, которые выполняются одновременно. Поскольку assembly самоописаны, никакая их регистрация в операционной системой не требуется и инсталляция приложения представляет простое копирование файлов. Assemblies также играют роль в .NET системе безопасности, где assembly является единицей, на которую запрашиваются и предоставляются разрешения.
Система безопасности
CLR предоставляет сервисы безопасности, контролирующие доступ пользователей к ресурсам и действия программ. Поскольку CLR используется, чтобы загружать код, создавать объекты и вызывать методы, он может управлять безопасностью и предписывать политики безопасности. Обеспечение безопасности в .NET возможно на двух уровнях: на уровне кода (code access security) и на уровне ролей пользователей (role-based security).
Программисты определяют требуемые привилегии, которые должен иметь код для выполнения работы. Например, код нуждается в разрешении, чтобы писать в файл или читать переменные среды. Эта информация хранится в assembly, наряду с информацией относительно подлинности кода. Политики для предоставления разрешений устанавливаются администраторами системы на основании данных относительно происхождения кода и прочих. Разрешения могут выдаваться также исходя из данных пользователя. Роли представляют собой категории пользователей и могут быть определены во время разработки или в процессе инсталляции.
