- •Основные положения объектно-ориентированного программирования. Технология объектно-ориентированного программирования: назначение и применение.
- •Основные парадигмы объектно-ориентированного программирования: абстракция.
- •Основные парадигмы объектно-ориентированного программирования: инкапсуляция. Доступ к элементам класса (public, protected, private).
- •Основные парадигмы объектно-ориентированного программирования: полиморфизм.
- •Пространство имен: назначение и применение.
- •Структура класса: члены класса, свойства (элементы), методы, конструкторы и деструкторы, ссылка на себя (this).
- •Управление доступом к членам класса.
- •Конструкторы класса: по умолчанию, с аргументами, копирующие.
- •Перегружаемые методы класса.
- •Статические члены класса: назначение и применение.
- •Константные члены класса: константные свойства, константные методы.
- •Обработка исключений (try/catch/throw-конструкция).
- •Вложенные объекты.
- •Вложенные классы.
- •Принципы преобразования типов.
- •Виртуальные функции.
- •Абстрактные классы.
- •Перегружаемые операторы: бинарные, унарные, префиксные, постфиксные.
- •Спецификация cli. Структура .Net Framework.
- •С#: пространства имен, структура класса, свойства.
Перегружаемые операторы: бинарные, унарные, префиксные, постфиксные.
зык С# позволяет определить значение оператора относительно создаваемого
класса. Этот процесс называется перегрузкой операторов. Перефужая оператор,
вы расширяете его использование для класса. Перегрузка операторов тесно связана с перегрузкой методов. Для перегрузки операторов используется ключевое слово operator, позволяющее создать операторный
метод, который определяет действие оператора, связанное с его классом.
Существует две формы методов operator: одна используется для унарных опера-
торов, а другая — для бинарных. Общий же формат (для обоих случаев) таков:
// Общий формат перегрузки для унарного оператора,
public static тип_возврата operator ор{
тип_параметра операнд)
{
// операции
}
// Общий формат перегрузки для бинарного оператора,
public static тип_возврата operator op{
тип_параметра1 операнд1,
тип_параметра2 операнд2)
{
// операции
}
Здесь элемент ор — это оператор (например " + " или " / " ) , который перефужается.
Элемент тип_возврата — это тип значения, возвращаемого при выполнении задан-
ной операции. Для унарных операторов операнд передается в элементе операнд, а для
бинарных — в элементах операнд1 и операнд2.
Для унарных операторов тип операнда должен совпадать с классом, для которого
определен оператор. Что касается бинарных операторов, то тип хотя бы одного опе-
ранда должен совпадать с соответствующим классом. Унарные операторы перегружаются точно так же, как и унарные. Главное отличие, конечно же, состоит в том, что в этом случае существует только один операнд.
можно переписать в виде префиксной формы. Как вы уже знаете, операторы "++" и "—" имеют как префиксную, так и постфиксную форму. Например, инструкции ++а и а++ представляют собой допустимое использование оператора инкремента. Однако при перегрузке оператора "++" обе формы вызывают один и тот же метод. Следовательно,
в этом случае невозможно отличить префиксную форму оператора "++" от постфикс-
ной. Это касается и перегрузки оператора "--".
I ++х; // Префиксная форма оператора инкремента.
или в виде постфиксной формы:
I х++; // Постфиксная форма оператора инкремента.
В предыдущем примере не имело значения, в какой форме был применен опера-
тор инкремента: префиксной или постфиксной. Но если оператор инкремента или
декремента используется как часть большего выражения, то форма его применения
имеет важное значение. Если такой оператор применен в префиксной форме, то С#
сначала выполнит эту операцию, чтобы операнд получил новое значение, которое за-
тем будет использовано остальной частью выражения. Если же оператор применен в
постфиксной форме, то С# использует в выражении его старое значение, а затем вы-
полнит операцию, в результате которой операнд обретет новое значение.
Спецификация 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). Эта библиотека разбита на несколько
различных модулей таким образом, что имеется возможность использовать ту или
иную ее часть в зависимости от требуемых результатов.