Требование инкапсуляции - PullRequest
0 голосов
/ 01 февраля 2020

«По мнению многих книг и веб-сайтов, инкапсуляция является одной из самых важных функций OOP и используется для защиты данных». Википедия аналогично заявляет,

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

а защита от чего? Это от нашего собственного невежества, гарантирующего, что мы не запутаемся позже, когда программы слишком длинные или какой-то другой фактор?

Ответы [ 3 ]

0 голосов
/ 01 февраля 2020

Одной из причин инкапсуляции и «сокрытия информации» является уменьшение связности и, следовательно, уменьшение сложности, а точнее цикломатикой сложности c, которая в больших программах может увеличиваться экспоненциально, а большая сложность означает больший риск ошибок , Предотвращая побочные эффекты от открытых полей, вы уменьшаете вероятность создания ошибок.

0 голосов
/ 16 февраля 2020

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

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

0 голосов
/ 01 февраля 2020

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

...