Инкапсуляция программных переменных в объекты с помощью атрибутов ведет, строго говоря, только к специальным правилам видимости для программных переменных.
Модульной формализации устойчивости данных можно достигнуть, например, с помощью следующих математических концепций:
· автоматов ввода/вывода,
· потокообрабатывающих функций,
В частности, объект можно понимать как машину состояний с входом и выходом.
Пример (описание классов для объектов с устойчивостью данных). Типичный для 00-программирования пример класса выглядит следующим образом:
class SET_CLASS = based on: SET Attributes: s : set data Methods: put_empty,
padd param data,
pdelete param data Selektors: sisempty: -> bool,
siselem: data -> bool,
sany: -> data Axioms: put_empty = [ s := empty ],
padd(x) = [ s := add(s, x) ],
pdelete(x) s [ s := delete(s, x) ],
siselem(x) = iselem(s, x),
sisempty = isempty(s),
sany = any(s) end_of_class
Здесь речь идет о классе 00-языка программирования с последовательной моделью выполнения.
Объекты в ЯП параллельной моделью выполнения могут трактоваться как интерактивные компоненты. Интерактивная компонента осуществляет коммуникации с помощью сообщений (вызов метода тогда соответствует сообщению с возвратом ответа) и обладает состоянием, которое изменяется через обмен сообщениями. Отсюда становится ясным, каким образом формализация устойчивости данных может быть осуществлена с помощью автоматов ввода/вывода или потокообрабатывающих функций.
Пример (описание класса интерактивного объекта). Типичным для 00-программирования примером является следующее описание класса:
class INTERACTIVE_SET_CLASS = Based on: SET State: set data Input Channel Messages: