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

Приклад

using System;

using System.Collections;

namespace ObjComp

{

public class Car : IComparable

{

//Поля класу

private int speed;

private string name;

// Конструктори

public Car() { }

public Car(int speed, string name)

{

this.speed = speed;

this.name = name;

}

// Властивості

public int Speed

{

get{return speed;}

set{speed = value;}

}

public string Name

{

get{return name;}

set{name = value;}

}

// Реалізація інтерфейсу Icomparable

//для сортування по полю класу speed

public int CompareTo(object o)

{

Car temp = (Car)o;

if(this.speed > temp.speed)

return 1;

if(this.speed < temp.speed)

return -1;

else

return 0;

}

// Допоміжний клас для сортування по полю класу name

public class SortByName : IComparer

{

public int Compare(object o1, object o2)

{

Car t1 = (Car)o1;

Car t2 = (Car)o2;

return String.Compare(t1.Name, t2.Name);

}

}

public static IComparer sortByName

{

get

{

return(IComparer)new SortByName();

}

}

}

class App

{

static void Main()

{

Car[] mas=new Car[5];

mas[0]= new Car(200,"Mersedes");

mas[1]= new Car(150,"Audi");

mas[2]= new Car(120,"Lada");

mas[3]= new Car(100,"Volga");

mas[4]= new Car(130,"BMW");

Console.WriteLine("Масив до сортування");

foreach(Car c in mas)

Console.WriteLine("{0} ={1}",c.Name,c.Speed);

Console.WriteLine();

Console.WriteLine("Сортування по найменуванню");

Array.Sort(mas, Car.sortByName);

foreach(Car c in mas)

Console.WriteLine("{0} ={1}",c.Name,c.Speed);

Console.WriteLine();

Console.WriteLine("Сортування за швидкістю");

Array.Sort(mas);

foreach(Car c in mas)

Console.WriteLine("{0} ={1}",c.Name,c.Speed);

Console.Read();

}

}

}

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

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

2.У якому просторі імен описаний інтерфейс IComparable.

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

4.Інтерфейс IComparable.

5.Який інтерфейс призначений для необхідності сортування по декількох полях класу.

6.Інтерфейс IComparer.

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

8.Виклик метота сортування, коли реалізовано сортування тільки по одному полю.

9.Виклик метота сортування, коли реалізовано сортування по декількох полях.

10.Роль властивість «тільки для читання» в механізмі сортування по декількох полях.

Частина 3. Інтерфейси iEnumerable і iEnumerator.

Мета - Навчитися створювати колекції елементів призначеного для користувача типу, реалізовуючи інтерфейси Ienumerable і Ienumerator.

Завдання. Реалізувати інтерфейси Ienumerable і Ienumerator для створення типів, що перераховують.

Теоретична частина

  • Колекція - це набір об'єктів.

  • Створення типів, що перераховують, здійснюється за рахунок реалізації, вбудованих базових класів .Net, інтерфейсів Ienumerable і Ienumerator.

  • Для застосування конструкції foreach клас, в якому є масив або список повинен реалізувати інтерфейси Ienumerable і Ienumerator.

  • Інтерфейси Ienumerable і Ienumerator є членами простору імен System.Collections.