|
|||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Статические поля, методы, конструкторы, классы
Статический класс в основном такой же, что и нестатический класс, но имеется одно отличие: нельзя создавать экземпляры статического класса. Другими словами, нельзя использовать ключевое слово new для создания переменной типа класса. Поскольку нет переменной экземпляра, доступ к членам статического класса осуществляется с использованием самого имени класса.
public static class TemperatureConverter { public static double CelsiusToFahrenheit(string temperatureCelsius) { // Convert argument to double for calculations. double celsius = Double.Parse(temperatureCelsius);
// Convert Celsius to Fahrenheit. double fahrenheit = (celsius * 9 / 5) + 32; return fahrenheit; }
public static double FahrenheitToCelsius(string temperatureFahrenheit) { // Convert argument to double for calculations. double fahrenheit = Double.Parse(temperatureFahrenheit);
// Convert Fahrenheit to Celsius. double celsius = (fahrenheit - 32) * 5 / 9; return celsius; } } class TestTemperatureConverter { static void Main() { Console.WriteLine("Please select the convertor direction"); Console.WriteLine("1. From Celsius to Fahrenheit."); Console.WriteLine("2. From Fahrenheit to Celsius."); Console.Write(":"); string selection = Console.ReadLine(); double F, C = 0;
switch (selection) { case "1": Console.Write("Please enter the Celsius temperature: "); F = TemperatureConverter.CelsiusToFahrenheit(Console.ReadLine()); Console.WriteLine("Temperature in Fahrenheit: {0:F2}", F); break;
case "2": Console.Write("Please enter the Fahrenheit temperature: "); C = TemperatureConverter.FahrenheitToCelsius(Console.ReadLine()); Console.WriteLine("Temperature in Celsius: {0:F2}", C); break;
default: Console.WriteLine("Please select a convertor."); break; }
// Keep the console window open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); } }
№1. Дайте определение понятия «.NET Framework». Microsoft.NET Framework – это программная среда (software framework), которая может устанавливаться на компьютерах под управлением операционной системы Microsoft Windows operating systems. Она включает большую библиотеку классов (которые реализуют решение распространенных задач разработки) и виртуальную машину (virtual machine), которая управляет выполнением программ, написанных для данной среды. .NET Framework является ключевой технологией, предлагаемой компанией Microsoft для разработки большинства новых приложений разрабатываемых для платформы Windows.
Microsoft.Net Platform это новая интегрированная, объектно-ориентированная среда разработки и выполнения программ. • С программной точки зрения.Net Platform это – набор библиотек классов; – среда выполнения программ CLR; – набор программных инструментов (Visual Studio, компиляторы, отладчики и пр.).
№2. Дайте определение понятия «Common Language Runtime (CLR)». Common Language Runtime (CLR) – общая система поддержки времени выполнения, общеязыковая исполняющая среда, виртуальная машина CLR l выполняет все программы l C# компилирует в Microsoft Intermediate Language (MSIL), язык промежуточного уровня, в который компиляторы, совместимые c CLR, компилируют исходные тексты программ l MSIL выполняется на CLR l Virtual Machine наподобие Java l Код, написанный на множестве языков, компилируется в MSIL Common Language Runtime (CLR) — общеязыковая исполняющая среда, которая расположена поверх операционной системы и предоставляет виртуальную машину для исполнения байт-кода приложений — языка Common Intermediate Language (CIL или просто IL). Среда CLR является реализацией спецификации CLI (англ. Common Language Infrastructure), спецификации общеязыковой инфраструктуры компании Microsoft. CLR интерпретирует и исполняет код на языке CIL (реализация компиляции которого компанией Microsoft называется MSIL), а также предоставляет MSIL-программам (а следовательно, и программам, написанным на языках высокого уровня, поддерживающих.NET Framework) доступ к библиотекам классов.NET Framework, или так называемой.NET FCL (Framework Class Library).
№3. Дайте определение «Байт-код Common Intermediate Language (CIL)». Common Intermediate Language (CIL) — промежуточный язык, разработанный фирмой Microsoft для платформы.NET Framework. JIT-компилятор CIL является частью так называемой CLR (англ. Common Language Runtime) — общей среды выполнения языков.NET. Команды CIL компилируются в машинный код соответствующего типа процессора по запросу (JIT, just-in-time) в период выполнения. Обычно компиляция метода происходит один раз во время его первого вызова. Затем результат кэшируется в памяти, чтобы избежать задержек при повторных вызовах. Язык CIL по синтаксису и мнемонике напоминает язык ассемблера. Его можно рассматривать как ассемблер виртуальной машины.NET. В то же время язык CIL содержит некоторые достаточно высокоуровневые конструкции, повышающие его уровень по сравнению с ассемблером для любой реально существующей машины, и писать код непосредственно на CIL легче, чем на ассемблере для реальных машин. Поэтому его можно рассматривать как своеобразный «высокоуровневый ассемблер».
Пример программы Hello, World, написанной на CIL. Она выводит строку «Hello, world!». .assembly Hello {} .method public static void Main() cil managed { .entrypoint .maxstack 1 ldstr "Hello, world!" call void [mscorlib]System.Console::WriteLine(string) ret }
№4. Дайте определение понятия «Base Class Library». Base Class Library, BCL — стандартная библиотека классов платформы «.NET Framework». Программы, написанные на любом из языков, поддерживающих платформу.NET, могут пользоваться классами и методами BCL — создавать объекты классов, вызывать их методы, наследовать необходимые классы BCL и т. д. Библиотека BCL не является некоей «надстройкой» над функциями операционной системы или над каким-либо API. Библиотеки BCL является органической частью самой платформы.NET Framework, её «родным» API. Её можно рассматривать как API виртуальной машины.NET.
Пространство имен: • Разделение объектов по иерархически организованным группам • Используется иерархическое пространство имен <имяПространства>.<имяТипа>.<имяПодтипа>.<имяСобственное> – Вложенность нескольких имен (как почтовый адрес) – Значительно понижается вероятность совпадения имен классов разработанных разными компаниями • Для описания связей между классами (классы близкие по функциональности включены в одно пространство) • Пространство имен включает - классы (Class); интерфейсы (Interface); перечисления (Enum); делегаты (сигнатуры классов, Delegate); другие пространства имен.
Основные пространства имён (Namespaces) • System – общие базовые типы • System.VisualBasic – базовые типы для VBasic • System.Drawing – классы для рисования • System.Windows.Forms – классы для приложений с графическим интерфейсом • System.Data – классы для работы с данными в БД • System.Web – классы для ASP.NET и Web-форм • System.Net – классы для работы с сетевыми протоколами • System.Web.Services - классы для разработки Web сервисов • System.Web.UI – основные классы используемые ASP.Net
№5. Дайте определение «Переменная (Variable)», «Куча (Heap)», «Стек (Stack)». • Переменная — это именованные участки памяти, которые могут хранить: – значения некоторого типа (для значащих типов, в стеке), – ссылки на экземпляры некоторых классов (для ссылочных типов, ссылки на объекты, расположенные в "куче"). • В C# выделяют два типа переменных: – поля классов (объявляются в описаниях классов и создаются для каждого объекта) и – локальные переменные методов (создаются при каждом вызове метода класса). class Variables { static void Main() { int myInt = 10; System.Console.WriteLine("Инициализированная переменная myInt: {0} ", myInt); myInt = 5; System.Console.WriteLine("Переменная myInt после присвоения значения: {0}", myInt); Console.ReadLine(); }
} Виды переменных по области видимости: • Уровня класса (статические переменные класса) – Доступ с помощью имени класса – Время жизни – время работы программы – Доступ из всех классов (если public) • Уровня объекта класса (поля) – Доступ с помощью ссылки на объект – Время жизни – от new до удаления ссылок – Доступ в методах класса (если public то из других классов) • Уровня метода (локальные переменные) – Доступ по имени – Время жизни – выполнения метода – Доступны только в методе после объявления
Время жизни переменных: • Переменные появляются (рождаются) – не статические • переменные методов появляются в результате их объявления. • переменные классов (поля) появляются в результате создания объекта класса. – статические переменные создаются при запуске программы. • Переменные исчезают (умирают) – не статические • Переменные методов после закрытия блока в котором они объявлены (}). • Переменные класса после уничтожения объекта – статические уничтожаются после завершения программы.
Куча (heap) - это область оперативной памяти, в разных частях которой по запросу программы операционная система может выделять участки требуемого размера для хранения объектов классов. • Память в куче выделяется с помощью операции new. • Участки памяти в "куче" могут выделяться и освобождаться в любом порядке. • Хотя программа может хранить элементы данных в "куче", она не может явно удалять их из нее. Вместо этого компонент среды CLR, называемый Garbage Collector (GC), автоматически удаляет не используемые участки "кучи", когда он определит, что код программы уже не имеет доступа к ним (не хранит их адреса). • Автоматическая сборка мусора освобождает программиста от необходимости освобождать не используемую память вручную, что часто приводит к ошибкам работы программы.
Стек (stack) – это линейный участок памяти (массив), который действует как структура данных типа «Последним пришел – первым ушел» (last-in, first-out – LIFO). • Основной особенностью стека являются то, что данные могут добавляться только к вершине стека и удаляться из вершины. Добавление и удаление данных из произвольного места стека невозможно. • Операции по добавлению и удаление элементов из стека выполняются очень быстро. Однако размеры стека, как правило, ограничены, и время хранения данных зависит от времени жизни переменной. • Для всех локальных переменных методов и передаваемых методам параметров память выделяется в вершине стека. • После того, как методы заканчивают работу вся выделенная память в стеке для их переменных автоматически освобождается.
Память программы - стек и куча
№6. Дайте определение понятию «Сборщик мусора». Сборка мусора — одна из форм автоматического управления памятью. Специальный процесс, называемый сборщиком мусора (garbage collector), периодически освобождает память, удаляя объекты, которые уже не будут востребованы приложениями — то есть производит «сбор мусора».
Основные принципы Сборка мусора — технология, позволяющая, с одной стороны, упростить программирование, избавив программиста от необходимости вручную удалять объекты, созданные в динамической памяти, с другой — устранить вызванные неправильным ручным управлением памятью ошибки. В системе со сборкой мусора обязанность освобождения памяти от объектов, которые больше не используются, возлагается на среду исполнения программы. Программист лишь создаёт динамические объекты и пользуется ими, он может не заботиться об удалении объектов, поскольку это делает за него среда. Для осуществления сборки мусора в состав среды исполнения включается специальный программный модуль, называемый «сборщиком мусора». Этот модуль периодически запускается, определяет, какие из созданных в динамической памяти объектов более не используются, и освобождает занимаемую ими память. Периодичность запуска сборщика мусора определяется особенностями системы. Сборщик может работать в фоновом режиме, запускаясь при неактивности программы (например, когда программа простаивает, ожидая ввода данных пользователем). Сборщик мусора запускается безусловно, прерывая на время своей работы выполнение программы, когда очередную операцию выделения памяти оказывается невозможно выполнить из-за того, что вся доступная память исчерпана. После освобождения памяти прерванная операция выделения памяти возобновляется и программа продолжает исполняться дальше. Если же оказывается, что освободить память невозможно, среда исполнения останавливает программу с сообщением об ошибке «Недостаточно памяти».
№7. Дайте определение понятиям «Компилятор (Compiler)», «Отладчик (Debugger)», «Решение (Solution)» и «Проект (Project)». Компилятор — программа или техническое средство, выполняющее компиляцию. Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера). Входной информацией для компилятора (исходный код) является описание алгоритма или программа на проблемно-ориентированном языке, а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код). Компилировать — проводить трансляцию машинной программы с проблемно-ориентированного языка на машинно-ориентированный язык.
Вызов компилятора • csc.exe progr.cs / r eference:System.Drawing.dll,System.Windows.Forms.dll / t arget:exe /out:myprg.exe • По умолчанию подключается модуль – mscorlib.dll • / r eference:<подключаемые библиотеки> • / t arget:<тип результата> – exe – консольное приложение – winexe – GUI приложение – library – библиотека классов (dll) – module – управляемый модуль / out: <имя полученного файла>
Отладчик — компьютерная программа, предназначенная для поиска ошибок в других программах, ядрах операционных систем, SQL-запросах и других видах кода. Отладчик позволяет выполнять пошаговое выполнение программы, отслеживать, устанавливать или изменять значения переменных в процессе выполнения кода, устанавливать и удалять контрольные точки или условия остановки и т.д.
Возможностью отладчика – установка точек останова программы. Точка останова или breakpoint – это преднамеренная остановка выполнения программы, при котором выполняется вывод отладчика.
Решение - это набор проектов для создания программного комплекса для решения сложной проблемы.
• Оболочка для набора проектов • Решение может размещаться в отдельной папке или в папке с проектов. • Если решение в отдельной папке, то все проекты в покаталогах этой папки • Файлы решения – Описание решения <имя проекта>.sln – Опции и конфигурация решения <имя проекта>.suo
Проект – это набор файлов для создания отдельной программы. • Все файлы в одной папке с именем проекта • Содержание проекта • Описание проекта <имя проекта>.csproj • Описание сборки AssemblyInfo.cs • Файлы с кодом <имя>.cs
№8. Перечислите встроенные типы данных, соответствующие Common Language Specification (CLS). Язык С# предоставляет программисту широкий спектр встроенных типов, которые соответствуют CLS и отображаются на основные типы платформы.NET. Это гарантирует, что объекты, созданные на С#, могут успешно использоваться наряду с объектами, созданными на любом другом языке программирования, поддерживающем.NET CLS. Каждый тип имеет строго заданный для него размер, который не может изменяться.
В дополнение к этим примитивным типам С# может иметь объекты типа enum и struct.
№9. В чем заключаются различия между классом и структурой? Структуры синтаксически очень похожи на классы, но существует принципиальное отличие, которое заключается в том, что класс – является ссылочным типом (reference type), а структуры – значимый класс (value type). А следовательно, классы всегда создаются в, так называемой, “куче” (heap), а структуры создаются в стеке (stack). Главное отличие структур и классов: структуры передаются по значению (то есть копируются), объекты классов - по ссылке. Именно это является существеннейшим различием в их поведении, а не то, где они хранятся.
Классы: • Основные составные части программы на языке C# • Задают новые типы данных • Класс и тип – почти синонимы в С# • Везде, где могут использоваться встроенные типы, могут использоваться и классы – пользовательские типы. Синтаксис класса: [ атрибуты ] [ спецификаторы ] class имя_класса [: предки ] тело_класса Составные элементы класса: 1. Поля (field) – обычно скрытые данные класса (внутренне состояние) 2. Свойства (property) – доступ к данным класса с помощью функций – get – получить – set – задать 3. Методы (methods) – операции над данными класса (поведение) (можно называть функциями) 4. События (event) – оповещение пользователей класса о том, что произошло что-то важное.
Доступ к элементам класса: • public ð вызов или доступ откуда угодно • protected ðтолько из производных классов (соответствует модификатору “family” в CLI) • private ð доступ только внутри текущего класса • sealed ðкласс, от которого не допускается определение потомков (сравните: в Java ~ final) • internal ð доступ только из текущей сборки (CLI: “assembly”; Java: аналогов нет) • protected internal ð доступ только из подклассов, определенных в текущей сборке (CLI: “family and assembly”) Простая программа: class Hello { static void Main() { // Use the system console object System.Console.WriteLine("Hello World"); } }
Структура- тип данных, аналогичный классу, но имеющий ряд отличий от него. Синтаксис структуры: [ атрибуты ] [ спецификаторы ] struct имя_структуры [: интерфейсы ] тело_структуры [: ] Пример: using system; namespace ConcoleApplication1 { Struct Complex { public double re, im; public Complex (double re_, double im_) { re = re_; im=im_; } public static Complex operator + (Complex a, Complex b) { Return new Complex (a.re + b.re, a.im + b.im); } public override string ToString () { return (string.Format (“({0,2:0.##}; {1,2:0.##})”, re, im)); } } }
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.035 сек.) |