Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лр+Структуры и алгоритмы с АТД.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
463.87 Кб
Скачать

Формат атд

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

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

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

Большинство АТД имеют инициализирующую операцию, которая присваивает начальные значения данным. В С++ такой инициализатор называется конструктором.

АТД имя. Общая характеристика типа данных

  ДАННЫЕ:     Описание общих параметров.     Описание структуры данных.

  ОПЕРАЦИИ:     Конструктор:       Вход: данные от пользователя.       Начальные значения: данные для инициализации.       Процесс: инициализация данных.       Постусловие: состояние структуры и параметров после инициализации.

    Операция:       Вход: данные от пользователя.       Предусловия: необходимое состояние структуры данных перед выполнением операции.       Процесс: действия, выполняемые над данными.       Выход: данные, возвращаемые пользователю.       Постусловие: состояние структуры после выполнения операции.

    Операция:       ...

    Операция:       ...

КОНЕЦ АТД.

В качестве примера ниже приведён формат абстрактного типа данных - надёжного массива. Надёжный массив в отличие от статического массива может изменять свой размер во время выполнения программы. Как АТД, надёжный массив наделяется операциями: инициализации массива с исходным размером (конструктор), опрос текущего размера, изменение текущего размера, доступ к элементу массива по индексу. Операция индексации надёжного массива наделяется новым свойством - проверкой границ массива. Если указанный индекс находится вне текущего размера массива, операция генерирует сообщение об ошибке.

Формат атд (окончание)

АТД "НАДЁЖНЫЙ МАССИВ". Массив элементов указанного типа Т с переменной размерностью. При создании массив имеет исходный размер size0. Массив может изменять свой размер. Операция индексирования массива выполняет проверку соответствия индекса текущему размеру массива size.

ДАННЫЕ:

  Параметры:

    Исходный размер массива size0     Текущий размер массива size

  Структура данных:

    Динамический массив элементов указанного типа Т-Tarray[size]

ОПЕРАЦИИ:

  Конструктор:

    Вход: исходный размер массива size0     Начальные значения: исходный размер массива size=size0     Процесс: выделение памяти с указанным размером size0     Постусловия: Создан массив с размером size=size0

  Опрос размера массива:

    Вход: нет     Предусловия: нет     Процесс: чтение текущего размера size     Выход: текущий размер size     Постусловия: нет

  Изменение размера массива:

    Вход: новый размер массива sizen     Предусловия: sizen   0     Процесс: выделение памяти указанного размера sizen, копирование size или sizen значений из старого массива в новый массив     Выход: нет     Постусловия:     массив содержит size значений старого массива, если sizen > size,     массив содержит sizen значений старого массива, если sizen < size,     текущий размер массива size=sizen

  Операция индексирования:

    Вход: значение индекса i     Предусловия: 0   i   size-1     Процесс: вычисление адреса элемента массива array[i]     Выход: ссылка на элемент массива array[i]     Постусловия: генерация сообщения об ошибке при невыполнении предусловия

КОНЕЦ АТД