Очікує на перевірку

Об'єкт (програмування)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Об'єкт в об'єктно-орієнтованому програмуванні (ООП) — ключове поняття об'єктно-орієнтованих технологій проєктування та програмування[1]; втілення абстрактної моделі[2] окремої сутності (предмету або поняття), що має чітко виражене функціональне призначення в деякій області, належить до визначеного класу та характеризується своїми властивостями та поведінкою[3]. Об'єкти є базовими елементами побудови програми — програма в ООП розглядається як сукупність об'єктів, що знаходяться у визначених відношеннях та обмінюються повідомленнями.

Поняття об'єкт в програмному забезпеченні вперше було введене в мові Simula в середині 1960-х років для моделювання реальності[4].

Властивості та поведінка об'єкта

[ред. | ред. код]

Властивості об'єкта визначаються його атрибутами (полями даних). Поточне значення атрибутів визначає поточний стан об'єкта у множині можливих станів.

Поведінка об'єкта визначається функціями (методами) об'єкта. Передача повідомлень між об'єктами (взаємодія об'єктів) призводить до виконання об'єктом, що отримав повідомлення, визначеної функції. Об'єкт також може надіслати повідомлення собі. В результаті отримання об'єктом повідомлення він змінює свій стан: на новий, якщо виконання операцій функції призвело до зміни значень атрибутів; або той самий, якщо атрибути не зазнали змін. В контексті отримання повідомлень та зміни станів об'єкт може розглядатись як автомат.

Загалом, поведінка та властивості об'єкта визначають його ідентичність, що вирізняє об'єкт серед інших об'єктів.

Характеристики об'єктів

[ред. | ред. код]

Об'єкти створюються у програмі під час її виконання і, зазвичай, існують у межах програми, але, в окремих випадках, можуть існувати й поза межами програми — наприклад, у вигляді файлів або пакетів даних. Механізми, що дозволяють існування об'єктів поза межами програми, підтримуються окремими ОО-мовами програмування.

Властивості об'єкта, зазвичай, доступні лише через його функції. При цьому вважається, що об'єкт є екземпляром класу як абстрактного типу даних. В окремих випадках, що, загалом, порушують принципи ООП, властивості об'єкта можуть бути загальнодоступними. Такі властивості, як правило, є константами.

Відповідно до властивостей об'єкта та його стану, функції поділяються на конструктори, селектори, модифікатори та деструктори:

  • конструктори здійснюють первинну ініціалізацію об'єкта під час його створення;
  • селектори повертають значення окремих властивостей;
  • модифікатори змінюють значення окремих властивостей;
  • деструктори скидають значення властивостей під час знищення об'єкта.

Представлення об'єктів

[ред. | ред. код]

Об'єкти, зазвичай, зберігаються в оперативній пам'яті під час виконання програми. При цьому вони представлені в пам'яті послідовністю значень атрибутів — структурою даних. Всі функції об'єктів зберігаються поза межами об'єктів і для функцій лише забезпечується контекст — можливість звернення до атрибутів вказаного об'єкта. В окремих ОО-мовах програмування дані об'єкта або об'єктів в пам'яті можуть бути перенесені поза межі пам'яті програми, наприклад — у зовнішній файл, і в подальшому — поновлені. При цьому об'єкт опиниться в тому ж стані, в якому він перебував на момент збереження.

Статичні (спільні для всіх об'єктів класу) атрибути об'єктів зберігаються поза межами структур даних об'єктів і не впливають на їх розмір у пам'яті.

Приклади

[ред. | ред. код]

Мова C#

[ред. | ред. код]
//Визначення класу об'єкта:
class Person
{
    public string Name;
    public int Age;
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

// Визначення об'єкта:
Person person = new Person("John Doe", 21);

Мова C++

[ред. | ред. код]
// Визначення класу об'єкта:
class Person {
public:
    Person(string name, int age);
    int getName() const;
private:
    string name;
    int age;
};

// Визначення об'єкта:
Person johnDoe("John Doe", 21);

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. What Is an Object?
  2. Бьерн Страуструп. Язык программирования С++ // Раздел 1. Абстракция данных
  3. Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на С++ // Глава 3. Классы и объекты
  4. Ole-Johan Dahl. The Roots of Object Orientation: The Simula Language

Джерела

[ред. | ред. код]
  • Хассан Гома. UML. Проектирование систем реального времени, распределенных и параллельных приложений / ДМК, М.: 2016.