Инкапсуляция (в объектно-ориентированном программировании) | это... Что такое Инкапсуляция (в объектно-ориентированном программировании)? (original) (raw)
Инкапсуляция (в объектно-ориентированном программировании)
Инкапсуляция (в объектно-ориентированном программировании)
Инкапсуля́ция — свойство языка программирования, позволяющее объединить данные и код в объект и скрыть реализацию объекта от пользователя. При этом пользователю предоставляется только спецификация (интерфейс) объекта. Пользователь может взаимодействовать с объектом только через этот интерфейс.
Инкапсуляция — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, полиморфизмом и наследованием).
Предостережение: Одна из наиболее распространенных ошибок — делать сокрытие реализации только ради сокрытия. Целями, достойными усилий, являются:
- предельная локализация изменений при необходимости таких изменений,
- прогнозируемость изменений (какие изменения в коде надо сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.
Образ в пример: ложка опущенная в стакан, не меняет его свойств и не становится частью стакана, хотя и помогает пить из него чай; в то же время, сахар, растворенный в чае с помощью ложки, делает его сладким.
Часто инкапсуляция может быть достигнута простейшими организационными мерами: знание того, что «вот так-то делать нельзя» иногда является самым эффективным средством инкапсуляции!
Содержание
Примеры
C++
class A { private: int a,b;//скрытые свойства void Do_Something(void);//скрытый метод. public: int Return_Something(void); //открытый интерфейс };
Класс А инкапсулирует свойства a, b и метод Do_Something, представляя внешний интерфейс Return_Something.
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;
Для создания интерфейса доступа к скрытым полям в свойства.
См. также
Wikimedia Foundation.2010.