LINUX.ORG.RU

История изменений

Исправление pihter, (текущая версия) :

Вот это вот ваше «я нехочу читать», «зачем оно мне»

Опять же, неплохо бы объяснять сакральное значение того или иного знания, предлагая мне его освоить.

https://ru.wikipedia.org/wiki/Сокрытие_(программирование)

https://ru.wikipedia.org/wiki/Инкапсуляция_(программирование)

https://ru.wikipedia.org/wiki/Чёрный_ящик

все надо за тебя гуглить? Ну так я все это знаю.

В некоторых случаях, разработчик библиотеки (класса) должен скрывать реализацию от пользователя (то есть программиста, использующего его библиотеку в своем проекте), предоставляя ему доступы только через СТРОГО ОГОВОРЕННЫЙ интерфейс. Разработчик библиотеки при разработке руководствуется тем принципом, что пользователь, то есть ты, будет взаимодействовать с его библиотекой только через интерфейс, что дает ему свободу в реализации черного ящика. Если ты нарушишь этот принцип, например будешь использовать какую-то переменную, которую автор не включил в публичный интерфейс, то ты наживешь себе ряд проблем: может в какой-то реализации (на какой другой архитектуре) или в какой-нибудь следующей версии этой переменной совсем не будет? Или она будет, но будет вести себя не так, как ты ожидаешь?

Сообразил? Это как правила дорожного движения: все договорились ездить вот так и вот так, а ты, такой умный, решил что какое-то правило можно понимать не так как все — кончится бедой.

Еще хороший пример: драйвер оборудования в компьютере. Разработчик драйвера СТРОГО ОПРЕДЕЛЯЕТ интерфейс, через который ты с ним можешь общаться и это важно, потому что драйвера взаимозаменяемы. Если ты будешь обращаться к какой-то внутренней переменной драйвера из своей программы, то ты не гарантируешь (а точнее практически гарантируешь обратное) работоспособность своей программы на других компьютерах, где могут быть установлены другие драйвера.

Если разработчик класса(библиотеки) заприватил какое-то поле — значит использовать его == стрелять себе в ногу — так ясно?

Исходная версия pihter, :

Вот это вот ваше «я нехочу читать», «зачем оно мне»

Опять же, неплохо бы объяснять сакральное значение того или иного знания, предлагая мне его освоить.

https://ru.wikipedia.org/wiki/Сокрытие_(программирование)

https://ru.wikipedia.org/wiki/Инкапсуляция_(программирование)

https://ru.wikipedia.org/wiki/Чёрный_ящик

все надо за тебя гуглить? Ну так я все это знаю.

В некоторых случаях, разработчик библиотеки (класса) должен скрывать реализацию от пользователя (то есть программиста, использующего его библиотеку в своем проекте), предоставляя ему доступы только через СТРОГО ОГОВОРЕННЫЙ интерфейс. Разработчик библиотеки при разработке руководствуется тем принципом, что пользователь, то есть ты, будет взаимодействовать с его библиотекой только через интерфейс, что дает ему свободу в реализации черного ящика. Если ты нарушишь этот принцип, например будешь использовать какую-то переменную, которую автор не включил в публичный интерфейс, то ты наживешь себе ряд проблем: может в какой-то реализации (на какой другой архитектуре) или в какой-нибудь следующей версии этой переменной совсем не будет? Или она будет, но будет вести себя не так, как ты ожидаешь?

Сообразил? Это как правила дорожного движения: все договорились ездить вот так и вот так, а ты, такой умный, решил что какое-то правило можно понимать не так как все — кончится бедой.