Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




 

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

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

Сокрытие информации наиболее просто реализуется в языке Java, в отличие от более ранних языков программирования типа С или Pascal. Эти языки не имеют конструкций инкапсуляции, таких как классы объектов, поэтому структуры данных не защищены. Другие части программы могут обращаться к данным непосредственно, что может вести к непредвиденным побочным эффектам. В объектно-ориентированных языках предусмотрены методы, которые позволяют выбирать и обновлять значения атрибутов, не предоставляя другим объектам непосредственного доступа к этим атрибутам. Таким образом, значение атрибута можно изменять независимо от других объектов, которые используют атрибут.

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

Подобный пример сокрытия информации показан в листинге 18.2. В ситуациях, когда некоторая переменная может принимать ограниченное множество значений, эти значения могут быть объявлены как константы. Языки, подобные C++, поддерживают перечислимые типы данных, но в языке Java для этого необходимо использовать объявление класса. Для примера рассмотрим сигнальную систему, которая поддерживает красный, желтый и зеленый цвета. Тип Signal (Сигнал) необходимо определить так, чтобы включить объявления констант, соответствующих этим цветам. После этого можно ссылаться на Signal. red (красный сигнал)» Signal. green (зеленый сигнал) и т.д. Этим избегается случайное присвоение неправильных значений переменным типа Signal.

Листинг 18.1. Спецификация очереди с помощью объявления интерфейса

 

interface Queue {

public void put (Object o);

public void remove (Object o);

public int size ();

} //Queue

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...