Jump to content

Скрытие информации

В информатике . сокрытие информации — это принцип разделения проектных решений в компьютерной программе , которые с наибольшей вероятностью изменятся, таким образом защищая другие части программы от обширных модификаций, если проектное решение будет изменено Защита предполагает предоставление стабильного интерфейса , который защищает остальную часть программы от реализации (детали которой могут измениться). Другими словами, сокрытие информации — это возможность предотвратить аспектам класса или программного компонента доступ клиентов к определенным , используя либо функции языка программирования (например, частные переменные), либо явную политику экспорта.

Термин «инкапсуляция» часто используется как синоним сокрытия информации. Однако не все согласны с различиями между ними; можно считать сокрытие информации принципом, а инкапсуляцию — методом. Программный модуль скрывает информацию, инкапсулируя ее в модуль или другую конструкцию, представляющую интерфейс. [1]

Обычно сокрытие информации используется для сокрытия структуры физического хранилища данных, чтобы в случае ее изменения изменение ограничивалось небольшим подмножеством всей программы. Например, если трехмерная точка ( x , y , z ) представлена ​​в программе тремя переменными с плавающей запятой скалярными и позже, представление изменяется на одну переменную -массив размером три, модуль, разработанный со скрытием информации. в виду защитит остальную часть программы от таких изменений.

В объектно-ориентированном программировании сокрытие информации (посредством вложения кода типов) снижает риск разработки программного обеспечения за счет смещения зависимости от неопределенной реализации (проектного решения) на четко определенный интерфейс . Клиенты интерфейса выполняют операции исключительно через интерфейс, поэтому в случае изменения реализации клиенты не должны меняться.

Инкапсуляция

[ редактировать ]

об объектно-ориентированном проектировании В своей книге Грэди Буч определил инкапсуляцию как «процесс разделения элементов абстракции, составляющих ее структуру и поведение; инкапсуляция служит для разделения договорного интерфейса абстракции и ее реализации». [2]

Целью является достижение потенциала к изменению: внутренние механизмы компонента могут быть улучшены без влияния на другие компоненты, или компонент может быть заменен другим, поддерживающим тот же общедоступный интерфейс. Инкапсуляция также защищает целостность компонента, не позволяя пользователям переводить внутренние данные компонента в недопустимое или противоречивое состояние. Еще одним преимуществом инкапсуляции является то, что она снижает сложность системы и, таким образом, повышает ее надежность за счет ограничения взаимозависимостей между программными компонентами. [2]

В этом смысле идея инкапсуляции является более общей, чем то, как она применяется в объектно-ориентированном программировании. Например, реляционная база данных инкапсулирована в том смысле, что ее единственным общедоступным интерфейсом является язык запросов (такой как SQL ), который скрывает все внутренние механизмы и структуры данных системы управления базой данных. Таким образом, инкапсуляция является основным принципом хорошей архитектуры программного обеспечения на каждом уровне детализации.

Инкапсуляция программного обеспечения за интерфейсом позволяет создавать объекты, имитирующие поведение и взаимодействие объектов в реальном мире. Например, простой цифровой будильник — это реальный объект, который может использовать и понимать непрофессионал (неспециалист). Они могут понять, что делает будильник и как его использовать, через предоставленный интерфейс (кнопки и экран), без необходимости разбираться во всех деталях внутри часов. Аналогично, если бы часы были заменены на другую модель, непрофессионал мог бы продолжать использовать их таким же образом, при условии, что интерфейс работает так же.

В более конкретной ситуации объектно-ориентированного языка программирования это понятие используется для обозначения либо механизма сокрытия информации, либо механизма объединения, либо их комбинации. ( см. Инкапсуляция (объектно-ориентированное программирование) Подробнее .)

Концепция сокрытия информации была впервые описана Дэвидом Парнасом в 1972 году. [3] [4] До этого модульность обсуждалась Ришаром Готье и Стивеном Понтом в их книге «Проектирование системных программ» 1970 года, хотя само по себе модульное программирование уже много лет назад использовалось на многих коммерческих сайтах – особенно в ввода-вывода подсистемах и библиотеках программного обеспечения – без приобретения тег «скрытие информации», но по тем же причинам, а также по более очевидной причине повторного использования кода . [ нужны разъяснения ]

Сокрытие информации служит эффективным критерием разделения любого оборудования, программного или аппаратного обеспечения на функциональные модули. Например, автомобиль – это сложное оборудование. Чтобы сделать проектирование, производство и обслуживание автомобиля разумным, сложное оборудование разделено на модули с конкретными интерфейсами, скрывающими проектные решения. Разработав автомобиль таким образом, производитель автомобилей может также предложить различные варианты, сохраняя при этом экономичный в производстве автомобиль.

Например, у производителя автомобилей может быть как роскошная, так и стандартная версия автомобиля. Роскошная версия оснащена более мощным двигателем, чем стандартная версия. Инженеры, разрабатывающие два разных автомобильных двигателя: один для роскошной версии, другой для стандартной версии, обеспечивают одинаковый интерфейс для обоих двигателей. Оба двигателя помещаются в моторный отсек автомобиля, который у обеих версий одинаков. Оба двигателя оснащены одинаковой трансмиссией, одинаковыми опорами двигателя и одинаковыми органами управления. Различия в двигателях заключаются в том, что более мощная люксовая версия имеет больший рабочий объем с системой впрыска топлива, запрограммированной на подачу топливно-воздушной смеси, необходимой двигателю большего объема.

В дополнение к более мощному двигателю, роскошная версия может также предлагать другие опции, такие как лучшее радио с проигрывателем компакт-дисков, более удобные сиденья, лучшую систему подвески с более широкими шинами и другие цвета окраски. Несмотря на все эти изменения, большая часть автомобиля в стандартной и роскошной версиях одинакова. Радио с проигрывателем компакт-дисков представляет собой модуль, который заменяет стандартное радио, также модуль, в модели класса люкс. Более удобные сиденья устанавливаются в те же крепления, что и сиденья стандартного типа. Не имеет значения, кожаные или пластиковые сиденья, есть ли поясничная поддержка или нет.

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

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

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

Автомобили являются еще одним примером того, как они взаимодействуют с водителями. Они представляют собой стандартный интерфейс (педали, руль, переключатель, сигналы, датчики и т. д.), на котором люди обучаются и получают лицензии. Таким образом, людям остается только научиться водить машину; им не нужно учиться совершенно новому способу вождения каждый раз, когда они водят новую модель. (Конечно, существуют механические и автоматические коробки передач и другие подобные различия, но в целом автомобили имеют единый интерфейс.)

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Роджерс, Вм. Пол (18 мая 2001 г.). «Инкапсуляция — это не сокрытие информации» . JavaWorld . Проверено 20 июля 2020 г.
  2. ^ Jump up to: Перейти обратно: а б Буч, Грейди (2007). Объектно-ориентированный анализ и проектирование с приложениями . Аддисон-Уэсли. стр. 51–52. ISBN  978-0-201-89551-3 .
  3. ^ Парнас, Дэвид Л. (1972). «О критериях разложения систем на модули» . Коммуникации АКМ . 15 (12): 1053–58. дои : 10.1145/361598.361623 . S2CID   53856438 .
  4. ^ Скотт, Майкл Л. (2009) [2000]. Брой, Манфред; Денерт, Эрнст (ред.). Прагматика языков программирования (Третье изд.). Издательство Морган Кауфманн. п. 173. дои : 10.1007/978-3-642-59412-0 . ISBN  978-3-540-43081-0 . S2CID   2698265 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b34d1b9d6d12af917c2a318f8f2d7286__1717787040
URL1:https://arc.ask3.ru/arc/aa/b3/86/b34d1b9d6d12af917c2a318f8f2d7286.html
Заголовок, (Title) документа по адресу, URL1:
Information hiding - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)