JavaRush /Курсы /C# SELF /Понятие класса и объекта

Понятие класса и объекта

C# SELF
16 уровень , 0 лекция
Открыта

1. Введение

Как вы уже слышали, класс – это шаблон, а объект – его экземпляр.
Но пришло время разобраться в классах и объектах более глубоко!

Представьте, что вы — инженер-конструктор на автомобильном заводе. Вместо того чтобы вручную собирать каждую машину, вы создаёте чертёж — универсальную инструкцию, по которой можно собирать множество автомобилей одного типа. В этом чертеже указано, что у машины должен быть двигатель, колёса, кузов, цвет, и какие функции она выполняет.

Этот чертёж в мире программирования называется классом.

А теперь представьте, что по этому чертежу завод выпустил партию машин. Каждая из них — реальная, едет по дороге, у неё свой номер, цвет, и даже какие-то индивидуальные настройки. Но все они собраны по одному и тому же чертежу.

Эти реальные машины в мире программирования называются объектами (или экземплярами класса).

Итак, запомним:

  • Класс — это как чертёж, шаблон, схема. Он описывает, какие данные могут быть у чего-то (например, марка, цвет, количество дверей) и что это что-то может делать (например, ехать, тормозить, сигналить). Класс — это просто описание, он сам по себе не занимает много места в памяти и не является чем-то "живым".
  • Объект — это конкретная "машина", собранная по чертежу класса. Это реальная, "живая" сущность в вашей программе, которая занимает место в памяти, имеет свои уникальные значения для данных (свой номер, цвет) и может выполнять действия, описанные в классе.

Звучит немного абстрактно? Не волнуйтесь, сейчас всё разберём.

2. Что такое класс?

Класс — это пользовательский тип данных, который описывает, каким образом должны выглядеть объекты этого типа: какие у них есть характеристики (состояния/свойства/поля) и какие действия можно с ними выполнять (поведение/методы/функции).

Класс определяет:

  • Поля (переменные) — данные, которые хранятся в объекте.
  • Методы (функции) — действия, которые может выполнять объект.
  • Свойства — специальные методы для доступа к данным.
  • События — механизмы для уведомления (о них позже).
  • Конструкторы — специальные методы для создания объектов.

public class Person
{
    // Поля (данные)
    public string Name;
    public int Age;

    // Метод (действие)
    public void SayHello()
    {
        Console.WriteLine($"Привет! Меня зовут {Name}, мне {Age} лет.");
    }
}

В этом примере мы объявили класс Person. У него есть два поля (Name и Age) и метод SayHello(). Это всё, что нужно для простейшего класса.

3. Что такое объект?

Объект — это экземпляр класса, то есть конкретная сущность, созданная в памяти по "чертежу" (классу).

Когда вы создаёте переменную типа Person, вы получаете объект — с уникальными значениями для каждого поля. Не просто человека, а, скажем, человека по имени Джонни, которому 12 лет. И когда он с нами здоровается (то есть вызывается метод SayHello()), он нам "сообщает" информацию о себе.


// Создаём объект класса Person
Person person1 = new Person();
person1.Name = "Алиса";
person1.Age = 28;
person1.SayHello(); // => Привет! Меня зовут Алиса, мне 28 лет.

// Создаём ещё одного "человека"
Person person2 = new Person();
person2.Name = "Боб";
person2.Age = 32;
person2.SayHello(); // => Привет! Меня зовут Боб, мне 32 лет.

Каждый объект — это не просто копия: это независимая сущность со своими данными (в нашем примере — имена и возраст).

4. Главное отличие класса и объекта

Главное отличие:

  • Класс — "чертёж", инструкция, тип данных.
  • Объект — конкретный представитель этого типа; реальный "дом", собранный по плану; "машина", произведённая по чертежу.

Можно создать сколько угодно объектов одного класса. Например, если у вас есть класс Person, вы можете создать миллион "человеков" в программе.

Почему это удобно и важно?

Попробуем представить программу без классов. Если бы у нас был список студентов, приходилось бы хранить имя, возраст, оценки и прочие данные в отдельных массивах для каждого параметра:

string[] studentNames = { "Сергей", "Гриша", "Маша" };
int[] studentAges = { 20, 19, 21 };

// Если потребуется добавить ещё одно свойство, появится ещё один массив.
// Попытка переставить местами пару человек превращается в сущий кошмар!

Используя классы, данные не расползаются по разным массивам, а логично группируются:

public class Student
{
    public string Name;
    public int Age;
}

Student[] students = new Student[3];
students[0] = new Student { Name = "Сергей", Age = 20 };
students[1] = new Student { Name = "Гриша", Age = 19 };
students[2] = new Student { Name = "Маша", Age = 21 };

Гораздо понятнее и удобнее! К тому же к каждому студенту теперь можно добавить методы (например, "поздороваться" или "рассчитать среднюю оценку").

Картинка: связь класса и объекта

+------------------+          +----------------+
|   class Person   |=========>|  person1:      | 
| (чертёж/тип)     |          |  Name = "Алиса"|
|                  |         /|  Age = 28      |
+------------------+        / +----------------+
                          /
+------------------------/----------------------+
                        /
                  +----------------+
                  |  person2:      |
                  |  Name = "Боб"  |
                  |  Age = 32      |
                  +----------------+

5. Где применяются классы и объекты в реальной жизни?

Классы и объекты — основа для любого приложения на C#. Всё, что вы видите вокруг в .NET: окна, кнопки, формы, массивы, коллекции, соединения с базой данных, логи — это объекты, созданные по определённым классам.

Примеры:

  • Класс Button — это инструкция, как должна выглядеть кнопка на экране. Каждый раз, когда вы создаёте новую кнопку — это объект класса.
  • Класс Stream (из системы ввода-вывода): вы получаете объект, который работает с файлами.
  • Ваш будущий класс User для хранения информации о пользователях — снова тот же шаблон.

Коротко про имена, модификаторы и конвенции

  • Для классов принято использовать имена с большой буквы, например Person, Order, Product.
  • Для переменных — с маленькой буквы, например person, user1, orderList.
  • Чаще всего класс делают public — чтобы он был доступен везде в проекте.
2
Задача
C# SELF, 16 уровень, 0 лекция
Недоступна
Создание простого класса и объекта
Создание простого класса и объекта
2
Задача
C# SELF, 16 уровень, 0 лекция
Недоступна
Несколько объектов одного класса
Несколько объектов одного класса
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ