- •Основные положения объектно-ориентированного программирования. Технология объектно-ориентированного программирования: назначение и применение.
- •Основные парадигмы объектно-ориентированного программирования: абстракция.
- •Основные парадигмы объектно-ориентированного программирования: инкапсуляция. Доступ к элементам класса (public, protected, private).
- •Основные парадигмы объектно-ориентированного программирования: полиморфизм.
- •Пространство имен: назначение и применение.
- •Структура класса: члены класса, свойства (элементы), методы, конструкторы и деструкторы, ссылка на себя (this).
- •Управление доступом к членам класса.
- •Конструкторы класса: по умолчанию, с аргументами, копирующие.
- •Перегружаемые методы класса.
- •Статические члены класса: назначение и применение.
- •Константные члены класса: константные свойства, константные методы.
- •Обработка исключений (try/catch/throw-конструкция).
- •Вложенные объекты.
- •Вложенные классы.
- •Принципы преобразования типов.
- •Виртуальные функции.
- •Абстрактные классы.
- •Перегружаемые операторы: бинарные, унарные, префиксные, постфиксные.
- •Спецификация cli. Структура .Net Framework.
- •С#: пространства имен, структура класса, свойства.
Перегружаемые методы класса.
В С# два или больше методов внутри одного класса могут
иметь одинаковое имя, но при условии, что их параметры будут различными. Такую
ситуацию называют перегрузкой методов (method overloading), а методы, которые в ней
задействованы, — перегруженными (overloaded). Перегрузка методов — один из спосо-
бов реализации полиморфизма в С#.
В общем случае для создания перегрузки некоторого метода достаточно объявить
еще одну его версию. Об остальном позаботится компилятор. Но здесь необходимо
отметить одно важное условие: все перегруженные методы должны иметь списки па-
раметров, которые отличаются по типу и/или количеству. Методам для перегрузки не-
достаточно отличаться лишь типами возвращаемых значений. Они должны отличать-
ся типами или числом параметров. При вызове перегруженного метода выпол-
няется та его версия, параметры которой совпадают (по типу и количеству) с задан-
ными аргументами. Как видите, метод ovlDemo () перегружается четыре раза. Первая версия вообще
не принимает параметров, вторая принимает один целочисленный параметр, третья —
два целочисленных параметра, а четвертая — два double-параметра. Обратите внима-
ние на то, что первые две версии метода ovlDemo () возвращают тип void, т.е. не
возвращают никакого значения, а вторые две возвращают значения соответствующих
типов. Принципиальная значимость перегрузки состоит в том, что она позволяет обра-
щаться к связанным методам посредством одного, общего для всех имени. Следова-
тельно, имя ovlDemo () представляет общее действие, которое выполняется во всех случаях.
Компилятору остается правильно выбрать конкретную версию при конкретных об-
стоятельствах.
Статические члены класса: назначение и применение.
Довольно часто при разработке приложений появляется необходимость иметь общие данные для всех объектов одного класса. В этом случае применяют статические данные-члены. Для объявления статических членов класса используется спецификатор static.
Иногда требуется определить член класса, который должен использоваться незави-
симо от объекта этого класса. Обычно к члену класса доступ предоставляется через
объект этого класса. Однако можно создать член, который заведомо разрешено ис-
пользовать сам по себе, т.е. без ссылки на конкретный экземпляр. Чтобы создать та-
кой член, предварите его объявление ключевым словом s t a t i c . Если член объявлен
как s t a t i c , к нему можно получить доступ до создания объектов этого класса и без
ссылки на объект. С использованием ключевого слова s t a t i c можно объявлять как
методы, так и переменные. При использовании static-члена вне класса необходимо указать имя класса и следующий за ним оператор "точка". Объект при этом не нужно создавать. К s t a t i c -
члену получают доступ не через экземпляр класса, а с помощью имени класса. На-
пример, чтобы присвоить число 10 static-переменной с именем count, которая яв-
ляется членом класса Timer, используйте следующую строку кода:
I Timer.count = 10; На static-методы накладывается ряд ограничений.
1. static-метод не имеет ссылки this.
2. static-метод может напрямую вызывать только другие static-методы. Он не
может напрямую вызывать метод экземпляра своего класса. Дело в том, что
методы экземпляров работают с конкретными экземплярами класса, чего не
скажешь о static-методах.
3. static-метод должен получать прямой доступ только к static-данным. Он не
может напрямую использовать переменные экземпляров, поскольку не работа-
ет с экземплярами класса.