Об'єкт в об'єктно-орієнтованому програмуванні (ООП) — ключове поняття об'єктно-орієнтованих технологій проєктування та програмування; втілення абстрактної моделі окремої сутності (предмету або поняття), що має чітко виражене функціональне призначення в деякій області, належить до визначеного класу та характеризується своїми властивостями та поведінкою. Об'єкти є базовими елементами побудови програми — програма в ООП розглядається як сукупність об'єктів, що знаходяться у визначених відношеннях та обмінюються повідомленнями.
Поняття об'єкт в програмному забезпеченні вперше було введене в мові Simula в середині 1960-х років для моделювання реальності.
Властивості та поведінка об'єкта
Властивості об'єкта визначаються його атрибутами (полями даних). Поточне значення атрибутів визначає поточний стан об'єкта у множині можливих станів.
Поведінка об'єкта визначається функціями (методами) об'єкта. Передача повідомлень між об'єктами (взаємодія об'єктів) призводить до виконання об'єктом, що отримав повідомлення, визначеної функції. Об'єкт також може надіслати повідомлення собі. В результаті отримання об'єктом повідомлення він змінює свій стан: на новий, якщо виконання операцій функції призвело до зміни значень атрибутів; або той самий, якщо атрибути не зазнали змін. В контексті отримання повідомлень та зміни станів об'єкт може розглядатись як автомат.
Загалом, поведінка та властивості об'єкта визначають його , що вирізняє об'єкт серед інших об'єктів.
Характеристики об'єктів
Об'єкти створюються у програмі під час її виконання і, зазвичай, існують у межах програми, але, в окремих випадках, можуть існувати й поза межами програми — наприклад, у вигляді файлів або пакетів даних. Механізми, що дозволяють існування об'єктів поза межами програми, підтримуються окремими ОО-мовами програмування.
Властивості об'єкта, зазвичай, доступні лише через його функції. При цьому вважається, що об'єкт є екземпляром класу як абстрактного типу даних. В окремих випадках, що, загалом, порушують принципи ООП, властивості об'єкта можуть бути загальнодоступними. Такі властивості, як правило, є константами.
Відповідно до властивостей об'єкта та його стану, функції поділяються на конструктори, селектори, модифікатори та деструктори:
- конструктори здійснюють первинну ініціалізацію об'єкта під час його створення;
- селектори повертають значення окремих властивостей;
- модифікатори змінюють значення окремих властивостей;
- деструктори скидають значення властивостей під час знищення об'єкта.
Представлення об'єктів
Об'єкти, зазвичай, зберігаються в оперативній пам'яті під час виконання програми. При цьому вони представлені в пам'яті послідовністю значень атрибутів — структурою даних. Всі функції об'єктів зберігаються поза межами об'єктів і для функцій лише забезпечується контекст — можливість звернення до атрибутів вказаного об'єкта. В окремих ОО-мовах програмування дані об'єкта або об'єктів в пам'яті можуть бути перенесені поза межі пам'яті програми, наприклад — у зовнішній файл, і в подальшому — поновлені. При цьому об'єкт опиниться в тому ж стані, в якому він перебував на момент збереження.
Статичні (спільні для всіх об'єктів класу) атрибути об'єктів зберігаються поза межами структур даних об'єктів і не впливають на їх розмір у пам'яті.
Приклади
Мова 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);
Див. також
Примітки
- What Is an Object?
- Бьерн Страуструп. Язык программирования С++ // Раздел 1. Абстракция данных
- Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на С++ // Глава 3. Классы и объекты
- Ole-Johan Dahl. The Roots of Object Orientation: The Simula Language
Джерела
- Хассан Гома. UML. Проектирование систем реального времени, распределенных и параллельных приложений / ДМК, М.: 2016.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Ob yekt v ob yektno oriyentovanomu programuvanni OOP klyuchove ponyattya ob yektno oriyentovanih tehnologij proyektuvannya ta programuvannya vtilennya abstraktnoyi modeli okremoyi sutnosti predmetu abo ponyattya sho maye chitko virazhene funkcionalne priznachennya v deyakij oblasti nalezhit do viznachenogo klasu ta harakterizuyetsya svoyimi vlastivostyami ta povedinkoyu Ob yekti ye bazovimi elementami pobudovi programi programa v OOP rozglyadayetsya yak sukupnist ob yektiv sho znahodyatsya u viznachenih vidnoshennyah ta obminyuyutsya povidomlennyami Ponyattya ob yekt v programnomu zabezpechenni vpershe bulo vvedene v movi Simula v seredini 1960 h rokiv dlya modelyuvannya realnosti Vlastivosti ta povedinka ob yektaVlastivosti ob yekta viznachayutsya jogo atributami polyami danih Potochne znachennya atributiv viznachaye potochnij stan ob yekta u mnozhini mozhlivih staniv Povedinka ob yekta viznachayetsya funkciyami metodami ob yekta Peredacha povidomlen mizh ob yektami vzayemodiya ob yektiv prizvodit do vikonannya ob yektom sho otrimav povidomlennya viznachenoyi funkciyi Ob yekt takozh mozhe nadislati povidomlennya sobi V rezultati otrimannya ob yektom povidomlennya vin zminyuye svij stan na novij yaksho vikonannya operacij funkciyi prizvelo do zmini znachen atributiv abo toj samij yaksho atributi ne zaznali zmin V konteksti otrimannya povidomlen ta zmini staniv ob yekt mozhe rozglyadatis yak avtomat Zagalom povedinka ta vlastivosti ob yekta viznachayut jogo sho viriznyaye ob yekt sered inshih ob yektiv Harakteristiki ob yektivOb yekti stvoryuyutsya u programi pid chas yiyi vikonannya i zazvichaj isnuyut u mezhah programi ale v okremih vipadkah mozhut isnuvati j poza mezhami programi napriklad u viglyadi fajliv abo paketiv danih Mehanizmi sho dozvolyayut isnuvannya ob yektiv poza mezhami programi pidtrimuyutsya okremimi OO movami programuvannya Vlastivosti ob yekta zazvichaj dostupni lishe cherez jogo funkciyi Pri comu vvazhayetsya sho ob yekt ye ekzemplyarom klasu yak abstraktnogo tipu danih V okremih vipadkah sho zagalom porushuyut principi OOP vlastivosti ob yekta mozhut buti zagalnodostupnimi Taki vlastivosti yak pravilo ye konstantami Vidpovidno do vlastivostej ob yekta ta jogo stanu funkciyi podilyayutsya na konstruktori selektori modifikatori ta destruktori konstruktori zdijsnyuyut pervinnu inicializaciyu ob yekta pid chas jogo stvorennya selektori povertayut znachennya okremih vlastivostej modifikatori zminyuyut znachennya okremih vlastivostej destruktori skidayut znachennya vlastivostej pid chas znishennya ob yekta Predstavlennya ob yektivOb yekti zazvichaj zberigayutsya v operativnij pam yati pid chas vikonannya programi Pri comu voni predstavleni v pam yati poslidovnistyu znachen atributiv strukturoyu danih Vsi funkciyi ob yektiv zberigayutsya poza mezhami ob yektiv i dlya funkcij lishe zabezpechuyetsya kontekst mozhlivist zvernennya do atributiv vkazanogo ob yekta V okremih OO movah programuvannya dani ob yekta abo ob yektiv v pam yati mozhut buti pereneseni poza mezhi pam yati programi napriklad u zovnishnij fajl i v podalshomu ponovleni Pri comu ob yekt opinitsya v tomu zh stani v yakomu vin perebuvav na moment zberezhennya Statichni spilni dlya vsih ob yektiv klasu atributi ob yektiv zberigayutsya poza mezhami struktur danih ob yektiv i ne vplivayut na yih rozmir u pam yati PrikladiMova C Viznachennya klasu ob yekta class Person public string Name public int Age public Person string name int age Name name Age age Viznachennya ob yekta Person person new Person John Doe 21 Mova C Viznachennya klasu ob yekta class Person public Person string name int age int getName const private string name int age Viznachennya ob yekta Person johnDoe John Doe 21 Div takozhKlas programuvannya PrimitkiWhat Is an Object Bern Straustrup Yazyk programmirovaniya S Razdel 1 Abstrakciya dannyh Gradi Buch Obektno orientirovannyj analiz i proektirovanie s primerami prilozhenij na S Glava 3 Klassy i obekty Ole Johan Dahl The Roots of Object Orientation The Simula LanguageDzherelaHassan Goma UML Proektirovanie sistem realnogo vremeni raspredelennyh i parallelnyh prilozhenij DMK M 2016