Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Доступ к закрытым элементам класса - Вопрос - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Всё таки хочу снести отсебятину на тему размерных величин http://www.cyberforum.ru/cpp-beginners/thread386391.html
class TLenghtUnit { private: static TLenghtUnit *Base; double k1; double k2; TLenghtUnit *u; public: TLenghtUnit (TLenghtUnit &Unit, double k1, double k2) // Unit - ссылка на...
C++ Составить частотный словарь вводимого текста Составить частотный словарь вводимого текста (несколько строк) тоесть распечатать строку следующим образом: справа от каждого слова-частоту, с которой оно встретилось. http://www.cyberforum.ru/cpp-beginners/thread386387.html
Исключения C++
Как бросить исключение выхода за границы массива? Как его поймать? Что делать после отбрасывания? TItem & TArray::operator (unsigned int index) { if {Index>NumberOfData} { //Что сдесь надо...
Классы. Доступ к созданному объекту. C++
Доброе утро, форум.:friends: Имеется код, чисто для примера. файл book.h #ifndef BOOK_H #define BOOK_H struct Book {
C++ Для чего нужна функция errno_t err? http://www.cyberforum.ru/cpp-beginners/thread386365.html
Почему в Visual C++ 5.0 нужно вводить не FILE *fp; fp = fopen("File" , "w"); ,а FILE *fp; errno_t err; err = fopen_s(&fp, "File" , "w"); ?
C++ Работа со списками (через класс). Скажите, в чем ошибка. Доброго времени суток. Я написал программу, просмотрите, пожалуйста. В общем нужно реализовать класс, выполняющий следующие функции: 1. Добавление элемента в начало списка 2. Добавление элемента... подробнее

Показать сообщение отдельно
Bers
Заблокирован
18.11.2011, 10:25
Вы просто не совсем понимаете, что такое "инкапсуляция".
Инкапсуляция - это сокрытие внутренностей объекта от всего внешнего мира.

Представьте себе, что объект - это периметр. Этакий забор. Внутри этого забора спрятаны все кишки. Снаружи не видно, что там внутри.

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


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

Кто находится по ту сторону (внутри) забора? Сам объект и находится. Только сам объект знает свои данные, и как он устроен. И если объекты одного и того же класса, значит они знают об устройстве друг друга. Поэтому, инкапсуляция не распространяется на объекты одного класса.
Они "знают" точное устройство друг друга. Знают свою собственную природу. Знает её и тот разработчик, который эти классы создавал.

Не знают только внешний мир - пользователи. И их пользовательские коды.

Но сами объекты одного класса имеют одинаковую природу, и знают как они устроена.
Поэтому, они могут "видеть" устройство (приватные данные и методы) друг друга.
На самом деле они не "видят", они просто "знают" её.

Для всех остальных - только через ворота.

/зы не стоит злоупотреблять тем, что объекты одного класса могут напрямую обращаться к приватным данным друг друга. Даже в этом случае если есть возможность - лучше использовать хотя бы приватные, но методы. А если нет такой возможности - ничто не мешает создать метод в приватной зоне.

Добавлено через 2 минуты
блин... бессонная ночь сказывается. Сам прочел ток что написал - тавтология сплошная.

Но смысл вы вроде бы должны уловить...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru