Создание классов и визуализация данных
Как понять "При создании классов следует придерживаться принципа разделения логики работы программы и визуализации данных"?. Это, когда вывод данных происходит вне класса, где производились вычисления, действия? Правильно ли?
Класс
/// <summary>
/// Класс сортировки
/// </summary>
public class Sort
{
//Размер массива, Левая граница элеметнов, Правая граница элеметнов
private int _n,_l,_r;
//Массив элеметнов
private int[] _array;
/// <summary>
/// Конструктор с параметрами
/// </summary>
/// <param name="n">Размер массива</param>
/// <param name="l">Левая граница</param>
/// <param name="r">Правая граница</param>
public Sort(int n,int l, int r)
{
_n = n;
_array = new int[_n];
_l = l;
_r = r;
}
/// <summary>
/// Констрктор без параметров
/// </summary>
public Sort()
{
_n = 10;
_array = new int[_n];
_l = -10;
_r = 10;
}
/// <summary>
/// Массив
/// </summary>
public int[] Array
{
get
{
return _array;
}
set
{
_array = value;
}
}
/// <summary>
/// Метод заполнения массива случайными числами
/// </summary>
public void RandomArray()
{
Random rnd = new Random();
for (int i = 0; i < _n; i++)
_array[i] = rnd.Next(_l, _r + 1);
}
/// <summary>
/// Метод перестановки двух элемтнов массива местами
/// </summary>
/// <param name="i">Индекс первого элемента</param>
/// <param name="j">Индекс второго элемента</param>
public void Swap(int i, int j)
{
int x = _array[j];
_array[j] = _array[i];
_array[i] = x;
}
/// <summary>
/// Метод Гномьей сортировки
/// </summary>
public void GnomeSort()//Гномья сортировка
{
int i = 0;
while (i < _n)
{
int j = i;
if ((j == 0) || (_array[j] >= _array[j - 1])) i++;
else
{
Swap(j - 1, j);
i--;
}
}
}
/// <summary>
/// Метод сортировки перемешиванием
/// </summary>
public void ShakerSort()
{
int l = 0,
r = _n - 1;
while (l < r)
{
for (int i = l; i < r; i++)
{
if (_array[i] > _array[i + 1])
Swap(i, i + 1);
}
r--;
for (int i = r; i > l; i--)
{
if (_array[i - 1] > _array[i])
Swap(i - 1, i);
}
l++;
}
}
}
Часть из Main
Sort GnomDefault = new Sort();
Sort ShakeDefault = new Sort();
GnomDefault.RandomArray();
Console.WriteLine("\nИсходный массив:");
foreach (int i in GnomDefault.Array)
Console.Write("{0} ", i);
Console.WriteLine("\n");
GnomDefault.GnomeSort();
Console.WriteLine("Гномья сортировка:");
foreach (int i in GnomDefault.Array)
Console.Write("{0} ", i);
Console.WriteLine("\n");
ShakeDefault.RandomArray();
Console.WriteLine("Исходный массив:");
foreach (int i in ShakeDefault.Array)
Console.Write("{0} ", i);
Console.WriteLine("\n");
ShakeDefault.ShakerSort();
Console.WriteLine("Сортировка перемешиванием:");
foreach (int i in ShakeDefault.Array)
Console.Write("{0} ", i);
Console.WriteLine("\n");