12. Классы, конструкторы, методы в C#. Транспонирование матриц.
Рейтинг пользователей: / 5
ХудшийЛучший 

В этом уроке быстренько пробежимся по классам, конструкторам классов и методов.

Класс — это конструктор, который позволяет создавать свои собственные пользовательские типы путем группирования переменных других типов, методов и событий. Ссылка. Если говорить человеческим языком, класс это что-то наподобие шаблона, в котором мы описываем его внутренние переменные. Потом мы сможем создать любое кол-во экземпляров класса, что позволит нам по сто раз не писать одно и то же, а использовать всего один шаблон.

Класс содержит в себе конструктор, который называется по названию класса. Если мы имеем public class myClass, то и конструктор , будет выглядить так же: public myClass(int arg) {...}. Конструктор может не принимать переменных, а может принимать и ни одну. Ничто не мешает нам создать множество различных конструкторов.

public class myClass
{
private int m;
private int n;

myClass()//конструтор не принимает значения
 {

}
myClass(int m)
//конструтор принимает одно значение
  {
this.m = m;
}
myClass(int m, int n)
//конструтор принимает два значения
{
this.m = m;
this.n = n;
}

}


Важно сказать, что конструктор не возвращает значения.

 

Метод представляет собой блок кода, содержащий набор инструкций. Программа инициирует выполнение операторов, вызывая метод и задавая необходимые аргументы метода. Ссылка. В отличие от конструктора, метод может возвращать значение, для этого используется ключевое слово return;

Разберём всё это на простом примере.  Задание: создадим класс, который будет содержать конструктор и 3 метода. Конструктор будет заполнять нашу матрицу. Первый метод будет печатать матрицу, второй метод будет транспонировать матрицу, третий метод будет считать сумму элементов на диагонали матрицы и выдавать нам это значение.

public class matrica //создаём класс matrica

{

private int n;

private double[ , ] a;

public matrica(int n) //конструктор примает значение n, которое является размерностью.

{                           

this.n = n;

a = new double[n, n];

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

a[i,j] = i+2*j+(i*j); //заполняем матрицу с помощью простого линейного уравнения

}

}

}

 

public void print() //первый метод, который печатает матрицу.

{

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

Console.Write(" {0}",a[i, j]);

}

Console.WriteLine();

}

}

public void transp()//второй метод, который транспонирует матрицу.

{

double tmp;

for (int i = 0; i < n; i++)

{

for (int j = 0; j < i; j++)

{

tmp = a[i, j];

a[i, j] = a[j, i];

a[j,i] = tmp;

}

 

}

}

public double diag()//третий метод, который возвращает сумму элементов ноа диагонали.

{                              

double s = 0;

for (int i = 0; i < n; i++)

{

s = s + a[i, i];

}

return s;//не забываем ключевое слово return.

}

}

Ну вот и весь код класса matrica.

Теперь заполним основной класс Program:

class Program

{

static void Main(string[] args)

{

matrica a = new matrica(4); //создаём экземпляр класса, передаём размер - 4 на 4.

a.print();//печатаем матрицу, смотрим.

a.transp();//транспонируем матрицу.

Console.WriteLine();//выводим пустую строчку, чтоб данные слитно неписались

a.print();//печатаем матрицу, смотрим.

Console.WriteLine();//печатаем пустую линию.

Console.WriteLine(a.diag());//печатаем сумму элементов на диагонали.

}

}

 

Вот и всё.

Прошу прощения, что код выглядит не совсем структурировано. Технические проблемы:)


 

Не забивайте свои проблемы в дальний угол. В случае необходимости обратитесь за профессиональной психологической помощью.



Понравился контент? Посмотри рекламный блок:
Программируем на C#, интересные статьи, книги, музыка; Костя Карпов.