Главная » Java » Содержимое пакетов

0

 

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

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

   Пакеты могут быть вложены внутрь других пакетов. Скажем, java.lang служит обозначением пакета lang, вложенного внутрь более крупного пакета Java. Пакет Java выполняет единственную роль — служит "оболочкой", содержащей другие пакеты. Возможность создания вложенных пакетов позволяет применять иерархические системы именования взаимосвязанных пакетов.

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

 

package adaptive.neuralNet;

 

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

 

adaptive.neuralNet   либо   adaptive.genetic,—   предназначен   для   хранения классов, относящихся к частным разновидностям адаптивных алгоритмов.

  Возможность создания вложенных пакетов — удобное средство организации программного обеспечения, но оно не гарантирует получения пакетами полномочий взаимного доступа. Код класса, содержащийся, скажем, в пакете adaptive.genetiс, не имеет права адресовать компоненты классов, обладающие признаками доступа уровня пакета, в пакетах adaptive или adaptive, neural Net. Контекст пакета распространяется только на текущий пакет. Вложенные пакеты служат для группирования взаимосвязанных классов и облегчают задачу поиска в иерархии типов требуемых компонентов, но иных преимуществ не предоставляют.

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии