Что такое антоним инкапсуляции?

С помощью онлайн словарь инструменты не помогает. Я думаю, что способ инкапсуляции используется в информатике не совсем соответствует его значению на простом английском языке.

что такое антоним версии encaspulate в компьютерной науке? Более конкретно, что такое антоним для инкапсуляции, который будет работать как имя функции.


почему я должен заботиться? Вот моя мотивация:

// A class with a private member variable;
class Private
{
public:
   // Test will be able to access Private's private members;
   class Test;
private:
   int i;
}

// Make Test exactly like Private
class Private::Test : public Private
{
public:
   // Make Private's copy of i available publicly in Test
   using Private::i;
};

// A convenience function to quickly break encapsulation on a class to be tested.
// I don't have good name for what it does
Private::Test& foo( Private& p )
{ return *reinterpret_cast<Private::Test*>(&p); } // power cast

void unit_test()
{
   Private p;
   // using the function quickly grab access to p's internals.
   // obviously it would be evil to use this anywhere except in unit tests.
   assert( foo(p).i == 42 );
}

8 ответов


антоним "с".

ладно, шучу. (Вроде.)

лучшие термины, которые я могу придумать, - "разоблачить"и " нарушить".


цель инкапсуляции-скрыть/прикрыть/защитить. Антоним будет раскрывать / разоблачать / предавать гласности.


Как насчет Декапсуляции..

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


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

Если вы думаете о слове в английском смысле, инкапсулировать означает заключать внутри что-то. Но в смысле CS есть эта концепция уровней защиты, и похоже, что вы хотите подразумевать обход уровней доступа, поэтому что-то вроде "извлечения" на самом деле не передает смысл, который вы ищете.

но если вы просто думаете об этом с точки зрения того, что уровни доступа, похоже, вы делаете что-то публичное, так как насчет "публикации"?


Это не такой простой вопрос - у Скотта Мейерса была интересная статья, чтобы продемонстрировать некоторые нюансы вокруг инкапсуляции здесь.

Я начну с кульминации: если вы пишете функцию, которая может быть реализовано как член или как non-friend non-member, вы должны предпочитаю реализовывать его как нечлен функция. Это решение увеличивает инкапсуляция класса. Когда вы думаете инкапсуляция, вы должны думать функции, не являющиеся членами.


Как насчет "плохая идея"?


истинным антонимом " инкапсуляции "является"глобальное состояние".


Как насчет "спагетти"?