Круглосуточная трансляция из офиса Эргосоло

Элементарное программирование для всех желающих. Урок 3

Что такое класс и как его использовать

Console.WriteLine (Что такое класс и как его использовать.);

C# является объектно-ориентированным языком программирования. Как все объектно-ориентированные языки он содержит классы. Класс в языке программирования - это некое описание сущности. Если переложить класс из программирования на реальный мир, то будет выглядеть примерно так: есть класс - человек, этот класс имеет несколько свойств, такие, как: имя, фамилия, рост, вес и прочие. Имеет множество методов, таких, как: ходить, говорить, слушать и так далее. Также имеет события (в данном уроке их рассматривать не будем, но приведем примеры), такие, как: родился, отпраздновал день рождения, лег спать и так далее. Все эти методы и события принадлежат экземпляру класса, т.е. конкретному человеку, и могут быть вызваны только для конкретного экземпляра. Сейчас вы возможно ничего не понимаете, но дальше будет приведен код, и все должно встать на свои места. Еще классы в C# имеют свойства и методы, которые являются статическими, они должны вызываться не для экземпляра объекта, а для самого класса. Например:

public static Human GiveBirth();

ключевое слово public говорит о том, что этот метод – публичный, и его может вызвать кто угодно. А static, говорит о том, что этот метод вызывается для самого класса, а не его экземпляров. Давайте попробуем описать класс Human, который будет иметь статический метод GiveBirth(), не статические методы Say()Go(). Свойства FirsNameLastName и что-нибудь еще придумаем по ходу.

Итак начнем. Для начала создадим проект Console Application. Добавим в него новый класс Human и наполним следующим содержимым.

using System;

 

namespace Lesson3

{

       public class Human

       {

             public string FirstName { get; private set; }

             public string LastName { get; private set; }

             public DateTime BirthDate { get; private set; }

 

             private Human()

             {

                    BirthDate = DateTime.Today;

             }

 

             public static Human GiveBirth()

             {

                    return new Human();

             }

 

             public void GiveName(string name)

             {

                    FirstName = name;

             }

 

             public void GiveLastName(string lastName)

             {

                    LastName = lastName;

             }

 

             public void Say(string text)

             {

                    Console.WriteLine(text);

             }

 

             public void Go(int value)

             {

                    Console.WriteLine("Я прохожу {0} метров", value);

             }

       }

}

Рассмотрим детально, что же мы сделали. Мы создали класс Human (человек), который имеет свойства FirstName (имя), LastName (фамилия), BirthDate (дата рождения). Имеет приватный конструктор private Human(), где ключевое слово private означает, что его можно использовать только внутри класса. Конструктор в c# создает экземпляр объекта с помощью ключевого слова new, соответственно, чтобы создать конкретного человека, необходимо выполнить код new Human(), этот кода создаст человека и вернет его, соответственно, чтобы создать человека и в дальнейшем использовать его, надо присвоить его переменной, например: 

var human = new Human();

так как мы сделали конструктор приватным, то никто (а точнее ниоткуда кроме как из класса Human) не сможет создать человека. Если посмотреть на код, то мы увидим в нем статический метод GiveBirth, который может создать человека, так как она находится внутри класса. Он это и делает, он создает нового человека, и возвращает его вызывающему коду. Позднее мы узнаем, как это можно использовать. Еще упомянем немного о конструкторе, как мы видим, в нем есть некоторый код 

BirthDate = DateTime.Today;

Этот код будет выполняться всегда, при создании экземпляра класса, т.е. всегда, когда будет создаваться конкретный человек, его свойство, день рождения, будет устанавливаться сегодняшним днем (DateTime.Today - этот код возвращает текущую дату).

В коде есть еще три метода, попробуйте сами понять, для чего они.

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

using System;

using System.Collections.Generic;

using System.Globalization;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace Lesson3

{

       class Program

       {

             static void Main(string[] args)

             {

                    // Создаем нового человека

                    var human = Human.GiveBirth();

 

                    // Пытаемся показать имя человека, консоль выведет пустую строку, т.к. мы не назвали нашего человека.

                    Console.WriteLine(human.FirstName);

 

                    // Даем человеку имя и фамилию

                    human.GiveName("Иван");

                    human.GiveLastName("Иванов");

 

                    // Выводим в консоль, информацию о том как зовут нашего человека

                    Console.WriteLine("Нашего человека зовут {0} {1}", human.LastName, human.FirstName);

 

                    // Просим нашего человека сказать дату его рождения

                    human.Say("Я родился " + human.BirthDate.ToString("d"));

 

                    // Просим нашего человека пройти 10 метров

                    human.Go(10);

                    // 20 метров

                    human.Go(20);

 

                    // Сменим ему имя

                    human.GiveName("Александр");

 

                    Console.WriteLine("Новое имя нашего человека {0}", human.FirstName);

             }

       }

}

Что же делает данный код. Сначала мы создаем человека. Показываем его имя, и видим, что оно у него отсутствует. Вызываем методы с входными параметрами, которые установят этому человеку имя и фамилию. Смотрим снова, как его зовут, и видим, что наши имя и фамилия ему применились. Просим человека сказать его дату рождения, используем его метод Say, который дословно значит: скажи то, что я тебя прошу (то, что мы его просим сказать, передаем в метод параметром), просим же мы его сказать его дату рождения, передавая ему его же собственное свойство BirthDate. Так как BirthDate  имеет тип DateTime (это класс .NET для хранения даты), нам необходимо преобразовать это значение в строку, которую человек скажет. Параметр "d" в методе ToString() говорит о том, чтобы дату преобразовать в короткую. Есть также различные параметры форматирования, для вывода даты словами, для форматирования валюты и множество прочих. Далее просим человека пройти 10 метров, затем 20. Меняем ему имя, и выводим его новое имя в консоль.

Что же мы научились делать в этом уроке? Узнали, что такое класс, что такое методы и свойства. Узнали, как создавать экземпляры класса и использовать их. Мы можем расширить наш класс человек чем угодно, во-первых можем добавить ему пол (мужской или женский), можем сделать так, чтобы для его рождения, требовалось два других разнополых человека laughing.gif. Можем добавить такие свойства, как родитель, в которые будем устанавливать ссылки на его родителей, чтобы в любой момент можно было к ним обратиться и вызвать их методы. Также мы можем создать класс кошек или собак, добавить человеку свойства, в которых хранить его питомцев и так далее. В общем, все ограничивается только вашей фантазией.  За эти три урока я показал читателю, что вообще представляет из себя программирование, и что это творческая профессия.

Пишите в комментариях что непонятно, чем, может быть, дополнить статью.

1311


Произошла ошибка :(

Уважаемый пользователь, произошла непредвиденная ошибка. Попробуйте перезагрузить страницу и повторить свои действия.

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

Спасибо!



Вы можете отправить нам сообщение об ошибке по электронной почте:

support@ergosolo.ru

Вы можете получить оперативную помощь, позвонив нам по телефону:

8 (495) 995-82-95