powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Мод. дело есть +
19 сообщений из 19, страница 1 из 1
Мод. дело есть +
    #34659422
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тут пару раз ссылался на метод формальных спецификаций RAISE
в связи с своим проектом его перечитываю и начал переводить.
Применить хочу на практике вроде.

Если есть желание можно обсудить как у них проектируется класс.

http://sql.ru/forum/actualthread.aspx?tid=417722&pg=1&hl=guttag
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34660317
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizЕсли есть желание можно обсудить как у них проектируется класс.
Не удалось добраться до описания RSL. Но судя по тому, что они компилируются в Аду, классы там декоративные.
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34662700
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в с++ тоже компилируется.
Дело не в синтаксисе языка а методе проектирования абстрактного типа
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34662701
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34662702
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34663410
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, очень интересный текст.
Насколько я понял, это не ООП. В RSL класс=тип данных, объект=переменная этого типа, наследование=конструирование нового типа на основе старого, полиморфизма по сути нет.
Т.е. традиционный модульный процедурно-функциональный язык. Но кое-что сделано хорошо:
конструирование типов, иерархия модулей, контроль типов. Общее впечатление - направление правильное, но все очень сыро, многого не хватает. Если вас интересует развитая система типов и модульность, то это м.б. полезно.
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34665458
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там передача обьектов как параметры проблема.
В функции нельзя передавать.
дело не в этом. Дело в методе проектирования абстрактного типа данных (читай класса) через алгебраическое описание функций..
Которй Гуттаг засветил первый в первый раз.
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34665460
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
они его взяли на щит

John Guttag Abstract Data Types and the Development of Data Structures
( 853 -rw-rw-rw- 1 user group 872708 Feb 7 19:28 p396-guttag.pdf)
http://agp.hx0.ru/oop/p396-guttag.pdf
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34666003
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingiz Дело в методе проектирования абстрактного типа данных (читай класса) через алгебраическое описание функций..
Которй Гуттаг засветил первый в первый раз.
Идея АТД себя изжила, потому что на деле потребовались не абстрактные и конкретные типы, а иерархия типов. Вот в RSL сделано правильно. Там последовательно продвигается идея иерархического проектирования сверху-вниз, от абстракции к конкретике. Поэтому там можно использовать "абстрактный" тип до его детализации и вообще можно использовать понятия до их определения. А основная структурная единица в RSL - модуль, как набор типов, процедур-функций, аксиом - при желании можно считать что модуль - это алгебраическое описание какого-то понятия. Зачем они ввели понятие класс я не понял, модуля достаточно.
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34668466
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, чтобы сделать иерархию надо же спроектировать один тип, потом второй, и т.д.
идея проектирования винтов тоже исжила? потому что надо мосты строить?
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34668468
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой. скорее болтов
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34668963
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про АТД. Тип данных - это множество. А абстрактный ТД - это что ? По сути АТД - это обычный программный модуль, но тогда непонятно зачем водить новое понятие. Простой пример: куда отнести функцию вида: (АТД1,АТД2)->АТД3 (в какой АТД ее включить ?)
ПМСМ любая программа должна состоять только из модулей, состоящих из деклараций типов данных, переменных (простых и коллекций) разных типов и процедур-функций. Никаких классов, объектов и прочей ерунды. Компоновка модулей произвольна и зависит только от разработчика (Майерс как раз и занимается выработкой рекомендаций-критериев по компоновке модулей). Вот в RLS и есть две очень существенные вещи: конструирование типов как множеств и построение иерархии модулей.
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34671841
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
модПро АТД. Тип данных - это множество. А абстрактный ТД - это что ? По сути АТД - это обычный программный модуль, но тогда непонятно зачем водить новое понятие. Простой пример: куда отнести функцию вида: (АТД1,АТД2)->АТД3 (в какой АТД ее включить ?)
ПМСМ любая программа должна состоять только из модулей, состоящих из деклараций типов данных, переменных (простых и коллекций) разных типов и процедур-функций. Никаких классов, объектов и прочей ерунды. Компоновка модулей произвольна и зависит только от разработчика (Майерс как раз и занимается выработкой рекомендаций-критериев по компоновке модулей). Вот в RLS и есть две очень существенные вещи: конструирование типов как множеств и построение иерархии модулей.

Считать, тип данных это множество, удобно. АТД отличается от типа данных, отсуствием конструктивного определения. Из контекста, который использовали Гуттаг, Бертран, Джорж и
т.д.

первая версия Можно считать, что атд - неконстуктивно заданное множество.
Но при алгебраическом проектировании много уделяется внимания функциям.
Тогда атд = это пара множество значений + функции, тоесть абстрактный автомат.

вторая версия
тип - это множество значений, атд множество значений + функции - ничем от класса не отличается.

--
http://citforum.ru/programming/theory/adt/oop_2.shtml
Определение: класс

Класс - это абстрактный тип данных, снабженный некоторой (возможно частичной) реализацией

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

Определение: отложенный и эффективный классы

Полностью реализованный класс называется эффективным (effective). Класс, который реализован лишь частично или совсем не реализован, называется отложенным (deferred). Всякий класс является либо отложенным, либо эффективным.



В отличие от этого болтолога Буча, Бертран нравится
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34671846
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор(Майерс как раз и занимается выработкой рекомендаций-критериев по компоновке модулей)

да. Но с модулем трудности с обьявлением несколько одинаковых модулей.
В RSL можно. Там объекты типа модуль есть. И существуют параметризованные модули.
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34671852
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БертранСпецификация АТД предоставит эту информацию. Она состоит из четырех разделов, разъясняемых в следующих разделах:

* ТИПЫ
* ФУНКЦИИ
* АКСИОМЫ
* ПРЕДУСЛОВИЯ

Для спецификации АТД в этих разделах будут использоваться простая математическая нотация.

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

В разделе ТИПЫ указываются специфицируемые типы. В общем случае, может оказаться удобным определять одновременно несколько АТД, хотя в нашем примере имеется лишь один тип STACK(СТЕК). Между прочим, что такое тип? Ответ на этот вопрос объединит все положения, развиваемые далее в этой лекции: тип - это совокупность объектов, характеризуемая функциями, аксиомами и предусловиями. Не будет большой ошибкой рассматривать пока тип как множество объектов в математическом смысле слова "множество" - тип STACK как множество всех возможных стеков, тип INTEGER как множество всех целых чисел и т.д.
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34672122
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizатд = это пара множество значений + функции
А какие функции ?
Если множество значений=тип Т1, то куда девать функции вида F(Т1,,,Тn)->Tk
т.е. функции м.б. определены и возвращать значения разных типов и к какому АТД их относить ?
поэтому я и считаю эту концепцию ущербной.
А поскольку понятие класса базируется на АТД, то и их туда же.
Остаются только модули.
И Бертран прав, только это не АТД, а модуль:
автор
* ТИПЫ
* ФУНКЦИИ
* АКСИОМЫ
* ПРЕДУСЛОВИЯ

зы беру timeout на 2 нед
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34674797
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>куда девать F(Т1,,,Тn)->Tk
относить можно к тому, к которому програмист решит
согласно
>Компоновка модулей произвольна

--

>По сути АТД - это обычный программный модуль, но тогда непонятно зачем водить новое понятие.

програмный модуль - это уже готовый текст на языке реализации.
у Бертрана атд - спецификация.
Хотя можно не пререкаться, пусть будет модуль.
Главный вопрос в том, что Бертран и Гуттаг не рассказывают как выбирать набор аксиом,
хотя рассматривают вопрос о достаточной полноте набора аксиом,
а в RSL методе дается конкретная процедура
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34674798
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
приятно отдохнуть.
...
Рейтинг: 0 / 0
Мод. дело есть +
    #34709715
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingiz АТД отличается от типа данных, отсуствием конструктивного определения.
А что это дает ? Ведь для задания функций - аксиом - императив все равно понадобится показать, как и из чего сконструирован тип. Иначе придется описывать аксиомами произведение входы*выходы, а это не конструктивно.
ПМСМ состав модуля д.б. таким:
1. Описание типов: имя типа+структура типа+аксиомы целостности одной переменной этого типа. Аксиомы целостности проверяются системой при любом изменении переменной этого типа.
2. "Чистые" функции, в т.ч. предохранители - предусловия
3. Процедуры - изменяют значения аргументов и/или связанных переменных и могут вызывать другие процедуры из других модулей. Используют предохранители.
Все это делится на открытую спецификацию и закрытую реализацию.
В зависимости от назначения такой модуль можно назвать как угодно - классом, типом, объектом и т.д. Важно что сами переменные этого типа в состав модуля могут не входить. Например м.б. модуль "Накладная" для работы с накладными, хранящимися в таблице БД.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Мод. дело есть +
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]