Енкапсулация (програмиране): Разлика между версии

Изтрито е съдържание Добавено е съдържание
мРедакция без резюме
махам твърдения без източник
Ред 10:
== Механизъм за скриване на информацията ==
Енкапсулацията може да се използва за да скрива полета и методи на даден клас. Според тази дефиниция, енкапсулиране означава, че вътрешното представяне на [[Обект (програмиране)|обект]] , не може да се види извън дадения обект. Като правило, само собствените методи на даден обект могат директно да виждат или променят поле. Някои езици, като [[smalltalk]] и [[Ruby|Руби]] позволяват достъп само чрез методите на обекта, но повечето от останалите езици (например, [[C++|С++]], [[C Sharp|С#]], [[Delphi (език за програмиране)|Делфи]] или [[Java]]) предлагат на програмиста степента на контрол над това, което е скрито, обикновено чрез ключови думи, както <code>public</code> , така и <code>private</code>. трябва да се отбележи, че ISO стандарт в C++ се отнася до <code>protected</code>, <font color="#000000" face="monospace, Courier">private </font>и <code>public</code> , като „[[модификатори за достъп]]“, и че те не се „крият информация“. Скриването на информация се осъществява чрез предоставяне на крайната версия на изходния код, който се свързва чрез header([[Заглавен файл|загла]]<nowiki/>вен файл).
 
Криейки вътрешните данни, обекта защитава своята цялост, чрез предотвратяване на потребителите от променяне на вътрешните данни на обкета на неправилни или на противоречиви състояния. Предполагаемо предимство на енкапсулирането е, че това може да намали сложността на системата, и следователно, да се подобри [[Надеждност на софтуера|надеждността]], като същевременно позволява на разработчика да ограничи взаимозависимостите между софтуерните компоненти{{Източник}}.
 
Почти винаги има начин да се заобиколи тази защита &#x2013; обикновено чрез рефлекшън (отражение) в API ([[Ruby]], [[Java]], [[C Sharp|C#]] и т.н.), понякога чрез механизъм, като изопачаване на името (name mangling) ([[python]]), или специални запазени думи като на <code>friend</code> в C++.