
- •Практична робота. Середовище розробки додаткив с#. Базові класи. Клас String.
- •Методи классу String для робот из рядками
- •Варіанти індивідуальних завдань
- •Контрольні питання
- •Практична робота 1. Проектування. Класи. Конструктори класу. Статичниі елементів класу. Спадкоємство. Частина 1.Класи. Конструктори класу. Статичні елементи класу.
- •Теоретична частина
- •Приклад
- •Хід виконання роботи
- •Індивідуальні завдання
- •Контольні запитання
- •Частина 2. Спадкоємство.
- •Теоретична частина
- •Приклад класичного спадкоємства
- •Приклад спадкоємства включення - делегування
- •Контрольні питання
- •Практична робота 2. Використання системних інтерфейсів. Створення класів походних від стандартних інтерфейсів. Частина 1. Інтерфейс iCloneable.
- •Теоретична частина
- •Приклад
- •Контрольні питання
- •Частина 2. Інтерфейси iСomparable і iСomparer.
- •Теоретична частина
- •Приклад
- •Контрольні питання
- •Частина 3. Інтерфейси iEnumerable і iEnumerator.
- •Теоретична частина
- •Інтерфейс iEnumerable
- •Приклад
- •Реалізація класу -коллекция без реалізації інтерфейсу Iеnumerator
- •Контрольні питання
- •Практическая работа 3. Моделювання в конструюванні. Використання масивів для розроблених типів. Частина 1. Користувальницький індексатор.
- •Теоретическая часть
- •Отличия между свойствами и индексаторами
- •Интерфейсы и индексаторы
- •Частина 2. Перевантаження унарних та бінарних операцій.
- •Теоретическая часть
- •Пример на перегрузку унарного оператора
- •Пример на перегрузку true и false
- •Пример на перегрузку бинарного оператора
- •Пример на перегрузку явных и неявных преобразований
- •Практична робота 4. Моделювання в конструюванні. Створення та використання класу ArrayList для розроблених типів. Частина 1. Частина 1.Створення власної колекції.
- •Теоретична частина
Реалізація класу -коллекция без реалізації інтерфейсу 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 имеет тот же список параметров, что и индексатор |