- •1.Платформа разработки: .Net Framework: clr и fcl
- •2.Модель компиляции исходного кода в . Net
- •5.Понятие компонента. Видимые и невидимые компоненты. Примеры использования.
- •7.Понятие компонента, общие свойства и методы компонентов.
- •8.Ввод и отображение текстовой информации в Builder и Visual Studio. Сравнение возможностей (на примере).
- •9: Преобразование в символ и обратно
- •10.Компоненты Builder вкладки “Standart”: tCheckBox, tRadioButton, tRadioGroup и их аналоги в vs.
- •11. Компоненты вкладки “Standart”: tListBox, tComboBox и их аналоги в vs.
- •12. Cравнение компонентов builder tStringGrid и vs DataGridView
- •13. Возможности подключения к бд в Builder и vs.
- •14.Компоненты для работы с файлами на примере загрузки и сохранения текстовой информации для Builder и vs.
- •15.Создание нескольких форм в приложении. Отображение второстепенных форм во время работы приложения. Методы Show, ShowModal и их аналоги в V.S.(На примере)
- •19. Общие правила вычисления в командной строке пакета прикладных программ МатЛаб (с примером).
- •20. Использование переменных в MatLab.
- •21. Использование массивов в MatLab.
- •22. Построение графиков функций в среде MatLab/
2.Модель компиляции исходного кода в . Net
Microsoft предлагает компиляторы для нескольких языков, предназначенных
для этой платформы: C++/CLI, C# (произносится «си шарп» ), Visual Basic, JScript, J# (компилятор языка Java) и ассемблер Intermediate Language (IL). Кроме Microsoft, еще несколько компаний и академических учреждений создали компиляторы, генерирующие код, работающий в CLR. Мне известны компиляторы для APL, Caml, COBOL, Eiffel, Forth, Fortran, Haskell, Lexico, LISP, LOGO, Lua, Mercury, ML, Mondrian, Oberon, Pascal, Perl, Php, Prolog, Python, RPG, Scheme, Smalltalk и Tcl/Tk.
На рис. 1_1 показан процесс компиляции файлов с исходным кодом. Как ви_
дите, можно создавать файлы с исходным кодом на любом языке, поддерживающем CLR. Затем соответствующий компилятор используется для проверки синтаксиса и анализа исходного кода. Независимо от компилятора результатом является управляемый модуль (managed module) — стандартный переносимый исполняемый (portable executable, PE) файл 32_разрядной (PE32) или 64_разрядной Windows (PE32+), который требует для своего выполнения CLR.
Каждый компилятор, предназначенный для CLR, кроме генерации IL_кода, также должен создавать полные метаданные (metadata) для каждого управляемого модуля. Коротко говоря, метаданные — это просто набор таблиц данных, описывающих то, что определено в модуле, например типы и их члены. В метаданных также 4 Часть I Основы CLR есть таблицы, указывающие, на что ссылается управляемый модуль, например на
импортируемые типы и их члены. Метаданные расширяют возможности таких старых технологий, как библиотеки типов и файлы языка описания интерфейсов (Interface Definition Language, IDL). Важно заметить, что метаданные CLR гораздо полнее. И в отличие от библиотек типов и IDL они всегда связаны с файлом, содержащим IL_код. Фактически метаданные всегда встроены в тот же EXE/ DLL, что и код, так что их нельзя разделить. Так как компилятор генерирует метаданные и код одновременно и привязывает их к конечному управляемому модулю, рассинхронизация метаданных и описываемого ими IL_кода исключена.
3. Библиотека классов .NET Framework.
В .NET Framework включены сборки библиотеки классов .NET Framework Class Library (FCL), содержащие определения нескольких тысяч типов, каждый из которых предоставляет некоторую функциональность. В Microsoft работают над дополнительными библиотеками WinFx и DirectX SDK, которые предоставляют еще больше типов и функциональности.
Библиотека классов .NET Framework представляет собой библиотеку классов, интерфейсов и типов значений, которые обеспечивают доступ к функциональным возможностям системы. Она составляет основу для создания приложений, компонентов и элементов управления .NET Framework. Пространства имен и их категории в библиотеке классов перечислены в следующей таблице.
4.Система типов данных в .NET
CLR тесно связана с типами. Типы предоставляют определенную функциональность приложениям и компонентам. Они являются механизмом, позволяющим коду, написанному на одном языке программирования, взаимодействовать с кодом, написанным на другом. Поскольку типы
являются основой CLR, Microsoft создала формальную спецификацию — общую систему типов (Common Type System, CTS), описывающую определение типов и их поведение.
В спецификации CTS утверждается, что любой тип может содержать ноль или более членов.
Пример членов:
-Поле — переменная, являющаяся частью состояния объекта. Поля идентифицируются по имени и типу.
-Метод — функция, выполняющая некоторое действие над объектом, зачастую изменяя его состояние. Метод имеет имя, сигнатуру и модификаторы. Сигнатура определяет соглашение о вызове метода, число параметров (и их последовательность), типы параметров, а также тип значения, возвращаемого методом.
-Свойство — для вызывающей стороны этот член выглядит, как поле, но в реализации типа он выглядит, как метод (или два). Свойства позволяют типу, в котором они реализованы, проверить входные параметры и состояние объекта, прежде чем предоставить доступ к своим значениям и/или вычислять значения только при необходимости. Свойства также упрощают синтаксис обращения к типу. И, наконец, свойства позволяют создавать «поля» только для чтения или только для записи.
-Событие — обеспечивает механизм взаимных уведомлений объектов. Так, кнопка может предоставлять событие, уведомляющее другие объекты о том, что ее щелкнули.
CTS также определяет правила видимости типов и доступа к их членам. Например, если тип помечен как открытый (public), он экспортируется, видим и доступен любой сборке. С другой стороны, если тип помечен как сборочный (assembly) (в C# — internal), он видим и доступен только коду той сборки, в которой реализован. Таким образом, CTS определяет правила, по которым сборки формируют границы видимости типа, а CLR реализует эти правила.
Видимый вызывающему коду тип контролирует доступ к своим членам со стороны вызывающего кода. Вот допустимые варианты управления доступом к методам или полям.
Закрытый (private) — метод может вызываться другими методами только из того же типа.
Родовой (family) — метод может вызываться производными типами независимо от того, в какой они сборке. Во многих языках (например, в C++ и C#) такой модификатор называется protected.
Родовой и сборочный (family and assembly) — метод может вызываться производными типами, но только если они определены в той же сборке. Многие языки (вроде C# и Visual Basic) не реализуют такое ограничение доступа. В ассемблере IL такой модификатор, естественно, предусмотрен.
Сборочный (assembly) — метод может вызываться любым кодом из той же сборки. Во многих языках этому соответствует модификатор internal.
Родовой или сборочный (family or assembly) — метод может вызываться производными типами из любой сборки и любыми типами из той же сборки. В C# этому соответствует protected internal.
Открытый (public) — метод доступен любому коду из любой сборки. Еще одно правило CTS: все типы должны (в конечном счете) наследовать типу System.Object. Как видите, Object — имя типа, определенного в пространстве имен System. Object является корнем всех остальных типов, гарантируя наличие некоторой минимальной функциональности у каждого экземпляра типа. В частности, тип System.Object позволяет:
-сравнивать два экземпляра;
-получать хеш_код экземпляра;
-определять истинный тип экземпляра;
-получать поверхностную (побитную) копию экземпляра;
-получать текущее состояние экземпляра объекта в виде строки.
