- •Практична робота. Середовище розробки додаткив с#. Базові класи. Клас 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.Створення власної колекції.
- •Теоретична частина
Інтерфейс iEnumerable
public interface IEnumerable
{
public IEnumerator GetEnumerator(); //Возвращает интерфейс IEnumerator
}
Інтерфейс IEnumerator
public interface IEnumerator
{
bool MoveNext(); //Перехід на наступний елемент колекції
object Current{get;}; //Властивість, яка повертає значення поточного елементу колекції
void Reset(); //Перехід на початок колекції
}
Приклад
using System;
using System.Collections; //Обов'язкове включення, оскільки в Collections
//описані IEnumerable и IEnumerator
namespace Garag
{
class Car //Клас автомобіль
{
int maxSpeed; //Максимальна швидкість
string name; //Найменування
public Car(int maxSpeed, int currentSpeed, string name) //Конструктор з параметрами
{
this.maxSpeed = maxSpeed;
this.name = name;
}
public override string ToString() //Перевизначення методу ToString
{
return name+" " +maxSpeed.ToString();
}
}
//Клас - колекція машин з реалізацією інтерфейсів IEnumerable и IEnumerator
public class Garag : IEnumerator, IEnumerable
{
private Car[] carArray; //Набір об'єктів Саr
int pos = -1; // Змінна для поточної позиції елементу в масиві
public Garag() //Конструктор
{
// Створення декількох об'єктів класу Саг і додавання їх в масив
carArray = new Car[3];
carArray[0] = new Car(100, 0, "Mercedes");
carArray[1] = new Car(110, 0, "Volvo");
carArray[2] = new Car(90, 0, "Lada");
}
// Реалізація методів інтерфейсу IEnumerator
public bool MoveNext()
{
if (pos < carArray.Length - 1)
{
pos++;
return true;
}
else
return false;
}
public void Reset()
{
pos = -1;
}
public object Current
{
get
{
return carArray[pos];
}
}
// Реалізація методу інтерфейсу IEnumerab1e
public IEnumerator GetEnumerator()
{
return (IEnumerator)this; //Повертає інтерфейс IEnumerator
}
}
class Class1
{
[STAThread]
static void Main(string[] args)
{
Garag G = new Garag();
// Обращаніє до об'єктів Саr через IEnumerator
IEnumerator iEnum;
iEnum = (IEnumerator)G;
// Встановлюємо курсор на початок
iEnum.Reset();
// Переміщаємо курсор вперед на один крок
iEnum.MoveNext();
foreach (Car o in G)
{
Console.WriteLine("{0}", o.ToString());
}
// Знову встановлюємо курсор на початок
iEnum.Reset();
foreach (Car o in G)
{
Console.WriteLine("{0}", o.ToString());
}
Console.Read();
}
}
}
