Инкапсуляция (программирование)
Инкапсуля́ция — свойство языка программирования, позволяющее объединить и защитить данные и код в объект и скрыть реализацию объекта от пользователя (прикладного программиста). При этом пользователю предоставляется только спецификация (интерфейс) объекта.
- Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью директив: public, private, protected.
- Пользователь не может влиять на работу объекта, кроме как через интерфейс. Реализутеся с помощью использования закрытых данных и методов, значения которых берутся из открытого интерфейса при создании объекта.
Инкапсуляция — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, полиморфизмом и наследованием).
Предостережение: Одна из наиболее распространенных ошибок — делать сокрытие реализации только ради сокрытия. Целями, достойными усилий, являются:
- предельная локализация изменений при необходимости таких изменений,
- прогнозируемость изменений (какие изменения в коде надо сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.
Образ в пример: ложка, опущенная в стакан, не меняет его свойств и не становится частью стакана, хотя и помогает пить из него чай; в то же время, сахар, растворенный в чае с помощью ложки, делает его сладким.
Часто инкапсуляция может быть достигнута простейшими организационными мерами: знание того, что «вот так-то делать нельзя» иногда является самым эффективным средством инкапсуляции!
Примеры
C++
class A
{
public:
int a, b; //открытый интерфейс
int ReturnSomething(); //открытый интерфейс
private:
int Aa = a, Ab = b; //безопасное использование открытого интерфейса
void DoSomething(); //скрытый метод.
};
Класс А инкапсулирует свойства Aa, Ab и метод DoSomething, представляя внешний интерфейс ReturnSomething, a, b.
C#
public class A
{
public int a; // открытый интерфейс
public int b; // открытый интерфейс
public int ReturnSomething(); // открытый интерфейс
private int Aa = a; //безопасное использование открытого интерфейса
private int Ab = b; //безопасное использование открытого интерфейса
private void DoSomething(); // скрытый метод.
};
Delphi
В Delphi для создания скрытых полей или методов их достаточно объявить в секции private
.
TMyClass = class
private
FMyField: Integer;
procedure SetMyField(const Value: Integer);
function GetMyField: Integer;
protected
public
property MyField: Integer read GetMyField write SetMyField;
end;
Для создания интерфейса доступа к скрытым полям в Delphi введены свойства.
PHP5
class A
{
private $a; // скрытое свойство
private $b; // скрытое свойство
private function DoSomething() //скрытый метод
{
//actions
}
public function ReturnSomething() //открытый интерфейс
{
//actions
}
};
В этом примере закрыты свойства $a и $b для класса A с целью предотвращения повреждения этих свойств другим кодом которому необходимо предоставить только права на чтение.
См. также
bs:Zatvorenost de:Datenkapselung (Programmierung) en:Encapsulation_(computer_science) fr:Encapsulation (programmation) it:Incapsulamento (informatica) ja:カプセル化 lt:Inkapsuliacija nl:Inkapseling pl:Enkapsulacja pt:Encapsulamento sv:Inkapsling (Information Hiding) uk:Інкапсуляція
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....