Ця стаття потребує додаткових для поліпшення її . (лютий 2020) |
В об'єктно-орієнтованому програмуванні, клас — це спеціальна конструкція, яка використовується для групування пов'язаних змінних та функцій. При цьому, згідно з термінологією ООП, глобальні змінні класу (члени-змінні) називаються полями даних (також властивостями або атрибутами), а члени-функції називають методами класу. Створений та ініціалізований екземпляр класу називають об'єктом класу. На основі одного класу можна створити безліч об'єктів, що відрізнятимуться один від одного своїм станом (значеннями полів).
В Unified Modeling Language класи зображуються за допомогою діаграми класів.
Класи та екземпляри класів
Клас можна порівнювати з формою для випічки печива — форма одна, а печива можна випекти безліч. Печиво — це конкретні об'єкти, екземпляри класу печиво, яке може бути з різною начинкою. Поля дозволяють вмістити дані про певний реальний об'єкт, а методи здійснювати обробку цих даних. Наприклад, можна створити загальний клас Людина з полями Ім'я та Прізвище, рік народження, професія, зарплата. При створенні ж на основі класу конкретного екземпляру, дані поля заповнюються конкретними даними про певну людину. Обробкою цих даних можуть займатися відповідні методи. Наприклад, можна створити метод для обчислення віку людини, тощо.
На основі класів можна створювати підкласи, які успадковують властивості та поведінку батьківських класів. Таким чином можна створити цілу ієрархію класів. Різні мови дещо по різному реалізовують механізм успадкування. Існує множинне та одинарне успадкування. Множинне — це, коли підклас створюється на основі кількох безпосередніх батьків (як то в мові програмування ). Одинарне успадкування — це коли клас може мати одного безпосереднього батька (мова програмування Java). Надкласи можуть мати свої надкласи, підкласи можуть також бути надкласами для певних класів.
Методи класів
Через методи реалізується поведінка об'єктів. Практично вся робота з об'єктами відбувається через методи. Вони можуть змінювати стан об'єкта або ж просто надавати доступ до даних, які були інкапсульовані в об'єкті. Існує кілька видів методів, які мають деякі відмінності в різних мовах програмування. До методів та полів даних можна надавати різні права доступу, від яких залежатиме доступ до них з різних частин програмного коду. Права доступу та вид методів задаються модифікаторами при описі методів. Метод, який проводить створення та початкову ініціалізацію екземпляра класу називають конструктором класу. Метод, який проводить знищення об'єкта, називають деструктором класу.
Інтерфейс та реалізація, спадкування реалізації
У програмуванні існує поняття програмного інтерфейсу, що означає перелік можливих обчислень, які може виконати та чи інша частина програми, включаючи опис того, які аргументи і в якому порядку потрібно передавати на вхід алгоритмам з цього переліку, а також що і в якому вигляді вони будуть повертати. Абстрактний тип даних інтерфейс придуманий для формалізованого опису такого переліку. Самі алгоритми, тобто дійсний програмний код, який буде виконувати всі ці обчислення, інтерфейсом не задається, програмується окремо та називається реалізацією інтерфейсу.
Програмні інтерфейси, а також класи, можуть розширюватися шляхом спадкування, яке є одним з важливих засобів повторного використання готового коду в ООП. Успадкований клас або інтерфейс буде містити в собі все, що зазначено для всіх його батьківських класів (в залежності від мови програмування та платформи, їх може бути від нуля до нескінченності). Наприклад, можна створити свій варіант текстового рядка шляхом успадкування класу «мій рядок тексту» від вже існуючого класу «рядок тексту», при цьому передбачається, що програмісту не доведеться заново переписувати алгоритми пошуку та інше, оскільки вони автоматично будуть успадковані від готового класу, і будь-який екземпляр класу «мій рядок тексту» може бути переданий не лише в готові методи батьківського класу «рядок тексту» для проведення потрібних обчислень, а й взагалі в будь-який алгоритм, здатний працювати з об'єктами типу «рядок тексту», оскільки екземпляри обох класів сумісні по програмним інтерфейсам.
Клас дозволяє задати не лише програмний інтерфейс до самого себе і до своїх екземплярів, але і в явному вигляді написати код, відповідальний за обчислення. Якщо при створенні свого нового типу даних успадковувати інтерфейс, то ми отримаємо можливість передавати примірник свого типу даних в будь-який алгоритм, який вміє працювати з цим інтерфейсом. Однак нам доведеться самим написати реалізацію інтерфейсу, тобто ті алгоритми, якими буде користуватися цікавий нам алгоритм для проведення обчислень з використанням нашого екземпляра. Водночас, при наслідуванні класу, автоматично успадковується готовий код під інтерфейс (це не завжди так, батьківський клас може вимагати реалізації якихось алгоритмів в дочірньому класі в обов'язковому порядку). В такій можливості успадковувати готовий код і проявляється те, що в об'єктно-орієнтованої програми тип даних клас визначає одночасно як інтерфейс, так і реалізацію для всіх своїх екземплярів.
Стан об'єкта, поняття областей доступу, конструктори
Однією з проблем структурного програмування, з якою бореться ООП, є проблема підтримки правильного значення змінних програми. Часто різні змінні програми зберігають логічно пов'язані значення, і за підтримання цієї логічної зв'язності несе відповідальність програміст, тобто автоматично зв'язність не підтримується. Прикладом може слугувати пара прапорців «звільнений» та «очікує премії за підсумками року», коли за правилами відділу кадрів людина може бути водночас не звільненою і не очікувати премію, або не звільненою та очікувати премію, або звільненою і не очікувати премію, але не може бути одночасно звільненою і очікувати премію. Тобто будь-яка частина програми, яка проставляє прапорець «звільнений», завжди повинна знімати прапорець «чекає премії за підсумками року».
Хороший спосіб вирішити цю проблему — оголосити прапорець «звільнений» недоступним до зміни для всіх ділянок програми, крім одного спеціально обумовленого. У цій спеціально обумовленій ділянці все буде написано один раз і правильно, а всі інші повинні будуть звертатися до цієї ділянки завжди, коли вони хочуть встановити або зняти прапорець «звільнений».
В об'єктно-орієнтованій програмі прапорець «звільнений» буде оголошено приватним членом деякого класу, а для його читання та зміни будуть написані відповідні публічні методи. Правила, що визначають можливість або неможливість безпосередньо змінювати будь-які змінні, називаються правилами завдання областей доступу. Слова «приватний» та «публічний» в цьому випадку є так званими «модифікаторами доступу». Вони називаються «модифікаторами» тому, що в деяких мовах вони використовуються для зміни раніше встановлених прав при спадкуванні класу. Спільно класи та модифікатори доступу задають область доступу, тобто у кожної ділянки коду, залежно від того, до якого класу вона належить, буде своя область доступу щодо тих чи інших елементів (членів) свого класу та інших класів, включаючи змінні, методи, функції, константи, тощо. Існує основне правило: ніщо в одному класі не може бачити приватних елементів іншого класу. Щодо інших, більш складних правил, у різних мовах існують інші модифікатори доступу та правила їх взаємодії з класами.
Майже кожному члену класа можна встановити модифікатор доступу (за винятком статичних конструкторів та деяких інших речей). У більшості об'єктно-орієнтованих мов програмування підтримуються такі модифікатори доступу:
- private (закритий, внутрішній член класу) — звернення до члену допускаються лише з методів того класу, у якому цей член визначений. Будь-які спадкоємці класу вже не зможуть отримати доступ до цього члену. Спадкування за типом private забороняє доступ з дочірнього класу до всіх членів батьківського класу, включаючи навіть public-члени (С++);
- protected (захищений, внутрішній член ієрархії класів) — звернення до члена допускаються з методів того класу, у якому цей член визначений, а також з будь-яких методів його класів-спадкоємців. Спадкування за типом protected робить всі public-члени батьківського класу protected-членами класу-спадкоємця (С++);
- public (відкритий член класу) — звернення до члена допускаються з будь-якого коду. Спадкування за типом public не міняє модифікаторів батьківського класу (С++);
Проблема підтримки правильного стану змінних актуальна і для вихідного моменту виставлення початкових значень. Для цього в класах передбачені спеціальні методи/функції, звані конструкторами. Жоден об'єкт (екземпляр класу) не може бути створений інакше, як шляхом виклику на виконання код конструктора, який поверне створений та правильно заповнений примірник класу. У багатьох мовах програмування тип даних «структура», як і клас, може містити змінні та методи, але екземпляри структур, залишаючись просто розміченими ділянками оперативної пам'яті, можуть створюватися в обхід конструкторам, що заборонено для примірників класів (за винятком спеціальних виняткових методів обходу всіх подібних правил ООП, передбачених в деяких мовах та платформах). У цьому виявляється відмінність класів від інших типів даних — виклик конструктора обов'язковий.
Практичний підхід
У сучасних об'єктно-орієнтованих мовах програмування (в тому числі в php, Java, , Oberon, Python, Ruby, Smalltalk, Object Pascal) створення класу зводиться до написання деякої структури, що містить набір полів та методів (серед останніх особливу роль грають конструктори, деструктори, фіналізатори). Практично клас може розумітися як якийсь шаблон, за яким створюються об'єкти — екземпляри цього класу. Усі примірники одного класу створені за одним шаблоном, тому мають один і той же набір полів та методів.
Приклади створення класів на різних мовах програмування
Класи в мові Object Pascal (Delphi) |
---|
На мові Delphi клас описується таким чином: TMyClass = class(TObject) private {Описані в цій секції елементи не доступні ззовні (за межами класу, але доступні в межах модуля).} {Тут зазвичай знаходяться поля класу.} protected {Описані в цій секції елементи доступні лише класу і всім його нащадкам.} public {Описані в цій секції елементи доступні всім.} published {Описані в цій секції елементи доступні всім і відображаються в Object Inspector'e.} end;
Створюється екземпляр (об'єкт) класу так: MyClass:= TMyClass.Create; Знищується так: FreeAndNil(MyClass); або так: MyClass.Free; |
Класи в мові Java |
---|
Визначення класу на мові Java за допомогою оператора class MyClass { String name = "Example"; // "Конструктор" public MyClass(String name) { this.name = name; } // "Метод" public String getName() { return name; } } Створення екземпляра класу: MyClass my = new MyClass("Example 2"); Знищення екземпляра класу відбувається за допомогою «збирача сміття» автоматично. |
Класи в мові C++ |
---|
у мові створюється таким чином: class MyClass: public ParentClass // ParentClass — клас-предок, якщо такий є { public: // елементи в цій секції доступні з будь-якої частини програми MyClass(); // конструктор ~MyClass(); // деструктор protected: // елементи в цій секції доступні з класу і його нащадків private: // елементи в цій секції доступні лише з класу; це область доступу за умовчанням }; Після свого створення клас вважається повноцінним типом даних і, отже екземпляри класу створюються таким чином: MyClass myinstance; Звернення до членів класу: myinstance.classmember Знищується екземпляр класу, як і будь-яка змінна, лише у випадку, якщо функція, в якій він був створений, завершила роботу або якщо була примусово звільнена динамічна пам'ять, виділена під клас. |
Класи в мові C# |
---|
Класи в мові C # визначаються таким чином: public class MyClass { //Член, доступний будь-якому класу програми public int k; //Член, доступний будь-якому класу в тому ж модулі програми internal int l; //Член, доступний будь-якому класу в тому ж модулі програми або лише поточним класу і всім його підкласам в іншому модулі protected internal int m; //Член, доступний лише поточним класу і всім його підкласам protected int n; //Член, доступний лише з поточного класу (за замовчуванням). private int p; } На відміну від C++ модифікатори доступу повинні вказуватися для кожного члена окремо. Анонімні класи можна визначити в методі, наприклад, так: public void DoSomething() { var person = new { Name = "Маргарита"; Age = 15; } var pet = new { Name = "Дуня"; Type = "Черепаха"; Owner = person; } Console.WriteLine("Age of pet owner:" + pet.Owner.Age); } |
Див. також
- Діаграма класів
- Об'єктно-орієнтоване програмування
- Метод (програмування)
- Об'єкт (програмування)
- Змінна типу
Це незавершена стаття про мови програмування. Ви можете проєкту, виправивши або дописавши її. |
Ця стаття має кілька недоліків. Будь ласка, допоможіть удосконалити її або обговоріть ці проблеми на .
|
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno lyutij 2020 V ob yektno oriyentovanomu programuvanni klas ce specialna konstrukciya yaka vikoristovuyetsya dlya grupuvannya pov yazanih zminnih ta funkcij Pri comu zgidno z terminologiyeyu OOP globalni zminni klasu chleni zminni nazivayutsya polyami danih takozh vlastivostyami abo atributami a chleni funkciyi nazivayut metodami klasu Stvorenij ta inicializovanij ekzemplyar klasu nazivayut ob yektom klasu Na osnovi odnogo klasu mozhna stvoriti bezlich ob yektiv sho vidriznyatimutsya odin vid odnogo svoyim stanom znachennyami poliv Poznachennya uspadkuvannya klasiv na UML diagrami V Unified Modeling Language klasi zobrazhuyutsya za dopomogoyu diagrami klasiv Klasi ta ekzemplyari klasivKlas mozhna porivnyuvati z formoyu dlya vipichki pechiva forma odna a pechiva mozhna vipekti bezlich Pechivo ce konkretni ob yekti ekzemplyari klasu pechivo yake mozhe buti z riznoyu nachinkoyu Polya dozvolyayut vmistiti dani pro pevnij realnij ob yekt a metodi zdijsnyuvati obrobku cih danih Napriklad mozhna stvoriti zagalnij klas Lyudina z polyami Im ya ta Prizvishe rik narodzhennya profesiya zarplata Pri stvorenni zh na osnovi klasu konkretnogo ekzemplyaru dani polya zapovnyuyutsya konkretnimi danimi pro pevnu lyudinu Obrobkoyu cih danih mozhut zajmatisya vidpovidni metodi Napriklad mozhna stvoriti metod dlya obchislennya viku lyudini tosho Na osnovi klasiv mozhna stvoryuvati pidklasi yaki uspadkovuyut vlastivosti ta povedinku batkivskih klasiv Takim chinom mozhna stvoriti cilu iyerarhiyu klasiv Rizni movi desho po riznomu realizovuyut mehanizm uspadkuvannya Isnuye mnozhinne ta odinarne uspadkuvannya Mnozhinne ce koli pidklas stvoryuyetsya na osnovi kilkoh bezposerednih batkiv yak to v movi programuvannya C Odinarne uspadkuvannya ce koli klas mozhe mati odnogo bezposerednogo batka mova programuvannya Java Nadklasi mozhut mati svoyi nadklasi pidklasi mozhut takozh buti nadklasami dlya pevnih klasiv Metodi klasivCherez metodi realizuyetsya povedinka ob yektiv Praktichno vsya robota z ob yektami vidbuvayetsya cherez metodi Voni mozhut zminyuvati stan ob yekta abo zh prosto nadavati dostup do danih yaki buli inkapsulovani v ob yekti Isnuye kilka vidiv metodiv yaki mayut deyaki vidminnosti v riznih movah programuvannya Do metodiv ta poliv danih mozhna nadavati rizni prava dostupu vid yakih zalezhatime dostup do nih z riznih chastin programnogo kodu Prava dostupu ta vid metodiv zadayutsya modifikatorami pri opisi metodiv Metod yakij provodit stvorennya ta pochatkovu inicializaciyu ekzemplyara klasu nazivayut konstruktorom klasu Metod yakij provodit znishennya ob yekta nazivayut destruktorom klasu Interfejs ta realizaciya spadkuvannya realizaciyiU programuvanni isnuye ponyattya programnogo interfejsu sho oznachaye perelik mozhlivih obchislen yaki mozhe vikonati ta chi insha chastina programi vklyuchayuchi opis togo yaki argumenti i v yakomu poryadku potribno peredavati na vhid algoritmam z cogo pereliku a takozh sho i v yakomu viglyadi voni budut povertati Abstraktnij tip danih interfejs pridumanij dlya formalizovanogo opisu takogo pereliku Sami algoritmi tobto dijsnij programnij kod yakij bude vikonuvati vsi ci obchislennya interfejsom ne zadayetsya programuyetsya okremo ta nazivayetsya realizaciyeyu interfejsu Programni interfejsi a takozh klasi mozhut rozshiryuvatisya shlyahom spadkuvannya yake ye odnim z vazhlivih zasobiv povtornogo vikoristannya gotovogo kodu v OOP Uspadkovanij klas abo interfejs bude mistiti v sobi vse sho zaznacheno dlya vsih jogo batkivskih klasiv v zalezhnosti vid movi programuvannya ta platformi yih mozhe buti vid nulya do neskinchennosti Napriklad mozhna stvoriti svij variant tekstovogo ryadka shlyahom uspadkuvannya klasu mij ryadok tekstu vid vzhe isnuyuchogo klasu ryadok tekstu pri comu peredbachayetsya sho programistu ne dovedetsya zanovo perepisuvati algoritmi poshuku ta inshe oskilki voni avtomatichno budut uspadkovani vid gotovogo klasu i bud yakij ekzemplyar klasu mij ryadok tekstu mozhe buti peredanij ne lishe v gotovi metodi batkivskogo klasu ryadok tekstu dlya provedennya potribnih obchislen a j vzagali v bud yakij algoritm zdatnij pracyuvati z ob yektami tipu ryadok tekstu oskilki ekzemplyari oboh klasiv sumisni po programnim interfejsam Klas dozvolyaye zadati ne lishe programnij interfejs do samogo sebe i do svoyih ekzemplyariv ale i v yavnomu viglyadi napisati kod vidpovidalnij za obchislennya Yaksho pri stvorenni svogo novogo tipu danih uspadkovuvati interfejs to mi otrimayemo mozhlivist peredavati primirnik svogo tipu danih v bud yakij algoritm yakij vmiye pracyuvati z cim interfejsom Odnak nam dovedetsya samim napisati realizaciyu interfejsu tobto ti algoritmi yakimi bude koristuvatisya cikavij nam algoritm dlya provedennya obchislen z vikoristannyam nashogo ekzemplyara Vodnochas pri nasliduvanni klasu avtomatichno uspadkovuyetsya gotovij kod pid interfejs ce ne zavzhdi tak batkivskij klas mozhe vimagati realizaciyi yakihos algoritmiv v dochirnomu klasi v obov yazkovomu poryadku V takij mozhlivosti uspadkovuvati gotovij kod i proyavlyayetsya te sho v ob yektno oriyentovanoyi programi tip danih klas viznachaye odnochasno yak interfejs tak i realizaciyu dlya vsih svoyih ekzemplyariv Stan ob yekta ponyattya oblastej dostupu konstruktoriOdniyeyu z problem strukturnogo programuvannya z yakoyu boretsya OOP ye problema pidtrimki pravilnogo znachennya zminnih programi Chasto rizni zminni programi zberigayut logichno pov yazani znachennya i za pidtrimannya ciyeyi logichnoyi zv yaznosti nese vidpovidalnist programist tobto avtomatichno zv yaznist ne pidtrimuyetsya Prikladom mozhe sluguvati para praporciv zvilnenij ta ochikuye premiyi za pidsumkami roku koli za pravilami viddilu kadriv lyudina mozhe buti vodnochas ne zvilnenoyu i ne ochikuvati premiyu abo ne zvilnenoyu ta ochikuvati premiyu abo zvilnenoyu i ne ochikuvati premiyu ale ne mozhe buti odnochasno zvilnenoyu i ochikuvati premiyu Tobto bud yaka chastina programi yaka prostavlyaye praporec zvilnenij zavzhdi povinna znimati praporec chekaye premiyi za pidsumkami roku Horoshij sposib virishiti cyu problemu ogolositi praporec zvilnenij nedostupnim do zmini dlya vsih dilyanok programi krim odnogo specialno obumovlenogo U cij specialno obumovlenij dilyanci vse bude napisano odin raz i pravilno a vsi inshi povinni budut zvertatisya do ciyeyi dilyanki zavzhdi koli voni hochut vstanoviti abo znyati praporec zvilnenij V ob yektno oriyentovanij programi praporec zvilnenij bude ogolosheno privatnim chlenom deyakogo klasu a dlya jogo chitannya ta zmini budut napisani vidpovidni publichni metodi Pravila sho viznachayut mozhlivist abo nemozhlivist bezposeredno zminyuvati bud yaki zminni nazivayutsya pravilami zavdannya oblastej dostupu Slova privatnij ta publichnij v comu vipadku ye tak zvanimi modifikatorami dostupu Voni nazivayutsya modifikatorami tomu sho v deyakih movah voni vikoristovuyutsya dlya zmini ranishe vstanovlenih prav pri spadkuvanni klasu Spilno klasi ta modifikatori dostupu zadayut oblast dostupu tobto u kozhnoyi dilyanki kodu zalezhno vid togo do yakogo klasu vona nalezhit bude svoya oblast dostupu shodo tih chi inshih elementiv chleniv svogo klasu ta inshih klasiv vklyuchayuchi zminni metodi funkciyi konstanti tosho Isnuye osnovne pravilo nisho v odnomu klasi ne mozhe bachiti privatnih elementiv inshogo klasu Shodo inshih bilsh skladnih pravil u riznih movah isnuyut inshi modifikatori dostupu ta pravila yih vzayemodiyi z klasami Majzhe kozhnomu chlenu klasa mozhna vstanoviti modifikator dostupu za vinyatkom statichnih konstruktoriv ta deyakih inshih rechej U bilshosti ob yektno oriyentovanih mov programuvannya pidtrimuyutsya taki modifikatori dostupu private zakritij vnutrishnij chlen klasu zvernennya do chlenu dopuskayutsya lishe z metodiv togo klasu u yakomu cej chlen viznachenij Bud yaki spadkoyemci klasu vzhe ne zmozhut otrimati dostup do cogo chlenu Spadkuvannya za tipom private zaboronyaye dostup z dochirnogo klasu do vsih chleniv batkivskogo klasu vklyuchayuchi navit public chleni S protected zahishenij vnutrishnij chlen iyerarhiyi klasiv zvernennya do chlena dopuskayutsya z metodiv togo klasu u yakomu cej chlen viznachenij a takozh z bud yakih metodiv jogo klasiv spadkoyemciv Spadkuvannya za tipom protected robit vsi public chleni batkivskogo klasu protected chlenami klasu spadkoyemcya S public vidkritij chlen klasu zvernennya do chlena dopuskayutsya z bud yakogo kodu Spadkuvannya za tipom public ne minyaye modifikatoriv batkivskogo klasu S Problema pidtrimki pravilnogo stanu zminnih aktualna i dlya vihidnogo momentu vistavlennya pochatkovih znachen Dlya cogo v klasah peredbacheni specialni metodi funkciyi zvani konstruktorami Zhoden ob yekt ekzemplyar klasu ne mozhe buti stvorenij inakshe yak shlyahom vikliku na vikonannya kod konstruktora yakij poverne stvorenij ta pravilno zapovnenij primirnik klasu U bagatoh movah programuvannya tip danih struktura yak i klas mozhe mistiti zminni ta metodi ale ekzemplyari struktur zalishayuchis prosto rozmichenimi dilyankami operativnoyi pam yati mozhut stvoryuvatisya v obhid konstruktoram sho zaboroneno dlya primirnikiv klasiv za vinyatkom specialnih vinyatkovih metodiv obhodu vsih podibnih pravil OOP peredbachenih v deyakih movah ta platformah U comu viyavlyayetsya vidminnist klasiv vid inshih tipiv danih viklik konstruktora obov yazkovij Praktichnij pidhidU suchasnih ob yektno oriyentovanih movah programuvannya v tomu chisli v php Java C Oberon Python Ruby Smalltalk Object Pascal stvorennya klasu zvoditsya do napisannya deyakoyi strukturi sho mistit nabir poliv ta metodiv sered ostannih osoblivu rol grayut konstruktori destruktori finalizatori Praktichno klas mozhe rozumitisya yak yakijs shablon za yakim stvoryuyutsya ob yekti ekzemplyari cogo klasu Usi primirniki odnogo klasu stvoreni za odnim shablonom tomu mayut odin i toj zhe nabir poliv ta metodiv Prikladi stvorennya klasiv na riznih movah programuvannyaKlasi v movi Object Pascal Delphi Na movi Delphi klas opisuyetsya takim chinom TMyClass class TObject private Opisani v cij sekciyi elementi ne dostupni zzovni za mezhami klasu ale dostupni v mezhah modulya Tut zazvichaj znahodyatsya polya klasu protected Opisani v cij sekciyi elementi dostupni lishe klasu i vsim jogo nashadkam public Opisani v cij sekciyi elementi dostupni vsim published Opisani v cij sekciyi elementi dostupni vsim i vidobrazhayutsya v Object Inspector e end TMyClass im ya klasu class klyuchove slovo sho pochinaye viznachennya klasu v starih versiyah takozh bulo klyuchove slovo object TObject klas predok yaksho ye spadkuvannya private protected public published klyuchovi slova sho viznachayut iyerarhichnij dostup do poliv ta metodiv u viglyadi poznachennya sekcij oblastej vidimosti Stvoryuyetsya ekzemplyar ob yekt klasu tak MyClass TMyClass Create Znishuyetsya tak FreeAndNil MyClass abo tak MyClass Free Klasi v movi JavaViznachennya klasu na movi Java za dopomogoyu operatora class class MyClass String name Example Konstruktor public MyClass String name this name name Metod public String getName return name Stvorennya ekzemplyara klasu MyClass my new MyClass Example 2 Znishennya ekzemplyara klasu vidbuvayetsya za dopomogoyu zbiracha smittya avtomatichno Klasi v movi C Klas u movi C stvoryuyetsya takim chinom class MyClass public ParentClass ParentClass klas predok yaksho takij ye public elementi v cij sekciyi dostupni z bud yakoyi chastini programi MyClass konstruktor MyClass destruktor protected elementi v cij sekciyi dostupni z klasu i jogo nashadkiv private elementi v cij sekciyi dostupni lishe z klasu ce oblast dostupu za umovchannyam Pislya svogo stvorennya klas vvazhayetsya povnocinnim tipom danih i otzhe ekzemplyari klasu stvoryuyutsya takim chinom MyClass myinstance Zvernennya do chleniv klasu myinstance classmember Znishuyetsya ekzemplyar klasu yak i bud yaka zminna lishe u vipadku yaksho funkciya v yakij vin buv stvorenij zavershila robotu abo yaksho bula primusovo zvilnena dinamichna pam yat vidilena pid klas Klasi v movi C Klasi v movi C viznachayutsya takim chinom public class MyClass Chlen dostupnij bud yakomu klasu programi public int k Chlen dostupnij bud yakomu klasu v tomu zh moduli programi internal int l Chlen dostupnij bud yakomu klasu v tomu zh moduli programi abo lishe potochnim klasu i vsim jogo pidklasam v inshomu moduli protected internal int m Chlen dostupnij lishe potochnim klasu i vsim jogo pidklasam protected int n Chlen dostupnij lishe z potochnogo klasu za zamovchuvannyam private int p Na vidminu vid C modifikatori dostupu povinni vkazuvatisya dlya kozhnogo chlena okremo Anonimni klasi mozhna viznachiti v metodi napriklad tak public void DoSomething var person new Name Margarita Age 15 var pet new Name Dunya Type Cherepaha Owner person Console WriteLine Age of pet owner pet Owner Age Div takozhDiagrama klasiv Ob yektno oriyentovane programuvannya Metod programuvannya Ob yekt programuvannya Zminna tipu Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Cya stattya maye kilka nedolikiv Bud laska dopomozhit udoskonaliti yiyi abo obgovorit ci problemi na storinci obgovorennya Cya stattya mistit tekst sho ne vidpovidaye enciklopedichnomu stilyu Bud laska dopomozhit udoskonaliti cyu stattyu pogodivshi stil vikladu zi stilistichnimi pravilami Vikipediyi Mozhlivo storinka obgovorennya mistit zauvazhennya shodo potribnih zmin sichen 2018 Cyu stattyu treba vikifikuvati dlya vidpovidnosti standartam yakosti Vikipediyi Bud laska dopomozhit dodavannyam dorechnih vnutrishnih posilan abo vdoskonalennyam rozmitki statti sichen 2018 Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno sichen 2018