Пример:
scheme library = сlass type BookId, Book = BookId >< Bool, Book-infolist, ReaderId, Reader = ReaderId >< Book-infolist, Reader-infolist value maxBookNumber: Nat emptyCatalog: Book-infolist emptyReaders: Reader-infolist addBook: Book >< Book-infolist -> Book-infolist deleteBook: Book >< Book-infolist -> Book-infolist numOfBooks: Book-infolist -> Nat ... end
Мало того, что этот текст полон синтаксических ошибок (можете запустить RSL Type Checker и убедиться в этом), так он еще и изобилует попытками задать состояние черного ящика (в данном случае в виде двух inflist'ов). Т.е. правильно, как минимум, так:
scheme library = сlass type Book, Books, Reader, Readers value maxBookNumber: Nat, emptyCatalog: Books, emptyReaders: Readers, addBook: Book >< Books -~-> Books, deleteBook: Book >< Books -~-> Books, numOfBooks: Books -> Nat ... end
Рассматриваем разрабатываемую программную систему на довольно высоком уровне абстракции, чтобы описать лишь часть информации о системе, но важную часть - свойства, ограничения, которые должна поддерживать система, вне зависимости от того, как она будет реализована. А если мы начинаем писать о состоянии, что это список, то мы пытаемся зачем-то сужать те реализации, к которым подходят свойства из нашей спецификации.
Комментариев нет:
Отправить комментарий