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 — щоб він був доступний у всьому проєкті.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ