Урок по 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.

 

 

Рубрика: Уроки по C#

Комментарии

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

    Ждем продолжения! 🙂

  2. Tatiana:

    Este un curs foarte bun. Este ușor de ințeles și de învățat. Aștemptăm continuarea cursului… Vă mulțumesc

  3. вася:

    где продолжение?:((

    • admin:

      В голове 🙂
      Реально, нет времени, чтобы писать. Постараюсь дописать всю пачку уроков по второй части (ООП, специальные возможности C#, Windows Form и базы данных). Это еще уроков 80.

      • вася:

        Эх 🙂
        Заявленное на начальной странице заинтересовало, сам недавно начал изучать сисярп, до этого опыта было крайне мало. (пара ботов на autoit) Начал читать тролсена — всё так скучно изложено, нет желания читать. Хоть и очень подробно. У тебя как-то веселее. На мсдн вообще порой крайненепонятно.
        Недавно пытался написать программу, которая отсылает емейл с прикрепленными файлами, и столкнулся с проблемой — после того, как файл добавлен во вложения ( msg.Attachments.Add), его невозможно удалить пока не закроешь программу, даже после отправки сообщения. Гуглил, так и не удалось решить. Может надо было посылать в другом классе,хз. Опыта в ооп нет.
        Вообщем, ждём продолжения 🙂 Статьи интересные, хоть и выходят раз в несколько месяцев

        • admin:

          Читать техническую литературу всегда трудно. Там всегда очень нудно написано. Кроме того, часто писатели щеголяют своим интеллектом, заполоняя текст бессмысленными заумными терминами и словами. И Троелсен тому не исключение.
          Поэтому я и старался писать так, чтобы читателю было легко понимать написанное. Кого не устраивало, всегда могли обратиться к толстым фолиантам. Однако в последнее время я сильно загружен работой, чтобы писать уроки.
          Кроме того, еще год назад на уроки по программированию у меня возникла апатия. Малый процент трафика, много копипастщиков и т.д. В итоге уроки так редко и выходят.
          Вообще, у меня несколько проектов в интернете, которые имеет смысл развивать. Увы, programbeginner.ru к ним не относится. Я даже не заморачиваюсь по поводу дизайна и прочих плюшек, один хрен посетитель зашел сюда и забыл его. Коммерческой выгоды он не приносит, и каждую новую статью (даже отвлеченной тематики) пишу словно из-под палки. Поэтому, скорее всего, у блога с нового года будет новый хозяин.
          Как бы к книгам и msdn не относись, все равно там находится полезная и полная информация. Да и информация там обновляется гораздо чаще, нежели на подобных блогах или сайтах.
          В любом случае, удачи с изучением! 🙂

  4. Максим:

    Админ, где продолжение? 🙂
    Реально, Вячеслав, у тебя отлично получается писать. Почему так редко уроки выходят?
    Не знаю, как остальные, но если в таком стиле будет весь курс, то я точно быстро освою C#.
    Продолжай писать! 🙂

  5. Дмитрий:

    уроки — супер! жалко тока редковато выходят(

  6. Олег:

    Огромное спасибо! Долгое время ничего не понимал, преподша в универе толком ничего не объясняет, а в книгах черт ногу сломит. А теперь все проясняется!:-)

  7. Иоанн:

    После прочтения ваших статей, другие статьи и учебники читать не хочется)) Ваши самые лучшие, спасибо вам за замечательные уроки))

  8. Кос:

    Уважаемый автор, когда будет продолжение?

    • admin:

      Уважаемому автору теперь пофиг на сайт. Скорее всего, продолжения уроков вообще не будет. Сайт нерентабельный. Он не приносит ни копейки денег, а тратить свое личное время впустую мне просто не охота.
      Увы, ребята, на альтруизме далеко не уедешь и я не могу распылять время, которого у меня так мало на всякие статейки.

  9. Вячеслав:

    Очень хорошие статьи! Все понятно объясняется. Спасибо огромное за эти прекрасные уроки! Очень хотелось бы продолжения. Жаль, что у Вас не хватает времени… Семья прежде всего!

  10. Василий:

    Здравствуйте, мне очень понравились ваши уроки, они достаточно приятны для прочтения и довольно просты для освоения. Я очень благодарен вам за эти уроки, хоть и для меня их недостаточно, ну и на этом большое спасибо!

    Я хотел бы высказать вам свое предложение, и оно заключается в следующем:

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

    Я просто очень хочу научиться программированию на си шарп, просто у меня есть одна идейка которая без С# ну никак не может осуществиться.

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

  11. admin:

    Кто будет покупать книгу? В лучшем случае, загуглят «Скачать бесплатно». Подобный вариант я сразу отмел.
    Мне гораздо выгоднее проводить платные вебинары по этим языкам. И по времени для меня это намного менее затратно, нежели писать статьи или книги.
    Я же еще раз повторяю — блог убыточен. Я трачу на хостинг в разы больше, нежели блог зарабатывает на рекламе (а это чистые копейки -несколько сотен рублей в месяц).

  12. Владимир:

    спасибо за уроки

  13. МоХа:

    Ох, ну где же продолжение?! Я только во вкус вошла, разогналась )))
    Автору спасибо за предыдущие уроки!

  14. Антон:

    Автор сделай складчину, какие-нибудь яндекс деньги. Желающие продолжения уроков, пусть шлют 200 руб. на ваш счет, когда наберется 10-20 желающих публикуйте урок.

    • admin:

      Как правило, даже 200 рублей для наших людей дорого.

      • Антон:

        Да хоть по 50р, было бы куда. Сейчас кстати легко перекидывать деньги, у сбербанка через СМС с текстом Оплата НомЕрКарты сумма на номер 900

        • admin:

          Да знаю я об этих способах. У меня ведь есть чисто образовательный портал, где я веду вебинары. Вот там с этим проблем нет. Когда аудитория сразу понимает, что это курс обучения, и он платный, они уже нацелены на то, чтобы заплатить преподавателю. Но за это они получают не только лекции, но еще и рабочие тетради с различными заданиями для самостоятельной проработки и мои консультации.
          Здесь ситуация несколько иная — все хотят все нахаляву. В принципе, если бы не было копипастщиков, я бы еще писал уроки, потому как мне это в то время нравилось делать, но все желание пропало, когда я свои уроки увидел одновременно на пяти сайтах, а но одном из них и вовсе просили за них деньги.
          В принципе, можно последовать Вашему совету и начать собирать деньги на последующие уроки. Просто ставить, что следующий урок стоит столько то и открывать на него сбор пожертвований

          • Антон:

            Правильно мыслите, Вы прагматичный человек. Значит добьетесь успеха и вы этом деле.

  15. Роман:

    Админ, жаль, что ты решил делать платными уроки… Это же интернет. Нет, не пойми меня неправильно, мне не жалко там кинуть тебе там 20 или 50 рублей за урок, так сказать в складчину. Это не деньги.
    Но дело в том, что твои читатели фиг копейки тебе заплатят. Боюсь, что изза этого таких классных уроков больше не будет…

    • admin:

      Значит, уроков и не будет больше. Я написал принцип. Мне мое время дороже, чем тратить его на неблагодарных читателей

    • Anton:

      Вы не бойтесь, лучше скидывайте, и отпишитесь сколько чтобы понимать сколько еще добить надо.

      • admin:

        Да, деньги пришли. Ну что, жребий брошен. Первый взнос сделан, осталось еще 850 р собрать на урок…

  16. Anton:

    Скинул 150

  17. Миша:

    Эх, админ, а ведь ты прав. Люди готовы кидать деньги непонятно куда, а на что-то стоящее не копейки не даст.
    У меня друг, который учится по твоим урокам вместе со мной, вчера учудил — в игру танки закинул почти 9000 рублей на какую акцию. Ему это не жалко.
    Но когда дошел до этой статьи, он дико плевался, что ты такой негодяй и решил делать складчину. Меня это разозлило.
    Я перевел тебе 500 рублей. И не из-за того, чтобы ты писал урок. А просто показать, что все же есть нормальные люди, которые могут просто отблагодарить тебя.
    А когда им даже тридать или пятьдесят рублей жалко, то действительно не стоит на таких тратить время.
    Спасибо!

  18. admin:

    Ну куда мне до «обожаемых танков»… Я повторюсь, что и так пошел навстречу читателям, решив хотя бы так продолжить писать уроки. Этот урок был написан 18 октября 2013 года…
    Да, немало времени прошло с тех пор. Я успел и поработать на благо сочинской Олимпиады в том году и много чего прочего.
    Мне было просто вообще не до этого ресурса. Его вел мой двоюродный брат, поэтому блог превратился в невесть что.
    Но когда я вернулся к админству сайта, то понял, что интерес к нему угас. Да, я видел клянчущие новые уроки комментарии, которые вызывали у меня грустную усмешку. Где вы были два года назад? Когда я ждал с надеждой обратной связи от читателей, не понимая, нравятся уроки или нет?
    И вот, не так давно я дописал в этот урок условия продолжения написания.
    Что могу сказать — судя по всему, эти уроки вообще никогда не будут закончены. Пожертвований на следующий урок нет. Эту жалкую тысячу рублей, видимо, буду собирать до глубокой старости. И вопрос тогда такой — оно мне надо?
    Тратить свое время на неблагодарную аудиторию, которая спокойно легко может в танчики запулить десятки тысяч рублей, не моргнув глазом, когда на складчину им жалко даже 50 рублей…
    Ведь следующие уроки будут нарастать по сложности. Я хотел полностью разжевать ООП. Я хотел учить, как писать полнофункциональные приложения под Windows, написав, к примеру, хотя бы СМС шлюз, используя GSM- модем. Я хотел научить писать мобильные приложения под Windows Phone. В общем много чего.
    Но, теперь буду учить на другом своем сайте в рамках вебинаров. Там хотя бы и скулят, но деньги платят.
    А голый энтузиазм часто угасает, как и здесь. Вы сами его погасили.

Добавить комментарий

Внимание! Не будут добавляться комментарии в виде откровенного спама или прямого анкора на свои сайты. Все спамеры будут передаваться в базу Akismet

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: