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

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

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

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

Содержание
  • 1 Обзор
  • 2 Инкапсуляция
  • 3 История
  • 4 Пример сокрытия информации
  • 5 См. Также
  • 6 Ссылки
Обзор

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

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

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

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

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

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

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

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

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

История

Концепция сокрытия информации была впервые описана Дэвидом Парнасом в Парнас (1972). До этого модульность обсуждалась Ричардом Готье и Стивеном Понтом в их книге 1970 года «Проектирование системных программ», хотя модульное программирование само по себе много лет назад использовалось на многих коммерческих сайтах, особенно в I / O подсистемы и программные библиотеки - без получения тега «скрытие информации» - но по схожим причинам, а также по более очевидной причине повторного использования кода.

Пример сокрытия информации

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

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

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

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

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

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

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

См. Также
Ссылки
Последняя правка сделана 2021-05-24 14:45:11
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте