Создавая класс, разработчик должен понимать, что он не создает код программы, а разрабатывает структуру и модель поведения какого-либо объекта, который ему будет необходим при дальнейшей разработки программы.
Создавая класс, мы оперируем абстрактными значениями (если мы создаем класс «человек», мы не создаем конкретную личность, а создаем шаблон который будет применим к любой личности.).
Для того, чтобы создать класс Visual Studio:
1. Нажимаем правой кнопкой мыши по проекту.
2. В появившемся меню выбираем пункт Добавить – Класс
3. В появившемся окне указываем имя класса, например, Point.cs.
Так как мы создаем класс Point (точку), то нам необходимо задать те свойства, которые присуще точке, это: координата по X и координата по Y (если говорить про двухмерное пространство).
class Point { public int X; public int Y; }
public— означает, что свойство или метод общедоступно (также возможно значение private и protected, если данное слово опустить, то считается, что указан тип private)
int – говорит о том, что свойство является целым числом
Теперь для того, чтобы создать точку в своей программе, мы можем написать следующий код.
Point p = new Point(); //(1) p.x = 10; p.y = 5;
Данный код создает точку с именем р и координатой 10;5
Первая строчка данного примера (1) отвечает за создание переменной типа Point, путем вызова конструктора класса Point. В нашем классе на данный момент конструктор не создан, поэтому в строке (1) вызывается конструктор по умолчанию.
Конструктор по умолчанию присутствует в классе всегда, если в нем явно не указан хотя бы один конструктор.
Добавим свой конструктор в данный класс.
Создание конструктора ничем не отличается от создания функций, кроме 2-х исключений:
1. Конструктор- это функция, которая называется точно так же как и класс
2. У конструктора не указывается тип возвращаемого значения.
Так как мы работаем с классом точка, то для ее создания нам необходимо знать 2 координаты, значит наш конструктор, должен принимать 2 аргумента.
class Point { public int X; public int Y; public Point (int a, int b) { X = a; Y = b; } }
Теперь, для того, чтобы создать точку, мы можем написать следующий код
Point p = new Point(10, 5);
В нашем конструкторе «a» и «b» это аргументы и они доступны только в рамках той функции, аргументами, которой они являются. X и Y это свойства класса, поэтому мы можем использовать их в любой функции данного класса
Что произойдет, если аргументы нашего конструктора будут не «a» и «b», а «X» и «Y»?
class Point { public int X; public int Y; public Point (int X, int Y) { X = X; //1 Y = Y; //2 } }
Visual Studio напишет нам ошибку в строчках (1) и (2), связана она с тем, что внутри функции X и Y – это и аргументы функции и свойства класса. Мы должны явно показать, какие из этих переменных являются свойствами класса. Делается это путем приписывания к данной переменной ключевого слова this
class Point { public int X; public int Y; public Point (int X, int Y) { this.X = X; this.Y = Y; } }
Теперь Visual studio понимает какая переменная за что отвечает.
Стоит так же отметить, что в рамках класса, значения свойств хранятся в памяти на протяжении всего времени жизни экземпляра класса. Значения же аргументов функций и переменных функций удаляются из памяти после завершения данной функции.
Создадим еще один класс Line (Линия)
Для этого повторим шаги 1-3, описанные выше при создании класса Point.
Что такое Линия? Линия- это набор из 2-х точек. Точка же–это 2-е координаты. Таким образом по сути линия-это 4 координаты.
class Line { public int x1; public int y1; public int x2; public int y2; }
Подумайте, чем неудобна данная реализация?
В предыдущей части, мы реализовали класс Точка, тем самым мы создали новый тип данных, который можем использовать при необходимости. Тем самым нашу Линию можно реализовать следующим образом:
class Line { public Point start; public Point end; }
Для тренировки:
1.Напишите конструктор класса Line
2.Реализуйте класс прямоугольник и эллипс.