четверг, 30 декабря 2021 г.

Классы

 

Классы. Объектно-ориентированное программирование

Классы и объекты


Описанием объекта является класс, а объект представляет экземпляр этого класса.


По сути класс представляет новый тип, который определяется пользователем. Класс определяется с помощью ключевого слова сlass:

1
2
3
4
class название_класса
{
    // содержимое класса
}

После слова class идет имя класса и далее в фигурных скобках идет собственно содержимое класса. Например, определим в файле Program.cs класс Person, который будет представлять человека:

1
2
3
4
class Person
{
  
}

Поля и методы класса

Класс может хранить некоторые данные. 

Для хранения данных в классе применяются поля. По сути поля класса - это переменные, определенные на уровне класса.

Кроме того, класс может определять некоторое поведение или выполняемые действия

Для определения поведения в классе применяются методы.

Итак, добавим в класс Person поля и методы:

1
2
3
4
5
6
7
8
9
10
class Person
{
    public string name = "Undefined";   // имя
    public int age;                     // возраст
 
    public void Print()
    {
        Console.WriteLine($"Имя: {name}  Возраст: {age}");
    }
}

В данном случае в классе Person определено поле name, которое хранит имя, и поле age, которое хранит возраст человека.

В отличие от переменных, определенных в методах, поля класса могут иметь модификаторы, которые указываются перед полем. Так, в данном случае, чтобы все поля были доступны вне класса Person поля определены с модификатором public.

При определении полей мы можем присвоить им некоторые значения, как в примере выше в случае переменной name. Если поля класса не инициализированы, то они получают значения по умолчанию. Для переменных числовых типов это число 0.

Также в классе Person определен метод Print(). Методы класса имеют доступ к его поля, и в данном случае обращаемся к полям класса name и age для вывода их значения на консоль. И чтобы этот метод был виден вне класса, он также определен с модификатором public.

Создание объекта класса

После определения класса мы можем создавать его объекты. Для создания объекта применяются конструкторы. По сути конструкторы представляют специальные методы, которые называются так же как и класс, и которые вызываются при создании нового объекта класса и выполняют инициализацию объекта. Общий синтаксис вызова конструктора:

1
new конструктор_класса(параметры_конструктора);

Сначала идет оператор new, который выделяет память для объекта, а после него идет вызов конструктора.

Конструктор по умолчанию

Если в классе не определено ни одного конструктора (как в случае с нашим классом Person), то для этого класса автоматически создается пустой конструктор по умолчанию, который не принимает никаких параметров.

Теперь создадим объект класса Person:

1
2
3
4
5
6
7
8
9
10
11
12
13
Person tom = new Person();  // создание объекта класса Person
 
// определение класса Person
class Person
{
    public string name = "Undefined";
    public int age;
 
    public void Print()
    {
        Console.WriteLine($"Имя: {name}  Возраст: {age}");
    }
}

Для создания объекта Person используется выражение new Person().

В итоге после выполнения данного выражения в памяти будет выделен участок, где будут храниться все данные объекта Person.

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

ля обращения к функциональности класса - полям, методам (а также другим элементам класса) применяется точечная нотация точки - после объекта класса ставится точка, а затем элемент класса:

1
2
объект.поле_класса
объект.метод_класса(параметры_метода)

Например, обратимся к полям и методам объекта Person:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Person tom = new Person();  // создание объекта класса Person
 
// Получаем значение полей в переменные
string personName = tom.name;
int personAge = tom.age;
Console.WriteLine($"Имя: {personName}  Возраст {personAge}");   // Имя: Undefined  Возраст: 0
 
// устанавливаем новые значения полей
tom.name = "Tom";
tom.age = 37;
 
// обращаемся к методу Print
tom.Print();    // Имя: Tom  Возраст: 37
 
class Person
{
    public string name = "Undefined";
    public int age;
 
    public void Print()
    {
        Console.WriteLine($"Имя: {name}  Возраст: {age}");
    }
}

Консольный вывод данной программы:

Имя: Undefined	Возраст: 0
Имя: Tom	Возраст: 37






Комментариев нет:

Отправить комментарий

Паттерн 'Репозиторий' в ASP.NET

  Последнее обновление: 1.11.2015         Одним из наиболее часто используемых паттернов при работе с данными является паттерн 'Репозито...