Что такое инкапсуляция
Добавлено: 08 окт 2009, 14:16
Скажите, всё что описано в закрытом и открытом разделе класса, есть инкапсуляция. А когда мы создаём экземпляр класса, тоесть объект, он является инкапсулированный. Правильно?
Инкапсуляцией называется то, что позволяет повторно исспользовать весь код и декларации, описанные в классе, а не реализовывать поведение обекта ни в самом объекте, ни в тех местах программы, где ты хочешь к к обекту обратиться, и не декларировать в каждом объекте все его поля (члены-данные). Та что впринципе, ты угадал смысл термина "инкапсуляция", но я не уверен, что именно так следует формулироватьprikolist писал(а):Скажите, всё что описано в закрытом и открытом разделе класса, есть инкапсуляция. А когда мы создаём экземпляр класса, тоесть объект, он является инкапсулированный. Правильно?
Не сам процесс повторного исспользования и не всякий способ повторного иисспользования, а только прибамбас, необходимый для реализации многократного исспользования кода класса для всех объектов этого класса. Он же обеспечивает и сокрытие. Ведь если весь код и декларации всех полей надо каждый раз повторять, то каким образом ты скроешь данные или алгоритмы их обработки? И даже при инкапсуляции сокрытие достигается только в том случае, если ты спрячешь исходник с реализацией класса, а навиду оставишь только декларацию. Кроме того, этот же прибамбас помогает и защитить поля обекта от неправильного изменения. Ты просто обратил внимание на одно свойство, а я - на другое. Но если говорить о чётком определении термина (которого я не дал, да и не пытался), то может быть там и говорится о сокрытии - спорить не буду." писал(а):Инкапсуляция - это сокрытие данных. Так, что atavin-ta не прав, когда говорит, что это повторное использование кода.
Incapsulation с английского переводится как сокрытие, изоляция. Вот тебе статья: http://www.intuit.ru/department/pl/pyth ... hon_4.html.atavin-ta писал(а):Не сам процесс повторного исспользования и не всякий способ повторного иисспользования, а только прибамбас, необходимый для реализации многократного исспользования кода класса для всех объектов этого класса. Он же обеспечивает и сокрытие. Ведь если весь код и декларации всех полей надо каждый раз повторять, то каким образом ты скроешь данные или алгоритмы их обработки? И даже при инкапсуляции сокрытие достигается только в том случае, если ты спрячешь исходник с реализацией класса, а навиду оставишь только декларацию. Кроме того, этот же прибамбас помогает и защитить поля обекта от неправильного изменения. Ты просто обратил внимание на одно свойство, а я - на другое. Но если говорить о чётком определении термина (которого я не дал, да и не пытался), то может быть там и говорится о сокрытии - спорить не буду.
Код: Выделить всё
class A
{
public:
int Get ();
};
Код: Выделить всё
class A
{
protected:
int data;
public:
int Get ()
{
return Data;
}
};
Код: Выделить всё
class A
{
protected:
float data;
public:
int Get ()
{
return (int) Data;
}
};
Код: Выделить всё
class A
{
protected:
bool f();
public:
int Get ()
{
int i;
for (i=0; f(); ++i);
return i;
}
};
Код: Выделить всё
class A
{
protected:
int data;
public:
int Get ()
{
return Data;
}
};
Разве в обычном (не ООП) программировании нет повторного использования кода?Airhand писал(а):atavin-taПовторное использование кода - это один из постулатов ООП.
Как это относится к инкапсуляции ? Или абы ляпнуть. Как то, что является постулатом ООП относится к инкапсуляции ?BBB писал(а):Разве в обычном (не ООП) программировании нет повторного использования кода?
Когда я читал про ООП, там говорилось о трех вещах: инкапсуляции, наследовании и полиморфизме.