Абриаль 2.1 Назад Начало Выше Дальше29/09/04 А.И.Пацкин [packin.ru]
Строение гипертаблиц ] Интерфейс гипертаблиц ] [ Навигация в таблицах ] Изменение данных в таблицах ] Дополнительные возможности таблиц ]

Навигация в таблицах


 В этом разделе объясняется суть гипертабличной навигации.

Что такое навигация.

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

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

Каждый навигационный переход как бы "выворачивает таблицу наизнанку": то что было активной ячейкой разворачивается в таблицу, а предыдущая таблица сворачивается в активную ячейку.

Метафора комнат и дверей.

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

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

Классификация столбцов будет подробно рассмотрена ниже, но сначала лучше рассмотреть несколько примеров.

Пример навигации с помощью таблиц.

Например, пусть у нас имеются следующие описания отношений:

Родитель:LINK(Родители:{&Личность},Дети:{&Личность})

Пол:LINK(Пол:&Личность,Пол_для:{&Пол})

И пусть мы имеем следующие объекты классов Личность и Пол:

Андрей:Личность
Борис:Личность
Вера:Личность
Геннадий:Личность
Дмитрий:Личность
Екатерина:Личность
Муж:Пол
Жен:Пол

И пусть мы имеем следующие факты (связи) относительно родственных отношений между этими объектами

 Пол(Андрей,Муж)
Пол(Борис,Муж)
Пол(Вера,Жен)
Пол(Геннадий,Муж)
Пол(Дмитрий,Муж)
Пол(Екатерина,Жен)
Родитель(Андрей,Борис)
Родитель(Андрей,Вера)
Родитель(Вера,Дмитрий)
Родитель(Вера,Екатерина)
Родитель(Геннадий,Екатерина)

Тогда таблица с заглавным объектом Андрей и с заглавным аспектом Родители будет выглядеть приблизительно следующим образом

Родители (Андрей)

  Родители Дети Пол
Борис   {Андрей} Муж
Вера {Дмитрий,Екатерина} {Андрей} Жен

Первый столбец этой таблицы - объектный, содержит имена объектов, остальные три столбца - аспектные, содержат аспекты этих объектов, причем имена аспектов использованы в качестве заголовков столбцов.

Если выбрать ячейку в строке объекта Вера и столбец аспекта Родители содержащую множество {Дмитрий,Екатерина} и нажать Enter, то получим таблицу с заголовком Родители(Вера), строки которой соответствуют родителям Веры Дмитриевны.

Родители(Вера)

  Родители Дети Пол
Дмитрий   {Вера} Муж
Екатерина   {Вера,Геннадий} Жен

Если в этой таблице выбрать третью ячейку третьей строки, соответствующую аспекту Дети объекта Екатерина, и нажать Enter, то получим таблицу

Дети(Екатерина) 

  Родители Дети Пол
Вера {Дмитрий,Екатерина} {Андрей} Жен
Геннадий {Екатерина}   Муж

И, наконец, выбрав столбец Дети в строке Вера, мы получим таблицу детей Веры Дмитриевны, из которых в базе данных известен только тот самый Андрей, с которого мы и начинали наше путешествие.

Дети(Вера)

  Родители Дети Пол
Андрей {Борис,Вера}   Муж

Переход на объект.

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

По клавише Enter для VALUE-объекта происходит вход в режим редактирования ячейки, содержащей его значение. (Это действие уже не относится к навигации).

Переход по аспекту объекта.

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

Формально это означает, что заглавным объектом новой таблицы становится объект текущей строки, а заглавным аспектом становится аспект текущего столбца.

По смыслу происходит как бы раскрытие текущей ячейки на целую таблицу

Возврат.

При нажатии на клавишу Esc или при выборе Return в контекстном меню, происходит "Возврат", т.е. на самом деле - переход на форму для заглавного объект таблицы.


Все права защищены. © 2000-2004 РосНИИ ИИ
http://artint.ru
Copyright. © 2000-2004 by RRIAI
Александр Иосифович Пацкин [mailto:aleksandr@tochka.ru].
29/09/04

К началу документа.