Інкапсуляція — один з трьох основних механізмів об'єктно-орієнтованого програмування. Йдеться про те, що об’єкт вміщує не тільки дані, але і правила їх обробки, оформлені в вигляді виконуваних фрагментів (методів). А також про те, що доступ до стану об'єкта напряму заборонено, і ззовні з ним можна взаємодіяти виключно через заданий інтерфейс (відкриті поля та методи), що дозволяє знизити зв'язність. Таким чином контролюються звернення до полів класів та їхня правильна ініціалізація, усуваються можливі помилки пов'язані з неправильним викликом методу. Оскільки користувачі працюють лише через відкриті елементи класів, то розробники класу можуть як завгодно змінювати всі закриті елементи і, навіть, перейменовувати та видаляти їх, не турбуючись, що десь хтось їх використовує у своїх програмах.
Приклади
На Java:
class Point { //можливий доступ лише з методів даного класу private int x, y; //можливий доступ лише з методів даного класу private boolean visibility; void createPoint(int a, int b) { x = a; y = b; visibility = true; } void setVisibility(boolean visibility) { this.visibility = visibility; } int getX() { return x; } int getY() { return y; } }
На :
class Point { //можливий доступ лише з методів даного класу int x, y; bool visibility; public: void createPoint(int a, int b) { x = a; y = b; visibility = true; } void setVisibility(bool visibility) { this->visibility = visibility; } int getX() { return x; } int getY() { return y; } };
У цьому прикладі клас Point інкапсулює (приховує) координати точки. Доступ до них можливий лише за певними правилами, які реалізовуються через відповідні методи. Такими правилами можуть бути, наприклад, операція створення точки (установка значень координат), а також операції «увімкнення» і «вимкнення» видимості точки, отримання координат.
Як видно з прикладу, для створення точки необхідно вказати координати точки і «увімкнути» дану точку (зробити її видимою). Якщо б клас був повністю відкритий, то можна б було вручну встановити відповідні поля класу х, y та встановити visible в true. Проте програміст може легко забути встановити якусь з координат або забути встановити видимість. Метод createPoint
забезпечує виконання усіх необхідних дій, а закриття доступу до координат змушує діяти лише через використання даного методу. Інкапсульованими також можуть бути і методи класу.
Інші особливості
В ООП рекомендується з самого початку створювати закриті поля і лише в разі крайньої необхідності надавати ширший доступ до них. Для роботи із закритими полями класів краще використовувати відповідний метод доступу (getter) та метод-мутатор (setter).
При збільшенні розмірів програм і комп'ютерних систем із використанням принципів ООП стає більш ясним їх огляд (у тому числі, тестування ПЗ і налагодження), написання документації щодо їх використання.
Див. також
Література
- Гради Буч, Роберт А. Максимчук, Майкл У. Энгл, Бобби Дж. Янг, Джим Коналлен, Келли А. Хьюстон. Объектно-ориентированный анализ и проектирование с примерами приложений. — 3. — М. : Вильямс, 2008. — С. 81–85.(рос.)
- Пышкин Е. В. Основные концепции и механизмы объектно-ориентированного программирования. — СПб. : БХВ-Петербург, 2005. — С. 30–35.(рос.)
Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Inkapsulyaciya odin z troh osnovnih mehanizmiv ob yektno oriyentovanogo programuvannya Jdetsya pro te sho ob yekt vmishuye ne tilki dani ale i pravila yih obrobki oformleni v viglyadi vikonuvanih fragmentiv metodiv A takozh pro te sho dostup do stanu ob yekta napryamu zaboroneno i zzovni z nim mozhna vzayemodiyati viklyuchno cherez zadanij interfejs vidkriti polya ta metodi sho dozvolyaye zniziti zv yaznist Takim chinom kontrolyuyutsya zvernennya do poliv klasiv ta yihnya pravilna inicializaciya usuvayutsya mozhlivi pomilki pov yazani z nepravilnim viklikom metodu Oskilki koristuvachi pracyuyut lishe cherez vidkriti elementi klasiv to rozrobniki klasu mozhut yak zavgodno zminyuvati vsi zakriti elementi i navit perejmenovuvati ta vidalyati yih ne turbuyuchis sho des htos yih vikoristovuye u svoyih programah PrikladiNa Java class Point mozhlivij dostup lishe z metodiv danogo klasu private int x y mozhlivij dostup lishe z metodiv danogo klasu private boolean visibility void createPoint int a int b x a y b visibility true void setVisibility boolean visibility this visibility visibility int getX return x int getY return y Na S class Point mozhlivij dostup lishe z metodiv danogo klasu int x y bool visibility public void createPoint int a int b x a y b visibility true void setVisibility bool visibility this gt visibility visibility int getX return x int getY return y U comu prikladi klas Point inkapsulyuye prihovuye koordinati tochki Dostup do nih mozhlivij lishe za pevnimi pravilami yaki realizovuyutsya cherez vidpovidni metodi Takimi pravilami mozhut buti napriklad operaciya stvorennya tochki ustanovka znachen koordinat a takozh operaciyi uvimknennya i vimknennya vidimosti tochki otrimannya koordinat Yak vidno z prikladu dlya stvorennya tochki neobhidno vkazati koordinati tochki i uvimknuti danu tochku zrobiti yiyi vidimoyu Yaksho b klas buv povnistyu vidkritij to mozhna b bulo vruchnu vstanoviti vidpovidni polya klasu h y ta vstanoviti visible v true Prote programist mozhe legko zabuti vstanoviti yakus z koordinat abo zabuti vstanoviti vidimist Metod createPoint zabezpechuye vikonannya usih neobhidnih dij a zakrittya dostupu do koordinat zmushuye diyati lishe cherez vikoristannya danogo metodu Inkapsulovanimi takozh mozhut buti i metodi klasu Inshi osoblivostiV OOP rekomenduyetsya z samogo pochatku stvoryuvati zakriti polya i lishe v razi krajnoyi neobhidnosti nadavati shirshij dostup do nih Dlya roboti iz zakritimi polyami klasiv krashe vikoristovuvati vidpovidnij metod dostupu getter ta metod mutator setter Pri zbilshenni rozmiriv program i komp yuternih sistem iz vikoristannyam principiv OOP staye bilsh yasnim yih oglyad u tomu chisli testuvannya PZ i nalagodzhennya napisannya dokumentaciyi shodo yih vikoristannya Div takozhOb yektno oriyentovane programuvannya Polimorfizm programuvannya Uspadkuvannya programuvannya LiteraturaGradi Buch Robert A Maksimchuk Majkl U Engl Bobbi Dzh Yang Dzhim Konallen Kelli A Hyuston Obektno orientirovannyj analiz i proektirovanie s primerami prilozhenij 3 M Vilyams 2008 S 81 85 ros Pyshkin E V Osnovnye koncepcii i mehanizmy obektno orientirovannogo programmirovaniya SPb BHV Peterburg 2005 S 30 35 ros Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi