
- •Простейший класс
- •Класс с конструкторами
- •Перегрузка конструкторов
- •Использование свойств в классе
- •Применение свойства наследования на примере виртуальных и абстрактных классов
- •Использование интерфейсов
- •Сравнение обычного массива и семейства
- •Сравнение обычного массива и семейства
- •Создание семейств. Использование индексаторов
- •Перегрузка простейших операций в простейших классах
- •Перегрузка операций с использованием стандартных интерфейсов и методов класса Object
- •Использование делегатов в качестве параметров функции
- •Создание собственной библиотеки классов
Использование делегатов в качестве параметров функции
Условие задачи
Реализовать метод, вычисляющий значение функции с заданным диапазоном (интервалом для вычислений) и заданным шагом. Виды функций, передаваемых в качестве параметра оформить в виде делегата. Интервал, виды функций и шаг выбирают в соответствии с вариантом.
14 Tanh(x) и sin(x) [-1,0) 1
Листинг программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Laba_12
{
class Program
{
delegate void SinSinDelegate();
static void TanH()
{
double z;
for (double i = -1; i < 0; i += 1)
{
z = Math.Tanh(i);
Console.WriteLine("Значение функции Tanh=" + Math.Round(z, 2) + " При значении X=" + i);
}
}
static void Sinus()
{
double z;
for (double i = -1; i < 0; i += 1)
{
z = Math.Sin(i);
Console.WriteLine("Значение функции sin=" + Math.Round(z, 2) + " При значении X=" + i);
}
}
static void Main(string[] args)
{
SinSinDelegate SinDel = new SinSinDelegate(Sinus);
SinDel();
SinSinDelegate SinhDel = new SinSinDelegate(TanH);
SinhDel();
Console.ReadKey();}}}
Тестирование программы
Рисунок 13 – Тестирование программы
Создание собственной библиотеки классов
Условие задачи
Создать собственную библиотеку, включив в нее разработанный класс (по индивидуальному заданию).
Каждый разрабатываемый класс должен содержать:
скрытые данные
перегрузку конструкторов
свойства класса
индексаторы (где требуется)
В основной программе подключить разработанную библиотеку, создать экземпляр класса, вызвать методы класса.
Вариант 14. Класс “Каталог”. Поля – имя каталога, путь к каталогу, дата создания, количество файлов
Листинг программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Katalogdll;
namespace ValSem2Laba13
{
class Program
{
static void Main(string[] args)
{
Katalog[] a = new Katalog[5];
Katalog Temp = new Katalog();
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Напишите имя, путь к файлу, дату создания и количество файлов");
a[i] = new Katalog(Console.ReadLine(), Convert.ToInt32(Console.ReadLine()), Convert.ToInt32(Console.ReadLine()), Convert.ToInt32(Console.ReadLine()));
}
select:
Console.WriteLine("Выберите действие:\n1.Создать копию Каталога\n2.отсортировать по дате создания\n3.отсортировать по дате создания и кол-ву фалов \n4.Вывести информацию о каталоге");
switch (Console.ReadLine())
{
case "1":
{
Katalog[] Copy = new Katalog[5];
Copy = a;
break;
}
case "2":
{
int K = 0;
do
{
K = 0;
for (int i = 0; i < 4; i++)
{
if (a[i] < a[i + 1]) { Temp = a[i]; a[i] = a[i + 1]; a[i + 1] = Temp; K = 1; }
}
} while (K == 1);
break;
}
case "3":
{
int K;
do
{
K = 0;
for (int i = 0; i < 4; i++)
{
if (a[i] < a[i + 1]) { Temp = a[i]; a[i] = a[i + 1]; a[i + 1] = Temp; K = 1; };
}
} while (K == 1);
do
{
K = 0;
for (int i = 0; i < 4; i++)
{
if (a[i] == a[i + 1]) { if (a[i].Browe > a[i + 1].Browe) { Temp = a[i]; a[i] = a[i + 1]; a[i + 1] = Temp; K = 1; } }
}
} while (K == 1);
break;
}
case "4":
{
foreach (Katalog x in a) { x.Dannie(); }
break;
}
}
goto select;
}}}
Тестирование программы
Рисунок 14 – Тестирование программы