Задать вопрос
mustang_shelby
@mustang_shelby
i like (*_metallica_*)

Что значит сокрытие?

Доброго времени суток! Я не много приболел и не могу с концентрироваться на таком интересном термине - как сокрытие - хотя не много я понял а может и нет - но мне бы хотелось понять - что это такое и как его риализовать - я искал но не нашел удовлетворительного ответа - Буду очень благодарен в помощи !
  • Вопрос задан
  • 493 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 2
@Mercury13
Программист на «си с крестами» и не только
Это значит: должно быть сложно или невозможно вывести объект из «адекватного» состояния (которое называется инвариант класса). Все чувствительные поля при этом прячутся от посторонних глаз. (Разумеется, могут быть «небезопасные» методы, но тогда пользователь сам себе злобный буратино).

PHP управляет памятью сам (что-то мне кажется, что метод управления памятью там «бросай объект и шут с ним»). Но давайте представим себе, что надо вызывать команду «уничтожить объект», и дальнейшее обращение к освобождённому указателю некорректно. Попробуем сделать объект «указатель множественного владения».

В каждом из управляемых объектов налаживаем счётчик; при переприсваивании на счётчике будет такая цифра, сколько указателей «смотрят» на объект. Счётчик упадёт до нуля — объект уничтожается. Соответственно, поле управляемого объекта «счётчик» и поле указателя «указатель на объект» скрываются. «Адекватное состояние» я уже описал: «на счётчике будет такая цифра, сколько указателей «смотрят» на объект. Счётчик упадёт до нуля — объект уничтожается».
Ответ написан
Комментировать
@maltsever
Сокрытие информации очень часто называют инкапсуляцией, но это не совсем корректно. Сокрытие информации - это своего рода ограничение доступа к таким полям/методам/т.д., которые можно менять только внутри модуля. Типичный пример: объявление private переменных.
Инкапсуляция - это сокрытие деталей реализации. Мне нравится следующий пример инкапсуляции из реальной жизни. У нас есть объект - наручные часы, этот объект реализует интерфейс IGetTime. Мы просто смотрим на часы и получаем время. При этом нам совсем не интересно каким образом это время было рассчитано внутри часов, какие инструменты при этом использовались, механические часы или цифровые - это всё не важно. Важно, что мы узнали время, а всё остальное - детали реализации, которые скрыты от нас. Аналогично и в ООП.
Таким образом, сокрытие информации является лишь частью инкапсуляции.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы