С#: Создание простых классов

Создавая класс, разработчик должен понимать, что он не создает код программы, а разрабатывает структуру и модель поведения какого-либо объекта, который ему будет необходим при дальнейшей разработки программы.
Создавая класс, мы оперируем абстрактными значениями (если мы создаем класс «человек», мы не создаем конкретную личность, а создаем шаблон который будет применим к любой личности.).

Для того, чтобы создать класс 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.Реализуйте класс прямоугольник и эллипс.

Запись опубликована в рубрике C#, Учебное пособие C# с метками , , , , , , , , , . Добавьте в закладки постоянную ссылку.