Другие языки программирования и технологии
ИНКАПСУЛЯЦИЯ своими словами? код програмы который зашифровали от всех? как она выглядит в коде программы?
Попробую вам ответить так как я это понимаю. Я достаточно давно закончил универ и не теоретик, а практический программист. Инкапсуляция, это не средство, скрыть от пользователя код, а средство создать ОБЪЕКТ в таких языках как С++, т. е. создать программный модуль, по принципу "черного ящика"- известно что подается на его вход и известен результат на выходе. Пользователь не имеет доступа в объект и не может повлиять на его работу. Программный код ОБЪЕКТА, в принципе доступен для прочтения...
Говорят, что тип данных инкапсулирован, если экземпляры этого типа не имеют видимых пользователям компонентов.
Объект состоит из некоторой частной памяти и набора операций ...Публичные свойства объекта являются спецификациями операций, составляющими его интерфейс.. . Частные свойства объекта - это набор компонентов, составляющих его частную память.
Если должным образом различать тип и представление, и если добиться скрытости представления, то можно изменять представление без потребности изменять прикладные программы. Нужно всего лишь изменить код, реализующий операции.
Инкапсуляция вступает в некоторый конфликт с потребностью выполнять непредвиденные запросы. Инкапсуляция означает, что доступ к данным может быть произведен только через заранее определенные операции, а смысл непредвиденных запросов, почти по определению, состоит в том, что требуется доступ, способ которого невозможно предопределить. Например, пусть имеется тип данных 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 различие между типами и представлениями часто не является четким.
Объект состоит из некоторой частной памяти и набора операций ...Публичные свойства объекта являются спецификациями операций, составляющими его интерфейс.. . Частные свойства объекта - это набор компонентов, составляющих его частную память.
Если должным образом различать тип и представление, и если добиться скрытости представления, то можно изменять представление без потребности изменять прикладные программы. Нужно всего лишь изменить код, реализующий операции.
Инкапсуляция вступает в некоторый конфликт с потребностью выполнять непредвиденные запросы. Инкапсуляция означает, что доступ к данным может быть произведен только через заранее определенные операции, а смысл непредвиденных запросов, почти по определению, состоит в том, что требуется доступ, способ которого невозможно предопределить. Например, пусть имеется тип данных 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 различие между типами и представлениями часто не является четким.
какой код? какой язык? код КОМПИЛИРУЕТСЯ, так что никакой пользователь, даже продвинутый, не сможет его посмотреть.
Похожие вопросы
- Помогите исправить ошибку в коде программы на паскале.
- Как на паскале написать код программы,которая при вводе числа,выводит его словами?
- Как в C# вызвать событие из кода программы?
- помогите переделать код программы с++
- помогите переделать код программы с++ пожалуйста
- помогите, кому не трудно, перевести с языка Pascal на язык СИ код программы
- Помогите исправить ошибку в коде программы, пожалуйста!
- помогите пожалуйста с кодами программ в паскале
- Ищу идею на разработку /в качестве повышения своего уровня кода/
- Помогите пожалуйста исправить код программы на visual c++!!