Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пакет практичних робіт.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.04 Mб
Скачать

Реалізація класу -коллекция без реалізації інтерфейсу Iеnumerator

Оскільки масив є похідним від класу Array, а в класі Array реалізований інтерфейс Iеnumerator, то в класі колекції можна не реалізовувати інтерфейс Iеnumerator, але тоді не буде можливості безпосередньо викликати методи інтнрфейса Iеnumerator(приклад приведений нижче).

//Клас - колекція машин з реалізацією інтерфейсів Ienumerable

public class Garag : IEnumerable

{

private Car[] cars; //Набір об'єктів Саr

// Змінна для поточної позиції елементу в масиві

public Garag() //Конструктор

{

// Створення декількох об'єктів класу Саг і додавання їх в масив

cars = new Car[3];

cars[0] = new Car(100,"Mercedes");

cars[1] = new Car(110,"Volvo");

cars[2] = new Car(90, "Lada");

}

public IEnumerator GetEnumerator()

{

return cars.GetEnumerator(); //Повертає інтерфейс IEnumerator

}

}

Контрольні питання

1.Що таке інтерфейс.

2.Призначення інтерфейсу IEnumerator.

3.Призначення інтерфейсу IEnumerable.

4.Методи інтерфейсу IEnumerator.

5.Методи інтерфейсу IEnumerable.

6.Як можна викликати метов інтерфейсу.

7.У якому пространсте імен описані інтерфейси IEnumerator, IEnumerable.

8.Як отримати посилання на інтерфейс.

9.При створенні класів похідних від інтерфейсів і класів - порядок їх спадкоємства.

10.Чи можливо створити клас, похідний від декількох інтерфейсів.

Практическая работа 3. Моделювання в конструюванні. Використання масивів для розроблених типів. Частина 1. Користувальницький індексатор.

Тема - пользовательский индексатор.

Цель - научиться создавать типы, которые поддерживают числовой и строковый индексатор.

Задание. Реализовать числовой и строковый индексатор для пользовательского типа.

Теоретическая часть

  • Индексатор – это механизм, который позволяет строить пользовательские классы-контейнеры, к внутренним элементам которых можно обращаться при помощи индекса, как к элементам обычного массива встроенного типа.

  • Классы с индексаторами очень похожи на классы, которые реализуют интерфейсы IEnumerator, IEnumerable. Отличие заключается в том, что для обращения к внутренним элементам классов-коллекций вместо использования ссылки на интерфейс применяется обычный оператор индекса – квадратные скобки [].

  • Индексатор представляет собой своеобразное свойство, которое создается с помощью указателя на экземпляр объекта – this.

  • Индексаторы бывают числовые и строковые.

Отличия между свойствами и индексаторами

Свойства

Индексаторы

Идентифицируется по имени

Идентифицируется по сигнатуре

Доступ осуществляется, как для члена класса, через точку

Доступ осуществляется, как для элемента массива, с помощью квадратных скобок

Может быть статическим или нестатическим членом класса

Может быть только нестатическим членом класса

Функция доступа get не имеет параметров

Функция доступа get имеет тот же список параметров, что и индексатор

Функция доступа set содержит встроенный параметр value

Функция доступа set в дополнении к встроенному параметру value имеет тот же список параметров, что и индексатор