Пакеты - это единицы программной декомпозиции, обладающие следующими свойствами:
[x]. P1 В соответствии с принципом Лингвистических Модульных Единиц, "пакет" это конструкция языка, так что каждый пакет имеет имя и синтаксически четко определенную область.
[x]. P2 Описание каждого пакета содержит ряд объявлений связанных с ним элементов, таких как подпрограммы и переменные, которые в дальнейшем будут называться компонентами (features) пакета.
[x]. P3 Каждый пакет может точно определять права доступа, ограничивающие использование его компонентов другими пакетами. Другими словами, механизм пакетов поддерживает скрытие информации.
[x]. P4 В компилируемом языке (таком, который может быть использован для реализации, а не только для спецификации и проектирования) поддерживается независимая компиляция пакетов.
Благодаря свойству P3, пакеты можно рассматривать как абстрактные модули. Их главным вкладом в программирование является свойство P2, удовлетворяющее требованию Группирования Подпрограмм. Пакет может содержать любое количество связанных с ним операций, таких как создание таблицы, включение, поиск и удаление элементов. И нетрудно увидеть, как решение, основанное на использовании пакета, будет работать в рассматриваемом здесь примере табличного поиска. Ниже - в системе обозначений, заимствованной из нотации, используемой в последующих лекциях этого курса для ОО-ПО - приводится набросок пакета
package INTEGER_TABLE_HANDLING feature
type INTBINTREE is
record
-- Описание представления двоичного дерева, например:
info: INTEGER
left, right: INTBINTREE
end
new: INTBINTREE is
-- Возвращение нового инициализированного INTBINTREE.
do ... end
has (t: INTBINTREE; x: INTEGER): BOOLEAN is
-- Содержится ли x в t?
do ... Реализация операции поиска ... end
put (t: INTBINTREE; x: INTEGER) is
-- Включить x в t.
do ... end
remove (t: INTBINTREE; x: INTEGER) is
-- Удалить x из t.
do ... end
end -- пакета INTEGER_TABLE_HANDLING
Этот пакет содержит объявление типа
Пакеты-клиенты теперь могут работать с таблицами, используя различные методы из
-- Вспомогательные описания:
x: INTEGER; b: BOOLEAN
-- Описание t типа, определенного в INTEGER_TABLE_HANDLING:
t: INTEGER_TABLE_HANDLING$INTBINTREE
-- Инициализация t новой таблицей, создаваемой функцией new пакета:
t := INTEGER_TABLE_HANDLING$new
-- Включение x в таблицу, используя процедуру put пакета:
INTEGER_TABLE_HANDLING$put (t, x)
-- Присваивание True или False переменной b,
-- для поиска используется функция has пакета:
b := INTEGER_TABLE_HANDLING$has (t, x)
Отметим необходимость введения двух связанных между собой имен: одного для модуля, здесь это
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии