|
|
|
Выгоды контрактного программирования (design by contract)
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaN, к сжалению, забыл топологию вскяие там морфизмы и т.д ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2010, 19:19 |
|
||
|
Выгоды контрактного программирования (design by contract)
|
|||
|---|---|---|---|
|
#18+
это не топология, а теория категорий. пысы ну, у Сибилева и ЛаТех, шоб он был здоров. Поехать мозгом можно, пока нарисуешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2010, 00:39 |
|
||
|
Выгоды контрактного программирования (design by contract)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2010, 00:52 |
|
||
|
Выгоды контрактного программирования (design by contract)
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNtchingiz 1 на месте прямоугольника, квадрат не должен работать в точь-в-точь как прямоугольник. может все же не обязан, но все же может? может, в случае если будет идеалом. при переходе от прямоугольников к квадратам произошло сужение домена класса, а должно быть расширение. Вот приблизительно так происходило расширение доменов классов в цепочке: 1 множество натуральных. есть функция следующий и принцип матиндукции; 2 полугруппа натуральных. добавлена операция сложения и сохранена аксиома, что есть первый элемент (отнимание не замкнуто); 3 группа целых. Добавлена операция взятие обратного по сложению. Отброшена аксиома, что есть первый элемент; 4 кольцо целых. Добавлена операция умножение. Сохранена аксиома, что единица не представима в сумму двух одинаковых элементов домена; 5 поле рациональных. Добавлена операция взятия обратного по умножению, отброшена аксиома, что единица не представима в виде двух одинаковых элементов домена; -- 1 2 3 4 5 - каждый N - й класс, является подклассом предыдушего N-1. Причем на каждом шаге домен класса или расширяется или остается тем же самым. тип 3 не является подтипом 2. тип 5 не является подтипом 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2010, 01:29 |
|
||
|
Выгоды контрактного программирования (design by contract)
|
|||
|---|---|---|---|
|
#18+
egorychtchingiz, вот да, именно это я и пытался донести нашему общему другу ZiK_BotaN. PS используя его технику легко отнаследовать квадрат от круга, например.. Но это же абсурд PSS tchigiz, красивенько получилось :-)) на этой радостной ноте пишем обобщение принципа подстановки Лисков до критерия подстановки автор Пусть T и S некоторые классы. Любая программа P, использующая обращения к переменной t: T, продолжает удовлетворять своей спецификации при присвоении t значения любой переменной s: S, с возможностью обратного присваивания нового значения из t в s после выполнения P, тогда и только тогда, когда спецификация класса (тип) S является подтипом спецификации класса (типа)T. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2010, 01:37 |
|
||
|
Выгоды контрактного программирования (design by contract)
|
|||
|---|---|---|---|
|
#18+
tchingiz, мы выяснили, что квадрат не является подтипом прямоугольника. давай теперь решим задачку, как нам наилучшим образом реализовать контракт из задачки: ZyK_BotaN Есть класс прямоугольников, и есть подпрограммы, которые умеют работать только с прямоугольником у которого все стороны равны. Как нам обезопасить использование этих подпрограмм? моим решением, является иерархия представленная выше, но у нее есть огромный недостаток - неизменяемость данных. как решить ту же проблему для изменяемых объектов я не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2010, 01:44 |
|
||
|
|

start [/forum/topic.php?fid=16&gotonew=1&tid=1343356]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
186ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 515ms |

| 0 / 0 |
