Эффективная и разумная структура Package Specification (ADS) в Ada

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

Я хочу сделать разумный порядок, начиная с типов процедур.


person stardust    schedule 27.12.2011    source источник
comment
Много хороших примеров в Аде LRM. .   -  person trashgod    schedule 28.12.2011


Ответы (2)


Немного сложно говорить об ADT абстрактно, но я бы, вероятно, структурировал по вариантам использования на более высоком уровне, чем проверка и модификация.

Как предполагает @trashgod, LRM — хороший старт; например, Ada.Text_IO. Вы также можете найти полезным Руководство по качеству и стилю.

person Simon Wright    schedule 28.12.2011
comment
Спасибо вам обоим за ваши ответы. Думаю, я понял. - person stardust; 28.12.2011

Как насчет этой структуры, например (LIFO):

AbstractDataType Queue {
   1.Constructors:
      a.CreateQueue
   2.Destructors:
      a.DeleteQueue
   3.Inspectors: 
      a.EqualQueues
      b.EmptyQueue
      c.QueueSize
      d.QueueFront
      e.QueueRear
      f.PrintStack
   4.Modifiers:
      a.Enqueue
      b.Dequeue
      c.AssignQueues
}
person stardust    schedule 28.12.2011
comment
См. также Ada.Containers.Doubly_Linked_Lists, что может устранить необходимость в явных деструкторах. - person trashgod; 28.12.2011
comment
Хотя будут аспекты «конструктор», «присваивание» и «деструктор», вы должны использовать значения компонентов по умолчанию и Finalization для управления этим. В противном случае небезосновательно. Я думаю, что в названиях не должно быть слова Очередь (или Стек!) имя пакета говорит нам об этом. Название операции 3a должно быть “=“. - person Simon Wright; 28.12.2011