|
|
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
я тут пару раз ссылался на метод формальных спецификаций RAISE в связи с своим проектом его перечитываю и начал переводить. Применить хочу на практике вроде. Если есть желание можно обсудить как у них проектируется класс. http://sql.ru/forum/actualthread.aspx?tid=417722&pg=1&hl=guttag ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2007, 05:50 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
tchingizЕсли есть желание можно обсудить как у них проектируется класс. Не удалось добраться до описания RSL. Но судя по тому, что они компилируются в Аду, классы там декоративные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 11:07 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
в с++ тоже компилируется. Дело не в синтаксисе языка а методе проектирования абстрактного типа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2007, 01:19 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
Спасибо, очень интересный текст. Насколько я понял, это не ООП. В RSL класс=тип данных, объект=переменная этого типа, наследование=конструирование нового типа на основе старого, полиморфизма по сути нет. Т.е. традиционный модульный процедурно-функциональный язык. Но кое-что сделано хорошо: конструирование типов, иерархия модулей, контроль типов. Общее впечатление - направление правильное, но все очень сыро, многого не хватает. Если вас интересует развитая система типов и модульность, то это м.б. полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2007, 11:36 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
там передача обьектов как параметры проблема. В функции нельзя передавать. дело не в этом. Дело в методе проектирования абстрактного типа данных (читай класса) через алгебраическое описание функций.. Которй Гуттаг засветил первый в первый раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2007, 20:08 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
они его взяли на щит 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2007, 20:10 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
tchingiz Дело в методе проектирования абстрактного типа данных (читай класса) через алгебраическое описание функций.. Которй Гуттаг засветил первый в первый раз. Идея АТД себя изжила, потому что на деле потребовались не абстрактные и конкретные типы, а иерархия типов. Вот в RSL сделано правильно. Там последовательно продвигается идея иерархического проектирования сверху-вниз, от абстракции к конкретике. Поэтому там можно использовать "абстрактный" тип до его детализации и вообще можно использовать понятия до их определения. А основная структурная единица в RSL - модуль, как набор типов, процедур-функций, аксиом - при желании можно считать что модуль - это алгебраическое описание какого-то понятия. Зачем они ввели понятие класс я не понял, модуля достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2007, 09:51 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
ну, чтобы сделать иерархию надо же спроектировать один тип, потом второй, и т.д. идея проектирования винтов тоже исжила? потому что надо мосты строить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2007, 19:42 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
ой. скорее болтов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2007, 19:43 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
Про АТД. Тип данных - это множество. А абстрактный ТД - это что ? По сути АТД - это обычный программный модуль, но тогда непонятно зачем водить новое понятие. Простой пример: куда отнести функцию вида: (АТД1,АТД2)->АТД3 (в какой АТД ее включить ?) ПМСМ любая программа должна состоять только из модулей, состоящих из деклараций типов данных, переменных (простых и коллекций) разных типов и процедур-функций. Никаких классов, объектов и прочей ерунды. Компоновка модулей произвольна и зависит только от разработчика (Майерс как раз и занимается выработкой рекомендаций-критериев по компоновке модулей). Вот в RLS и есть две очень существенные вещи: конструирование типов как множеств и построение иерархии модулей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 09:28 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
модПро АТД. Тип данных - это множество. А абстрактный ТД - это что ? По сути АТД - это обычный программный модуль, но тогда непонятно зачем водить новое понятие. Простой пример: куда отнести функцию вида: (АТД1,АТД2)->АТД3 (в какой АТД ее включить ?) ПМСМ любая программа должна состоять только из модулей, состоящих из деклараций типов данных, переменных (простых и коллекций) разных типов и процедур-функций. Никаких классов, объектов и прочей ерунды. Компоновка модулей произвольна и зависит только от разработчика (Майерс как раз и занимается выработкой рекомендаций-критериев по компоновке модулей). Вот в RLS и есть две очень существенные вещи: конструирование типов как множеств и построение иерархии модулей. Считать, тип данных это множество, удобно. АТД отличается от типа данных, отсуствием конструктивного определения. Из контекста, который использовали Гуттаг, Бертран, Джорж и т.д. первая версия Можно считать, что атд - неконстуктивно заданное множество. Но при алгебраическом проектировании много уделяется внимания функциям. Тогда атд = это пара множество значений + функции, тоесть абстрактный автомат. вторая версия тип - это множество значений, атд множество значений + функции - ничем от класса не отличается. -- http://citforum.ru/programming/theory/adt/oop_2.shtml Определение: класс Класс - это абстрактный тип данных, снабженный некоторой (возможно частичной) реализацией Таким образом, чтобы получить класс, мы должны построить АТД и решить, как его реализовывать. АТД - это математическое понятие, а реализация - это его версия, ориентированная на компьютер. Приведенное определение, однако, утверждает, что реализация может быть частичной. Введенные ниже термины позволяют отделить этот случай от полностью реализованного класса: Определение: отложенный и эффективный классы Полностью реализованный класс называется эффективным (effective). Класс, который реализован лишь частично или совсем не реализован, называется отложенным (deferred). Всякий класс является либо отложенным, либо эффективным. В отличие от этого болтолога Буча, Бертран нравится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 00:15 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
автор(Майерс как раз и занимается выработкой рекомендаций-критериев по компоновке модулей) да. Но с модулем трудности с обьявлением несколько одинаковых модулей. В RSL можно. Там объекты типа модуль есть. И существуют параметризованные модули. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 00:18 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
БертранСпецификация АТД предоставит эту информацию. Она состоит из четырех разделов, разъясняемых в следующих разделах: * ТИПЫ * ФУНКЦИИ * АКСИОМЫ * ПРЕДУСЛОВИЯ Для спецификации АТД в этих разделах будут использоваться простая математическая нотация. Эту нотацию - математический формализм - не надо путать с программной нотацией в остальной части книги, даже если для согласования она использует тот же стиль синтаксиса. У нее нет специального имени, и она не является нотацией языка программирования. Она могла бы послужить отправной точкой для формального языка спецификаций, но мы удовлетворимся использованием не требующих объяснения соглашений для однозначной спецификации АТД. Специфицирование типов В разделе ТИПЫ указываются специфицируемые типы. В общем случае, может оказаться удобным определять одновременно несколько АТД, хотя в нашем примере имеется лишь один тип STACK(СТЕК). Между прочим, что такое тип? Ответ на этот вопрос объединит все положения, развиваемые далее в этой лекции: тип - это совокупность объектов, характеризуемая функциями, аксиомами и предусловиями. Не будет большой ошибкой рассматривать пока тип как множество объектов в математическом смысле слова "множество" - тип STACK как множество всех возможных стеков, тип INTEGER как множество всех целых чисел и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 00:36 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
tchingizатд = это пара множество значений + функции А какие функции ? Если множество значений=тип Т1, то куда девать функции вида F(Т1,,,Тn)->Tk т.е. функции м.б. определены и возвращать значения разных типов и к какому АТД их относить ? поэтому я и считаю эту концепцию ущербной. А поскольку понятие класса базируется на АТД, то и их туда же. Остаются только модули. И Бертран прав, только это не АТД, а модуль: автор * ТИПЫ * ФУНКЦИИ * АКСИОМЫ * ПРЕДУСЛОВИЯ зы беру timeout на 2 нед ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 09:23 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
>куда девать F(Т1,,,Тn)->Tk относить можно к тому, к которому програмист решит согласно >Компоновка модулей произвольна -- >По сути АТД - это обычный программный модуль, но тогда непонятно зачем водить новое понятие. програмный модуль - это уже готовый текст на языке реализации. у Бертрана атд - спецификация. Хотя можно не пререкаться, пусть будет модуль. Главный вопрос в том, что Бертран и Гуттаг не рассказывают как выбирать набор аксиом, хотя рассматривают вопрос о достаточной полноте набора аксиом, а в RSL методе дается конкретная процедура ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2007, 02:39 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
приятно отдохнуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2007, 02:48 |
|
||
|
Мод. дело есть +
|
|||
|---|---|---|---|
|
#18+
tchingiz АТД отличается от типа данных, отсуствием конструктивного определения. А что это дает ? Ведь для задания функций - аксиом - императив все равно понадобится показать, как и из чего сконструирован тип. Иначе придется описывать аксиомами произведение входы*выходы, а это не конструктивно. ПМСМ состав модуля д.б. таким: 1. Описание типов: имя типа+структура типа+аксиомы целостности одной переменной этого типа. Аксиомы целостности проверяются системой при любом изменении переменной этого типа. 2. "Чистые" функции, в т.ч. предохранители - предусловия 3. Процедуры - изменяют значения аргументов и/или связанных переменных и могут вызывать другие процедуры из других модулей. Используют предохранители. Все это делится на открытую спецификацию и закрытую реализацию. В зависимости от назначения такой модуль можно назвать как угодно - классом, типом, объектом и т.д. Важно что сами переменные этого типа в состав модуля могут не входить. Например м.б. модуль "Накладная" для работы с накладными, хранящимися в таблице БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 10:45 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34666003&tid=1345911]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
154ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 432ms |

| 0 / 0 |
