Другие языки программирования и технологии

ИНКАПСУЛЯЦИЯ своими словами? код програмы который зашифровали от всех? как она выглядит в коде программы?

Suhrap Tayyrov
Suhrap Tayyrov
40
Попробую вам ответить так как я это понимаю. Я достаточно давно закончил универ и не теоретик, а практический программист. Инкапсуляция, это не средство, скрыть от пользователя код, а средство создать ОБЪЕКТ в таких языках как С++, т. е. создать программный модуль, по принципу "черного ящика"- известно что подается на его вход и известен результат на выходе. Пользователь не имеет доступа в объект и не может повлиять на его работу. Программный код ОБЪЕКТА, в принципе доступен для прочтения...
ВС
Володя Сычев
74 204
Лучший ответ
Говорят, что тип данных инкапсулирован, если экземпляры этого типа не имеют видимых пользователям компонентов.
Объект состоит из некоторой частной памяти и набора операций ...Публичные свойства объекта являются спецификациями операций, составляющими его интерфейс.. . Частные свойства объекта - это набор компонентов, составляющих его частную память.
Если должным образом различать тип и представление, и если добиться скрытости представления, то можно изменять представление без потребности изменять прикладные программы. Нужно всего лишь изменить код, реализующий операции.
Инкапсуляция вступает в некоторый конфликт с потребностью выполнять непредвиденные запросы. Инкапсуляция означает, что доступ к данным может быть произведен только через заранее определенные операции, а смысл непредвиденных запросов, почти по определению, состоит в том, что требуется доступ, способ которого невозможно предопределить. Например, пусть имеется тип данных POINT; предположим, что также имеется (предопределенная) операция для "взятия" (чтения или выборки) X-координаты заданной точки, но нет подобной операции для соответствующей Y-координаты. Тогда невозможно выполнить даже следующие простые запросы и множество подобных:

Получить Y-координату точки P
Выбрать все точки по оси X
Выбрать все точки со значением ординаты меньшим пяти.

Для типа POINT, например, можно было бы определить операции THE_X и THE_Y, что позволило бы производить следующие действия:

Q := THE_Y (P) ;
/* получить Y-координату точки P и присвоить ее Q */
Z := SQRT ( THE_X (P) ** 2 + THE_Y (P) ** 2 ) ;
/* получить расстояние до точки P от точки (0,0) и присвоить его Z */

Таким образом, THE_X и THE_Y действительно раскрывают возможное представление - а именно, декартовы координаты X и Y - и обеспечивают возможность выполнять непредвиденные запросы с точками. Однако это не означает того, что внутри системы точки действительно представлены декартовыми координатами; это значит лишь то, что декартовы координаты являются возможным представлением. В реальном представлении могут использоваться декартовы координаты, полярные координаты R и U или что-нибудь совсем другое. Другими словами, THE_операции не нарушают инкапсуляцию и не подрывают независимость данных. Заметим, кстати, что типы данных DATE и TIME языка SQL представляют пример встроенных типов с раскрытием некоторых возможных представлений. Например, для дат раскрывается возможное представление с компонентами YEAR, MONTH и DAY. Хотя, вероятно, следует добавить, что эти "возможные" представления в SQL, к сожалению, близки к реальным представлениям; в SQL различие между типами и представлениями часто не является четким.
Алексей Башков
Алексей Башков
95 568
какой код? какой язык? код КОМПИЛИРУЕТСЯ, так что никакой пользователь, даже продвинутый, не сможет его посмотреть.