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



Автор Полина Дягилева задал вопрос в разделе Образование

что такое принцип инкапсуляции и получил лучший ответ

Ответ от Александр Пуховский[гуру]
Инкапсуляция является одним из ключевых понятий ООП. Для начала приведу формальное определение этого понятия:
Инкапсуляция - это механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования. Когда методы и данные объединяются таким способом, создается объект.
Итак, зачем же нам нужна инкапсуляция? Ответ прост, мы - люди. А человеку свойственно ошибаться. Никто не застрахован от ошибок. Применяя инкапсуляцию, мы, как бы, возводим крепость, которая защищает данные, принадлежащие объекту, от возможных ошибок, которые могут возникнуть при прямом доступе к этим данным. Кроме того, применение этого принципа очень часто помогает локализовать возможные ошибки в коде программы. А это на много упрощает процесс поиска и исправления этих ошибок.
Можно сказать, что инкапсуляция подразумевает под собой скрытие данных (data hiding), что позволяет защитить эти данные.
А теперь определение, которое, как мне кажется, наиболее точно определяет суть инкапсуляции:
Переменные состояния объекта скрыты от внешнего мира. Изменение состояния объекта (его переменных) возможно ТОЛЬКО с помощью его методов (операций) .
Почему же это так важно? Этот принцип позволяет защитить переменные состояния объекта от неправильного их использования.
Это существенно ограничивает возможность введения объекта в недопустимое состояние и/или несанкционированное разрушение этого объекта.
Для иллюстрации приведенного выше постулата рассмотрим простой жизненный пример.
Представьте, что у Вас не заводится машина и Вы, увы, не механик и плохо разбираетесь в машинах. Вы открываете капот и начинаете выдергивать какие-то шланги, что-то окручивать. и т. д. Хорошо, если Вы запомнили что, где и как выдергивали и откручивали. А если нет? Или, у Вас стрелка уровня топлива стоит на нуле, а Вы считаете, что у Вас полно топлива и полезете со спичками внутрь бензобака проверять уровень топлива. Какие последствия Вас могут ожидать? В лучшем случае Вы и Ваша машина останутся живы, если Вам о-о-очень повезет.
Аналогично и с нашими объектами, которые могут быть чрезвычайно сложными, а Вы пытаетесь что-то в них подправить, не представляя их внутреннюю организацию.
Для того, чтобы починить машину не причинив себе и самой машине вреда (ну, разве только финансовые затраты с Вашей стороны) необходимо пригласить квалифицированных авто-слесарей, причем каждый из которых отлично разбирается только в определенной части Вашей машины. Если Вы скажете, что у Вас не горит лампочка подсветки в салоне, то замену лампочки проведет специалист по электрооборудованию автомобилей. И т. д. Аналогично и в нашем объекте. Есть "мастера" - методы, которые "специализируются" в определенных областях, но свою область они знают на "5" баллов. А самое главное, они знают как можно изменить состояние объекта так, чтобы не повредить его.
Описанный мною постулат отражает простую житейскую мудрость: не знаешь, не представляешь как что-то сделать - попроси это сделать того, кто знает как это правильно надо сделать. К сожалению, все мы (и я не исключение) на каждом шагу пренебрегаем этим правилом.
В ООП мы это правило определяем как закон: "Объект не приемлет дилетантов. Только 'специалисты' могут как-либо изменять состояние объекта. " И это правильно !
Вы можете сказать, что этот принцип далеко не новость в программировании, и будете правы. Подобного рода подход для доступа к данным далеко не нов и используется на каждом шагу (во всяком случае в компьютерной сфере) .
Хорошим примером применения принципа инкапсуляции являются команды доступа к файлам. Обычно доступ к данным на диске можно осуществить только через специальные функции. Вы не имеете прямой доступ к данным, размещенным на диске. Таким образом, данные, размещенные на диске, можно рассматривать скрытыми от прямого Вашего вмешательства. Доступ к ним можно получить с помощью специальных функций, которые по своей роли схожи с методами объектов.

Ответ от Гресько Павел[гуру]
Инкапсуляция - это механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования. Когда методы и данные объединяются таким способом, создается объект.

Ответ от Август Кравчинский[гуру]
Для любого класса C и для любого метода M, связанного с C, все объекты, которым M посылает сообщение, должны быть экземплярами классов, ассоциированными со следующими классами:
-Классами аргументов M (включая C).
- Классами переменных экземпляра C

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: что такое принцип инкапсуляции
спросили в Байт код
Что такое "инкапсуляция" и "трансляция"?
Инкапсуляция в компьютерных сетях — это метод согласования сетей, применимый только для
подробнее...
спросили в Стек
Что это такое: NBT_SS
NBT (NetBIOS over TCP/IP) — механизм отображения запросов NetBIOS на TCP/IP.

Метод
подробнее...

что такое инкапсуляция?
Инкапсуляция - это механизм, который объединяет данные и методы, манипулирующие этими данными, и
подробнее...

ООП: что такое инкапсуляция, абстракция, полиморфизм и наследование?
инкапсуляция - включение в класс данных (или других классов) с ограничением доступа к ним.
подробнее...
спросили в Другое
что такое инкапсуляция
Инкапсуляция — свойство языка программирования, позволяющее объединить и защитить данные и код в
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:

Магические методы PHP
Это называется инкапсуляция: методы __get и __set инкапсулируют данные, хранимые в переменной.
подробнее...

Что такое наследование, инкапсуляция и полиморфизм в программировании?
Никогда не слышала об инкапсуляции в программирования, это,насколько знаю, часть архитектуры
подробнее...
Инкапсуляция программирование на Википедии
Посмотрите статью на википедии про Инкапсуляция программирование
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*