Урок по C# № 16 – «Знакомимся с методами класса. Часть 1»

Вообще, в широком смысле слова метод – это подпрограмма, выполняющая какую-то задачу в рамках своего класса. Например, мы хотим присвоить нашему объекту имя «Эксперимент».  Вы наверняка бы начали писать так: присвоить полю имя значение «Эксперимент» Всего одна строчка кода, скажете вы и непонимающе будете читать дальше, силясь понять, зачем нужны методы. Хорошо, а если нам нужно присвоить полю Возраст нужное значение? Вдруг какой то умник напишет значение -1000 лет? Кроме того, мы бы хотели занести наш объект в базу данных.  И таких действий в рамках одного метода может быть множество. Чтобы понять, что я написал, проще рассмотреть пример. Итак, давайте напишем метод, который присвоит имя соответствующему полю. Как вы помните, у нас есть класс Человек:

 class Человек { int вес; int рост; char пол; int возраст; string Имя; } 

Мы хотим присвоить нашему объекту имя. Вообще, подобные действия лучше делать с помощью так называемых конструкторов, но вы не поймете их механизм не разобравшись с методами. Для наших целей напишем метод setName ().

Синтаксис методов в C# достаточно прост:

модификатор_доступа возвращаемое_значение Имя_метода (параметры если есть)

{действия;

}

В нашем случае мы напишем так:

class Человек {
int вес;
int рост;
char пол;
int возраст;
string Имя;
public void setName ()
{
Имя= "Эксперимент";
}
}

Здесь вас наверняка смутит ключевое слово void. Оно означает, что метод ничего не возвращает. Это как процедура в других языках. Так как метод устанавливает некое значение, то он будет является сеттером и начинаться с префикса set. В теле метода я присвоил полю Имя  нужное значение. Но вот тут есть одно но. Все объекты этого класса будут содержать данное имя, что нам ни к чему. Получается, что наша задача не выполнена? Да, это так. Мы потеряли гибкость.  Проверьте сами:

Человек человек1 =new Человек ();
человек1.setName (); //здесь мы присвоим значению. без вызова этого метода там ничего нет.

Если вы создадите объект человек2 и т.д., у всех будет тоже самое.  Кстати, обратили внимание на то, как вызывается метод? Его сигнатура проста – имя_объекта.имя_метода(). Хотите еще один момент? В методе я допустил вольность, опустив ключевое слово this. Оно означает, что поле принадлежит этому классу.

this.Имя.

Так, как я сделал можно поступать, но когда у вас будет вызываться в методе другие классы, то лучше писать полное обращение.

Итак, вернемся к нашей проблеме. Нам нужно добавить возможность задавать другие имена. Поэтому нам нужны параметры. Именно с помощью них мы и сможем добавить необходимую гибкость классу.

Параметром может выступать практически любой тип данных –число, строка, объект, структура. При использовании параметра мы должны указать тип параметра и формальное имя параметра.

Например, в нашем случае мы будем писать так:

class Человек {
int вес;
int рост;
char пол;
int возраст;
string Имя;
public void setName (string n)
{
Имя= n;
}

Обратили внимание на удобство? Мы указали, что присвоим полю Имя любое строковое значение, что передадим в параметре. Теперь мы в коде можем писать так:

человек.setName (“Владимир”);
человек2.setName (“Кто-то там”);

и т.д. Кроме того, мы можем здесь так, что данные будут вводиться с клавиатуры:

Console.WriteLine (“Введите имя”);
string name=Console.ReadLine();
человек.setName (name);

Увидели преимущество? Если нет, не огорчайтесь, мы еще рассмотрим все это впереди. А в этом уроке еще хотелось бы сказать, что параметров может быть много, но без фанатизма. Не думаю, что кому-то понравится, что ему нужно заполнять сотню параметров :).

На этом пока вводный урок по методам закончен. Продолжение будет в другой части.

<<Предыдущий урок


Итак, уважаемые читатели моих уроков, прошло уже немало времени с тех пор, как я опубликовал последний урок на сайте.

Хорошие они или плохие, не мне судить. Я писал так, как считал нужным. И пусть у меня был свой специфический подход к  подаче материала, думаю все же, что я сумел осуществить задуманное – показать, что изучать программирование можно достаточно просто. И занудные книги по программированию, коих, к сожалению, большинство, не всегда стоит использовать как первоисточник для обучения. Конечно, пренебрегать ими не стоит ни в коем случае, но и читать их следует уже после того, как вы более или менее стали разбираться и не будете  страдать от зевоты, перелистывая листы очередного «чтива».

Я писал уроки потому, что мне было это на тот момент интересно и у меня было свободное время. Потом интерес угасал, время я тратил более рационально и понимал, что от уроков в этом виде выхлопа нет вообще. Денег они не приносят, морального удовлетворения тоже, хотя бы потому, что редко их  комментировали, благодарили, критиковали и т.д. Кроме того, в то время масса халявщиков просто воровала мои уроки и размещала на свои ресурсы для трафика. Меня это очень оскорбило. И я просто бросил писать уроки по всем направлениям, что начал.

Блоги раньше я не вел и programbeginner.ru стал первенцем. Со всеми косяками, ляпами и мыслимыми и немыслимыми огрехами. Я всегда ставил акцент, что из меня гораздо лучший прикладной программист, нежели веб-мастер. Тем не менее, у меня еще есть теперь куча интернет-проектов, которые уже я сделал профессионально. Но именно programbeginner остался в первозданном виде, без современных требований к сайтам. Это чисто такая моя дань уважения к нему.

К сожалению, мотивация писать уроки просто падала. Вести компьютерные уроки вообще довольно-таки затратно по времени. Кроме того, необходимо постоянно актуализировать информацию.

Именно поэтому я ввожу в этом разделе кнопку помощи развития уроков. Фиксированной суммы нет, рад буду любой. Просто таким образом будет хотя бы продолжать вести блог и начатые когда-то уроки. Иными словами, продолжение уроков только за вами, уважаемые читатели.

Сразу напишу и план дальнейших уроков. Когда я начинал писать эти уроки по C#, была актуальна версия 4.0. Сейчас уже 6.0. Microsoft все время не стоит на месте. К счастью, в силу занятости я не описывал те технологии, которые просто умерли. Также теперь мне нужно и самому наверстывать новые. Большой цикл уроков будет посвящено Xamarin.

 

 

Яндекс.Метрика