Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_OOP.docx
Скачиваний:
5
Добавлен:
21.09.2019
Размер:
59.42 Кб
Скачать
  1. Перегружаемые операторы: бинарные, унарные, префиксные, постфиксные.

зык С# позволяет определить значение оператора относительно создаваемого

класса. Этот процесс называется перегрузкой операторов. Перефужая оператор,

вы расширяете его использование для класса. Перегрузка операторов тесно связана с перегрузкой методов. Для перегрузки операторов используется ключевое слово operator, позволяющее создать операторный

метод, который определяет действие оператора, связанное с его классом.

Существует две формы методов operator: одна используется для унарных опера-

торов, а другая — для бинарных. Общий же формат (для обоих случаев) таков:

// Общий формат перегрузки для унарного оператора,

public static тип_возврата operator ор{

тип_параметра операнд)

{

// операции

}

// Общий формат перегрузки для бинарного оператора,

public static тип_возврата operator op{

тип_параметра1 операнд1,

тип_параметра2 операнд2)

{

// операции

}

Здесь элемент ор — это оператор (например " + " или " / " ) , который перефужается.

Элемент тип_возврата — это тип значения, возвращаемого при выполнении задан-

ной операции. Для унарных операторов операнд передается в элементе операнд, а для

бинарных — в элементах операнд1 и операнд2.

Для унарных операторов тип операнда должен совпадать с классом, для которого

определен оператор. Что касается бинарных операторов, то тип хотя бы одного опе-

ранда должен совпадать с соответствующим классом. Унарные операторы перегружаются точно так же, как и унарные. Главное отличие, конечно же, состоит в том, что в этом случае существует только один операнд.

можно переписать в виде префиксной формы. Как вы уже знаете, операторы "++" и "—" имеют как префиксную, так и постфиксную форму. Например, инструкции ++а и а++ представляют собой допустимое использование оператора инкремента. Однако при перегрузке оператора "++" обе формы вызывают один и тот же метод. Следовательно,

в этом случае невозможно отличить префиксную форму оператора "++" от постфикс-

ной. Это касается и перегрузки оператора "--".

I ++х; // Префиксная форма оператора инкремента.

или в виде постфиксной формы:

I х++; // Постфиксная форма оператора инкремента.

В предыдущем примере не имело значения, в какой форме был применен опера-

тор инкремента: префиксной или постфиксной. Но если оператор инкремента или

декремента используется как часть большего выражения, то форма его применения

имеет важное значение. Если такой оператор применен в префиксной форме, то С#

сначала выполнит эту операцию, чтобы операнд получил новое значение, которое за-

тем будет использовано остальной частью выражения. Если же оператор применен в

постфиксной форме, то С# использует в выражении его старое значение, а затем вы-

полнит операцию, в результате которой операнд обретет новое значение.

  1. Спецификация cli. Структура .Net Framework.

Оболочка .NET Framework определяет среду для разработки и выполнения сильно

распределенных приложений, основанных на использовании компонентных объектов.

Она позволяет "мирно сосуществовать" различным языкам профаммирования и

обеспечивает безопасность, переносимость программ и общую модель профаммиро-

вания для платформы Windows. Важно при этом понимать, что .NET Framework no

своему существу не офаничена применением в Windows, т.е. профаммы, написанные

для нее, можно затем переносить в среды, отличные от Windows.

Связь среды .NET Framework с С# обусловлена наличием двух очень важных

средств. Одно из них, Common Language Runtime (CLR), представляет собой систему,

которая управляет выполнением пользовательских профамм. CLR — это составная

часть .NET Framework, которая делает профаммы переносимыми, поддерживает

многоязыковое профаммирование и обеспечивает безопасность.

Второе средство, библиотека классов .NET-оболочки, предоставляет программам

доступ к среде выполнения. Например, если вам нужно выполнить операцию ввода-

вывода, скажем, отобразить что-либо на экране, то для этого необходимо использо-

вать .NET-библиотеку классов. ьтате компиляции Сопрограммы получается не исполняемый код, а файл, который содержит специальный псевдокод, именуемый промежуточным языком Microsoft

(Microsoft Intermediate Language — MSIL). MSIL определяет набор переносимых инст-

рукций, которые не зависят от типа процессора. По сути, MSIL определяет переноси-

мость ассемблера. И хотя концептуально MSIL подобен байт-коду Java, это не одно и

то же. Цель CLR-системы — при выполнении программы перевести ее промежуточный

код в исполняемый. Таким образом, программа, подвергнутая MSIL-компиляции,

может быть выполнена в любой среде, для которой реализована CLR-система. В этом

частично и состоит способность среды .NET Framework добиваться переносимости

программ.

.NET Framework состоит прежде всего из огромной библиотеки программ, к ко-

торой можно обращаться из различных языков программирования (например

из С#) с помощью различных технологий объектно-ориентированного программи-

рования (ООП, object-oriented programming). Эта библиотека разбита на несколько

различных модулей таким образом, что имеется возможность использовать ту или

иную ее часть в зависимости от требуемых результатов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]