Классы c#
Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье мы с вами разобрали конструкцию switch case c#. В данной статье я бы хотел рассказать, что такое классы в C#. Классы — это фундамент языка C#, в нем заключена вся суть объектов. Внутри класса определяются данные и действия, выполняемые над этими данными. Класс — это обертка (шаблон), которая определяет форму объектов. Объекты, в свою очередь, — это экземпляры класса. Определяя класс, мы создаем данные. В данном случае данные — это переменные-экземпляры класса. Над данными должен выполняться определенный код. Реализация кода находится в методах класса.
Класс создаётся с помощью ключевого слова class. Давайте напишем общую структуру класса, которая содержит только 2 переменные класса и 2 метода (чтобы было проще понимать, методы — это те же самые функции, но реализованные внутри класса):
class имя_класса { уровень_доступа тип переменная1; уровень_доступа тип переменная2; уровень_доступа тип_возвращаемого_значени метод1(параметры) { //тело метода } уровень_доступа тип_возвращаемого_значени метод2(параметры) { //тело метода } }
Перед каждой переменной и методом есть уровень доступа, который определяет, как к этому члену получить доступ. Существует несколько уровней доступа:
1) private. Данный уровень выставлен по умолчанию. Если вы ничего не напишите, то данный член класса будет иметь уровень доступа private. Это закрытый уровень доступа. Обращаться к данному члену класса, можно только из самого класса.
2) public. Это самый открытый уровень доступа. Члены данного класса могут быть доступны из любой части программы, а не только из класса.
3) protected. Это нечто среднее между public и private. К членам с данным уровнем доступа можно обращаться из самого класса, и из классов-наследников (одна из трех парадигм объектно-ориентированного программирования — это наследование, об этом поговорим в одной из следующих статей).
Давайте создадим простейший класс Room, в котором будут находиться данные о длине, ширине и высоте комнаты, а также будет содержаться информация о том, есть ли в ней окна:
class Room { public double length; //длина комнаты public double height; //высота комнаты public double width; //ширина комнаты public bool windows; //есть ли окна? }
Класс — это нечто абстрактное, он не создает реальность. А вот объект — это уже нечто реальное. Давайте создадим объект класса Room:
Room myRoom = new Room();
Каждый объект класса содержит собственные копии всех переменных-членов класса, поэтому к ним можно обращаться и присваивать различные значения. Давайте зададим значения всем четырем переменным-членам класса:
myRoom.length = 7; myRoom.height = 2.5; myRoom.width = 4; myRoom.windows = true;
Т.е. мы видим, что обращение к переменным-членам класса идёт через оператор ".". Давайте сообщим пользователю объем комнаты и имеет ли данная комната окна:
Console.WriteLine("Объем комнаты равен = "+ myRoom.length * myRoom.height * myRoom.width); if (myRoom.windows) Console.WriteLine("В комнате имеются окна."); else Console.WriteLine("В комнате нет окон.");
Можно создавать сколько угодно объектов от одного класса. И все эти объекты могут иметь различные значения переменных.
Пока в нашем классе содержатся только переменные-экземпляры. Давайте добавим в него пару методов. Сразу отмечу, что в хорошей программе один метод выполняет только одну задачу. Методу можно присвоить любое имя, за исключением ключевых слов C#, а также Main(), так как данный метод служит точкой входа в программу. Реализуем метод, который возвращает площадь комнаты, а также реализуем метод, который возвращает объём комнаты (так сказать рефакторинг кода):
public double SRoom(double x, double y) { return x * y; } public double VRoom(double x, double y, double z) { return x * y * z; }
Полный код программы будет иметь следующий вид:
class Room { public double length; public double height; public double width; public bool windows; public double SRoom(double x, double y) { return x * y; } public double VRoom(double x, double y, double z) { return x * y * z; } } class Program { static void Main(string[] args) { Room myRoom = new Room(); myRoom.length = 7; myRoom.height = 2.5; myRoom.width = 4; myRoom.windows = true; Console.WriteLine("Объем комнаты равен = " + myRoom.VRoom(myRoom.length,myRoom.height,myRoom.width)); Console.WriteLine("Площадь комнаты равна = " + myRoom.SRoom(myRoom.length, myRoom.width)); if (myRoom.windows) Console.WriteLine("В комнате имеются окна."); else Console.WriteLine("В комнате нет окон."); Console.ReadLine(); } }
В данной статье вы узнали, что такое классы в C#. Также познакомились с переменными экземпляра (давайте с этого момента буду называть их полями), методами, объектами класса.
В качестве домашнего задания добавьте в класс Room поле price, которое будет отвечать за цену одного квадратного метра. Также создайте метод, который будет принимать 2 параметра: общую площадь комнаты и цену. Данный метод должен возвращать стоимость данной комнаты.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.