Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы на вопросы_2003.doc
Скачиваний:
6
Добавлен:
16.04.2019
Размер:
275.46 Кб
Скачать

43 Интерфейсы. Правила использования интерфейсов.

Интерфейсы в C# исполняют роль соглашений.

В терминологии программирования интерфейс похож на класс, за исключением того, что ни один из его членов не реализован. Интерфейс группирует методы, свойства, события и индексаторы. Для него нельзя создать экземпляр: все что он содержит, - сигнатуры своих членов, причем таковыми могут быть только указанные четыре типа членов.

Интерфейс не имеет конструкторов и полей. Интерфейс не может иметь перегруженных операций.

Интерфейс объявляется практически также как класс, за исключением того, что его члены не имеют реализации (наподобие абстрактных методов). Отсутствие реализации и модификаторов доступа.

Пример реализации интерфейса:

interface IEnumerator

{// свойства

object Current { get; }

// методы

bool MoveNext();

void Reset();} ...

public class myClass : IEnumerator, IConvertible {

Интерфейс IEnumerator важен для реализации коллекций и разработан для инкапсуляции функций перемещения по элементам коллекций (System.Collections) и разработан для инкапсуляции функций перемещения по элементам коллекции.

Класс реализует интерфейс, наследуя его обеспечивая реализации всех членов, объявленных в этом интерфейсе. Класс может наследовать любое количество интерфейсов.

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

IMyEnumerator my = new myClass();

my.MoveNext();

Интерфейсы могут наследоваться друг от друга точно также, как и классы.

interface IMyEnumerator : IDisposable

44 Абстрактные классы

Ключевое слово abstract позволяет создавать классы и члены классов, которые являются неполными и должны быть реализованы в производном классе.

Классы могут быть объявлены абстрактными путем помещения ключевого слова abstract перед определением класса. Пример.

public abstract class A

{// Class members here.}

Создавать экземпляры абстрактного класса нельзя. Назначение абстрактного класса заключается в предоставлении общего определения для базового класса, которое могут совместно использовать несколько производных классов.

Абстрактные классы могут определять абстрактные методы. Для этого перед типом возвращаемого значения метода необходимо поместить ключевое слово abstract. Пример.

public abstract class A

{public abstract void DoWork(int i);}

Абстрактные методы не имеют реализации, поэтому определение такого метода заканчивается точкой с запятой вместо обычного блока метода. Классы, производные от абстрактного класса, должны реализовывать все абстрактные методы. Если абстрактный класс наследует виртуальный метод из базового класса, абстрактный класс может переопределить виртуальный метод с помощью абстрактного метода.

45. Класс Random. Основные методы класса System.Random.

класс Random представляет генератор псевдослучайных чисел, устройство, которое выдает последовательность чисел, отвечающую определенным статистическим критериям случайности.

Методы:

Equals(Object) Определяет, равен ли заданный объект Object текущему объекту Object..)

Finalize Позволяет объекту попытаться освободить ресурсы и выполнить другие операции очистки, перед тем как объект будет утилизирован в процессе сборки мусора. (Унаследовано от Object.)

GetHashCode Играет роль хэш-функции для определенного типа.

GetType Возвращает объект Type для текущего экземпляра.

Next Возвращает неотрицательное случайное число.

Next(Int32) Возвращает неотрицательное случайное число, не превышающее максимально допустимое значение.

Next(Int32, Int32) Возвращает случайное число в указанном диапазоне.

NextBytes Заполняет элементы указанного массива байтов случайными числами.

NextDouble Возвращает случайное число в диапазоне 0,0 и 1,0.

Sample Возвращает случайное число в диапазоне 0,0 и 1,0.

ToString Возвращение строки, представляющей текущий объект. (Унаследовано от Object.)