Фиксированные типы данных абстрактного типа

Данный подход ориентирован на использование языков, «плохо» поддерживающих сложные структуры данных. При реализации такого подхода правильность проектирования программ зависит, главным образом, от программиста. Компилятор не в состоянии найти ошибки в использовании этих данных, так как программист определяет данные абстрактного типа как структуру данных и оформляет каждую операцию с такими данными в виде отдельной процедуры; при этом со структурами обращаются как с параметрами.

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

declare 1 STACK,

2 ENTRIES(100) TYPE(INTEGER),

2 TOPOFSTACK TYPE(INTEGER);

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

 

Рис. 4.12 — Фиксированные данные абстрактного типа

Однако такая организация данных имеет существенные недостатки, так как компоненты любой структуры видны во всех процедурах, которые используют эти структуры. Программист должен изменять структуры осторожно с помощью определенных операторов и не вводить кажущиеся «безвредными» операторы для непосредственного обращения к данным. Используемый тип оператора может вызвать неприятности, если каждая компонента не будет заменена соответствующим образом.

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