АТД-формат для проектирования программной системы и точного описания интерфейса

Страницы работы

Содержание работы

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

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

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

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

АТД – формат.

АТД имя.

Данные:

Описание структуры данных.

Операции:

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

Начальные значения: данные для инициализации.

Процесс: инициализация данных.

Операция:

Вход: данные от пользователя.

Предусловия: необходимое состояние структуры данных перед выполнением операции.

Процесс: действия, выполняемые над данными.

Выход: данные, возвращаемые пользователю.

Постусловие: состояние структуры после выполнения операции.

Операция:

……

Операция:

…..

Конец АТД.

Язык С++ поддерживает определяемый АТД с помощью классов.

Класс состоит из членов, которые включают данные и операции, называемые методами.

Класс содержит открытую (public) и закрытую (private) части. Открытая часть описывает интерфейс , позволяющий манипулировать объектами типа класса. Закрытая часть содержит данные и внутренние операции.

Класс инкапсулирует информацию, связывая вместе члены и методы в единое целое – объект. Структура класса скрывает реализацию деталей и ограничивает внешний доступ к данным и операциям.

Данные обычно скрыты в закрытой части класса и модифицируются только методами класса.

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

Пример формата АТД – список.

АТД List

Данные

Структура данных: динамический односвязный список элементов на базе адресных указателей,

Размерсписка: количество значений, находящихся в данный момент в списке,

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

 nil – значения.

Операции:

Конструктор

Начальные значения: nil–значение данных.

Процесс: создание пустого списка, установление размера списка в 0.

Listsize

Вход: нет.

Предусловие: нет.

Процесс: чтение размера списка.

Выход: размер списка.

Постусловие: нет.

ListEmpthy

Вход: нет.

Предусловие: нет.

Процесс: проверка размера списка.

Выход:  логическое значение true(1), если список пуст;

логическое значение false(0), если список не пуст.

Постусловие: нет.

ClearList

Вход: нет.

Предусловие: нет.

Процесс: удаление всех значений из списка и установка размера списка в 0.

Выход: нет.

Постусловие: список пустой.

Find

Вход: значение, которое нужно найти в списке.

Предусловие: нет.

Процесс: сканирование списка для нахождения указанного значения.

Выход: логическое значение true(1), если заданное значение найдено,

логическое значение false(0), если заданное значение не найдено.

Постусловие: нет.

Insert:

Вход: значение, номер позиции в списке для вставки.

Предусловие: значение nil-значению,

 0 номер позиции размер списка

Процесс: добавление значения в указанную позицию списка. Не выполняется никакое действие, если не выполнено предусловие.

Выход:  логическое значение true(1), если значение вставлено,

логическое значение false(0), если значение не вставлено.

Постусловие: список имеет новый элемент с указанным значением в указанной позиции; его размер увеличен на 1.

Delete:

Вход: значение, которое нужно удалить из списка.

Предусловие: нет.

Процесс: сканирование списка и удаление первого найденного указанного значения из списка. Не выполнятся никакое действие, если заданного значения  в списке нет.

Выход: нет

Постусловие: если указанное значение найдено, размер списка уменьшается на 1.

GetPos

Вход: значение в списке,

Предусловие: нет.

Процесс: сканирование списка для нахождения указанного значения.

Выход: номер первого вхождения в список указанного значения.

-1, если значения в списке нет.

Постусловие: нет.

GetData:

Вход: номер позиции в списке,

Предусловие: 0 номер позиции размер списка.

Процесс: чтение  значения из списка, с указанным номером позиции. Не выполняется никакое действие, если не выполнено предусловие.

Выход: значение элемента  с указанным номером позиции,

nil-значение, если не выполнено предусловие.

Постусловие: нет.

Конец АТД List.

Похожие материалы

Информация о работе