close

Вход

Забыли?

вход по аккаунту

?

Lectures for zaochnoe-osnovy-csharp

код для вставки
Лекционный материал для заочников (гр. 7-ЗАМ-1)
"Программирование и основы алгоритмизации"
Глава 1 Особенности и преимущества С#
Специально для платформы .NET Microsoft был разработан новый язык программирования C#. Платформа .NET определяет среду для разработки и выполнения распределенных приложений, основанных на использовании компонентных объектов. Связь среды .NET с С# обусловлена наличием двух важных программных средств: системы CLR-Common Language Runtime и библиотеки классов. CLR представляет систему, которая управляет выполнением пользовательских программ. CLR обеспечивает переносимость программ , поддерживает многоязыковое программирование. Библиотека классов .NET платформы обеспечивает автоматизированный процесс создания программ. Используя библиотеку классов, C#-программы автоматически переносимы на .NET платформы, установленные на других компьютерах. Система CLR управляет выполнением .NET кода следующим образом. После компиляции исходного кода C#-программы получается неисполняемый код, а файл, который содержит этот код, представляется на промежуточном языке Microsoft Intermediate Language - MSIL. MSIL определяет набор переносимых инструкций, независящих от типа процессора. Основное назначение инструкций CLR-системы перевести это промежуточный код во время выполнения программы в исполняемый код. Это перевод осуществляется JIT-компилятором ("just-in-time"). При выполнении >NET- программы CLR активизирует JIT-компилятор, который преобразует MSLR-код в код, требуемый платформой .NET. Таким образом, C#-программа в действительности выполняется в виде .NET-кода, несмотря на то, что она с самого начала была скомпилирована в MSIL-код. В результате компиляции C#-программы помимо MSIL-кода образуются метаданные (metadata). Они описывают данные, используемые программой, и позволяют коду взаимодействовать с другим кодом. Метаданные находятся в том же файле, в котором хранится MSIL-код. MSIL-код называется управляемым и выполняется под управлением CLR-системы. Достоинством его является то, что в процессе выполнения
С# - программ автоматически реализуется управление памятью, обеспечивается возможность использования различных языков программирования для написания программ; повышается безопасность программных средств, гарантируется четкая организация взаимодействия программных компонентов C# - программ. C# - это язык программирования, синтаксис которого похож на синтаксис java. Так, например, в C# , как и в java, определение класса состоит из одного файла ( расширение имени *cs), в отличии от С++ , где определение класса производится в двух файлах: заголовочном (*h) и файле реализации (*cpp). Однако в java не обеспечивается полная интеграция с платформой Windows, несмотря на то что java-программы выполняются в среде Windows за счет установки виртуальной java- машины. C# содержит много новых средств, разрешающих проблемы неразрешенные java. Синтаксические конструкции C# унаследованы от С++.
Основные особенности C# можно представить следующим образом.
* В C# - программах, как правило, нет необходимости использовать указатели. (При желании имеется возможность использования указателей.)
* С# обеспечивает автоматическое управление памятью.
* В C# предусмотрены встроенные синтаксические конструкции для работы с перечислениями, структурами и свойствами классов.
* В C# упрощена перегрузка операторов, унаследованная от С++.
* В C# обеспечивается поддержка использования интерфейсов.
* В отличие от классического COM применение интерфейсов не является единственным способом работы с типами. Используя различные двоичные модули, .NET позволяет передавать объекты (как значения или как ссылки) через интерфейсы программных модулей.
* C# обеспечивает создание кода, предназначенного для выполнения только в среде .NET., двоичный файл которого содержит управляемый файл, называемый сборкой (assembly).
Сборки создаются в виде модуля DLL или EXE на языке IL. Назначение IL аналогично по назначению байт-коду java - он компилируется в платформенно - специфические инструкции, только когда к блоку инструкций обращается CLR платформы .NET.
Кроме инструкций IL, двоичные файлы модули содержат метаданные, описывающие все типы, используемые в сборке и саму сборку. Часть метаданных, описывающих сборку, называют манифестом В манифесте дается описание использованных ограничений по безопасности, о поддерживаемых разговорных языках, приводится список всех внешних сборок, которые необходимы для нормальной работы C#-программы. В большинстве случаев двоичный файл .NET и сборка это одно и то же. В сборке из одного файла и в этом файле содержится и манифест, и метаданные, и инструкции IL.
Однако сборка может состоять из нескольких двоичных файлов и в этом случае называется модулем. При создании сборок из нескольких двоичных файлов, один из них содержит манифест сборки и в нем же могут содержаться другие данные и инструкции. Все остальные могут содержать только метаданные и инструкции IL. Много файловые сборки отличаются гибкостью при развертывании C#-приложений: так, при обращении к удаленной сборке, которая должна быть загружена на локальный компьютер, .NET загрузит лишь те модули сборки, которые необходимы в текущий момент времени. Такое решение .NET позволяет избежать ненужного сетевого трафика и повысить скорость работы C#-приложения. Компилятор платформы .NET генерирует код IL вне зависимости от того, какой язык программирования (C#, C++, Visual Basic.NET и пр.) был использован в качестве исходного кода. При обработке исходного кода на языке C# компилятором C# и при обработке исходного кода этой же программы, написано на языке Visual Basic .NET компилятором Visual Basic .NET будет получен такой же код на языке IL. Одно из преимуществ использование языка IL является возможность взаимодействия различных языков в одной программе т.к. на различных языках программирования после компиляции получается один и тот же единый код. Другое преимущество использования языка IL является независимость программы на IL от платформы (операционной системы). Таким образом, .NET создает условия для разработки приложений на любом языке, которые будут работать на любой платформе под управлением любой операционной системы. Используя код IL, разработчики C# - приложений могут не принимать во внимание особенности архитектуры CPU данного компьютера. Эти особенности будут учитываться при непосредственном запуске и работе C# -программы компилятором JIT. Откомпилированные из IL платформеннозависимые инструкции компилятор JIT помещает в кэш-память, что существенно ускоряет работу C# - приложения. При повторном обращении к фрагменту C#-приложения JIT уже его не компилирует, но считывает из кэш-памяти и выполняет его. Глава 2 Типы .NET и пространство имен.
Сборка однофайловая или многофайловая может содержать любое количество разных типов. К типам относятся классы, структуры, интерфейсы, перечисления и т.д.. При создании приложения необходимо организовать взаимодействие этих типов между собой. Для организации взаимодействия и создания собственных типов используется пространство имен .NET. Основное назначение пространства имен - этой логической структуры, является предупреждать возможные конфликты между именами в разных сборках. Стандартная система (Common Type System -CTS) - это спецификация, определяющая , как какой тип должен быть определен для его правильного восприятия средой выполнения . NET. CTS определяет синтаксические конструкции, которые могут поддерживаться, а могут и не поддерживаться конкретным языком программирования .NET. При создании типов необходимо следовать правилам Common Language Specification-CLS . В CTS предусмотрены классы и их члены-данные, которые обеспечивают применение полиморфизма в производных классах. Функциональная схема платформы .NET представлена на Рис. 2.1 Рис.2.1 Функциональная схема платформы .NET.
CTS содержит классы, структуры, интерфейсы, перечисления, делегаты, встроенные типы данных. Концепция классов - основа объектно-ориентированного программирования поддерживается всеми языками программирования .NET.
Наиболее важные характеристики классов представлены в Таблице 2.1
Таблица 2.1
ХарактеристикаЗначение характеристикиЯвляется ли класс закрытым?Закрытые классы не могут быть базовыми для производныхЕсть ли в классе интерфейс?Интерфейс обеспечивает связь между объектом и пользователемЯвляется ли класс абстрактным?Абстрактный класс не имеет объектов. Его назначение служить в качестве базового для других классов, который за счет механизма наследования обеспечивает производные классы наборами членами-данными и методами Какова область видимости для данного класса?Для каждого класса должен быть определен атрибут области видимости. Как правило, значение этого атрибута определяет, можно ли обращаться к этому классу из внешних сборок или только из той, которая его содержит
Структуры CTS могут рассматриваться как упрощенные классы. Структуры могут иметь любое число конструкторов с параметрами (конструктор без параметров автоматически устанавливаются по умолчанию). С помощью конструкторов с параметрами можно устанавливать значения любых полей объекта структуры.
Пример формирования структуры.
struct Stanok
{
// В структуре могут быть поля:
public string name; //Тип станка
// В структуре можно определить конструктор с параметрами
public Stanok (string name)
{
this.name=name;
}
//В структурах могут быть определены методы
public bool InWorking()
{
return false;
}
public bool InNonWorking()
{
return false;
}
Все CTS-совместимые структуры произведены от одного базового класса Systems.ValueType. Этот класс
Определяет структуру как тип данных для работы только со значениями, но не с ссылками.
Структура может иметь любое число интерфейсов. Структура не может быть унаследована от остальных типов данных и они всегда являются закрытыми - т.е. они не могут выступать в качестве базовых для целей наследования. Интерфейсы - это наборы абстрактных методов, свойств и событий. В отличие от технологии COM, интерфейсы .NET не являются производными от единого общего интерфейса, подобно интерфейсу INnkown технологии COM. При создании интерфейса на .NET-совместимом языке программирования можно произвести этот интерфейс сразу от нескольких базовых интерфейсов. Члены типов CTS. К членам CTS относятся в .NET: метод, свойство, поле и событие. Любой член в .NET характеризуется областью видимости (public, private, protected). Перечисления CTS. Перечисление - это программная конструкция, которая позволяет объединять пары имя-значение под именем указанным перечислением. В CTS все перечисления являются производными от единственного базового класса System Enum.
Базовый класс содержит множество полезных членов класса, которые используются для выполнения операций с парами имя-значение. Делегаты CTS. В .NET делегаты эквивалентны указателям на функцию в С. Однако делегат в .NET не адрес в оперативной памяти, а класс, производный от базового класса MulticastDelegate. Делегаты особенно эффективны при организации вызова одной сущностью другой сущности.
Встроенные типы данных CTS. В .NET предусмотрен большой перечень встроенных типов данных. Названия типов данных на языках .NET , как правило, имеют несущественные различия, однако содержание их одинаково.
Основы CLS. Одни и те же программные конструкции в разных языках платформы .NET представляются в неодинаковом виде. Так, например, представление функции, не возвращающей значение, имеет вид на языке C#:
Public void G( )
{
тело функции
..на языке Visual Basic .NET:
Public Sub G( )
То же тело функции, что и в C#
End Sub
Такая разница не влияет на компилятор csc.exe и vbc.exe при создании ими одинакового кода на языке IL.
Вместе с этим, различные языки программирования обладают различными возможностями. Таким образом, использование различных языков .NET для создания эффективных программ может решить проблему повышения эффективности программного обеспечения систем управления. Однако использование нескольких языков программирования требует разработки и соблюдения определенного протокола (набора правил), которые бы гарантировали нормальное функционирование модулей программ, созданных на различных языках. Такой набор правил определен в спецификации CLS. Правилам CLS должны соответствовать и языки .NET и инструментальные средства, главным образом, компиляторы языков .NET. Работа с пространствами имен. В .NET библиотеки базовых классов C# вообще не существует. Вместо этого разработчики на C# используют библиотеку базовых типов для всей среды .NET. Для организации типов внутри библиотеки используется концепция пространства имен.
Три приложения, написанные на трех разных языках программирования .NET: C#, VB.NET и Managed C++ (MC++), имеют вид:
// C#
using System;
public class MyApp
{
public Static void Main()
{
Console.WriteLine("C#");
}
}
//VB.NET
Imports System
Public Module MyApp
Sub Main()
Console.Write.("VB.NET");
End Sub
End Module
//Managed C++
using namespace System;
viod main() {
Console::WriteLine("MC++");
}
Из приведенных примеров следует, что при необходимости использования класса Console используется одно и то же пространство имен System. Пространство имен - это просто способ организации типов (классов, перечислений, интерфейсов, делегатов и структур) в единую группу.
Использование пространств имен в коде приложений. Рассмотрим на примере использование пространств имен. В качестве примера рассмотрим фрагмент программы:
//Пространство имен для использования в приложении
using System; //обязательное для всех приложений
using System Drawing; //для вывода изображений
using System Windows; //для элементов интерфейса
using System Data; //для доступа к базе данных
using System OLE DB; //если в базе данных используется OLE DB
Перед разработкой приложения необходимо определить к каким типам необходимо обратиться. Например, если требуется создать экземпляр класса Bitmap (определенного в пространстве имен System. Drawing), код может иметь вид:
//указываем использование пространство имен
using System.Drawing;
class MyClass
{
public void G( )
{
//создание растрового изображения 20x20 пикселов
Bitmap bm=new Bitmap(20,20)
...................................
}
}
Поскольку явно указано использование пространства имен System.Drawing с помощью ключевого слова using , компилятор может понять, что класс Bitmap - это член данного пространства имен. Однако можно обойтись без using, если использовать полное имя класса.
Например.
Class MyClass
{
public void G( ) {
//используется полное имя System.Drawing.Bitmap bm=new System.Drawing.Bitmap(20,20)
.......................
}
}
Из этих примеров следует, что если явно указывается используемое пространство имен, строки при обращении к классам этого пространства имен получаются гораздо меньшего размера. 
Автор
catharsis96
Документ
Категория
Без категории
Просмотров
320
Размер файла
68 Кб
Теги
osnovy, zaochnoe, csharp, lectures
1/--страниц
Пожаловаться на содержимое документа