
- •Практична робота. Середовище розробки додаткив с#. Базові класи. Клас 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.Створення власної колекції.
- •Теоретична частина
Приклад
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.