Можно ли добиться инкапсуляции в процессе 4GL?

Я новичок в концепциях ОО. Я нашел несколько мест,

Инкапсуляция — это скрытие объектов от клиентов и вызов их с помощью методов.

MSDN говорит,

Инкапсуляция означает, что группа связанных свойств, методов и других членов рассматривается как единый модуль или объект.

Я предполагаю, что первое выражение объясняет использование инкапсуляции, а второе определяет инкапсуляцию. Даже этот вопрос поднимался до того, как он был более специфичен для Java, и я бы предпочел увидеть пример использования этой концепции, когда речь идет о Progess 4GL. Недавно я узнал об объектно-ориентированных возможностях Progress 4GL, и ниже приведен пример класса, о котором я узнал.

CLASS [<package>.]<class-name>
     [INHERITS <super-type-name> ] 
   [IMPLEMENTS <interface-type-name>
             [,<interface-type-name>]…] 
   [ FINAL ]:

    [ <data member> …]
    [ <constructor> ]
    [ <method> … ]
    [ <destructor> ]

END [ CLASS ]. 

Примеры, связанные с Progress 4GL, будут высоко оценены, и уже есть несколько хороших ответов, которые объясняют инкапсуляцию в целом.


person Ravinath    schedule 21.05.2014    source источник
comment
Можете ли вы показать нам какой-нибудь код, чтобы воспроизвести проблему?   -  person gunr2171    schedule 21.05.2014
comment
проверьте эту статью: en.wikipedia.org/wiki/   -  person w.b    schedule 21.05.2014
comment
Прочтите историческую важность инкапсуляции в Википедии, если вы понимаете происхождение концепции, ее будет легче понять. en.wikipedia.org/wiki/   -  person flindeberg    schedule 21.05.2014
comment
Я хотел бы увидеть пример, относящийся к Progress 4GL, и он больше не дублируется, и было бы здорово, если бы вы могли удалить повторяющийся флаг @crashmstr & buttiful buttefly, Servy, abatishchev, nvoigt   -  person Ravinath    schedule 30.05.2015


Ответы (2)


Инкапсуляция — это скрытие объектов от клиентов и вызов их через методы.

Это не совсем полное определение инкапсуляции. Это всего лишь один из способов его применения. Определение MSDN является более полным, хотя я думаю, что оно должно добавить данные и операции с данными инкапсулируются в программные конструкции, такие как class и пространство имен.

Я думаю, вы не поняли, потому что первое определение может быть получено из второго, более полного. Инкапсуляция означает упаковку данных, свойств, операций методов с данными и т. д., так что внутренности данных скрыты от клиента, поэтому клиент работает с данными только через открытый интерфейс (эта часть - это то, что говорится в первом определении). ).

person Rakib    schedule 21.05.2014

Определение MSDN является более подходящим. Первое ближе к определению абстракции.

Тем не менее, эти термины, очевидно, связаны, поскольку идеи легче абстрагировать, когда они инкапсулированы.

person John C    schedule 21.05.2014
comment
Абстракция ИМО - это не совсем так. Это скорее концепция удаления определенного элемента и сохранения только полезных/общих свойств объекта. Абстрагирование объекта не означает его скрытие. (спорно) - person Samy Arous; 21.05.2014
comment
Как я уже сказал, ближе. Абстракция — это идея, но то, что описано, — это одна из реализаций (среди многих обычно лучших) этой идеи. - person John C; 21.05.2014