Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 7 8 9 [10]      все
 Re: Выгоды контрактного программирования (design by contract)  [new]
ViPRos
Member

Откуда:
Сообщений: 9380
ZyK_BotaN,

к сжалению, забыл топологию вскяие там морфизмы и т.д
30 окт 10, 19:19    [9706134]     Ответить | Цитировать Сообщить модератору
 Re: Выгоды контрактного программирования (design by contract)  [new]
tchingiz
Member

Откуда:
Сообщений: 31437
это не топология, а теория категорий.






пысы
ну, у Сибилева и ЛаТех, шоб он был здоров.
Поехать мозгом можно, пока нарисуешь
31 окт 10, 00:39    [9706902]     Ответить | Цитировать Сообщить модератору
 Re: Выгоды контрактного программирования (design by contract)  [new]
tchingiz
Member

Откуда:
Сообщений: 31437


К сообщению приложен файл. Размер - 0Kb
31 окт 10, 00:52    [9706919]     Ответить | Цитировать Сообщить модератору
 Re: Выгоды контрактного программирования (design by contract)  [new]
tchingiz
Member

Откуда:
Сообщений: 31437
ZyK_BotaN
tchingiz

1
на месте прямоугольника, квадрат не должен работать в точь-в-точь как прямоугольник.

может все же не обязан, но все же может?

может, в случае если будет идеалом.
при переходе от прямоугольников к квадратам произошло сужение домена класса, а должно быть расширение.
Вот приблизительно так происходило расширение доменов классов в цепочке:

1
множество натуральных. есть функция следующий и принцип матиндукции;
2
полугруппа натуральных. добавлена операция сложения и сохранена аксиома, что есть первый элемент (отнимание не замкнуто);
3
группа целых. Добавлена операция взятие обратного по сложению. Отброшена аксиома, что есть первый элемент;
4
кольцо целых. Добавлена операция умножение. Сохранена аксиома, что единица не представима
в сумму двух одинаковых элементов домена;
5
поле рациональных. Добавлена операция взятия обратного по умножению, отброшена аксиома, что единица не представима в виде двух одинаковых элементов домена;

--
1 2 3 4 5 - каждый N - й класс, является подклассом предыдушего N-1.
Причем на каждом шаге домен класса или расширяется или остается тем же самым.

тип 3 не является подтипом 2.
тип 5 не является подтипом 4
31 окт 10, 01:29    [9706997]     Ответить | Цитировать Сообщить модератору
 Re: Выгоды контрактного программирования (design by contract)  [new]
tchingiz
Member

Откуда:
Сообщений: 31437
egorych
tchingiz, вот да, именно это я и пытался донести нашему общему другу ZiK_BotaN.

PS используя его технику легко отнаследовать квадрат от круга, например.. Но это же абсурд
PSS tchigiz, красивенько получилось :-))

на этой радостной ноте пишем обобщение принципа подстановки Лисков
до критерия подстановки



автор


Пусть T и S некоторые классы. Любая программа P, использующая
обращения к переменной t: T, продолжает удовлетворять своей
спецификации при присвоении t значения любой переменной s: S,
с возможностью обратного присваивания нового значения из t в s после выполнения P,
тогда и только тогда, когда спецификация класса (тип) S является подтипом спецификации класса (типа)T.

31 окт 10, 01:37    [9707022]     Ответить | Цитировать Сообщить модератору
 Re: Выгоды контрактного программирования (design by contract)  [new]
ZyK_BotaN
Member

Откуда: Новгород-Северский
Сообщений: 102997
tchingiz,

мы выяснили, что квадрат не является подтипом прямоугольника.
давай теперь решим задачку, как нам наилучшим образом реализовать контракт из задачки:

ZyK_BotaN

Есть класс прямоугольников, и есть подпрограммы, которые умеют работать только с прямоугольником у которого все стороны равны. Как нам обезопасить использование этих подпрограмм?

моим решением, является иерархия представленная выше, но у нее есть огромный недостаток - неизменяемость данных. как решить ту же проблему для изменяемых объектов я не знаю.
31 окт 10, 01:44    [9707039]     Ответить | Цитировать Сообщить модератору
 Re: Выгоды контрактного программирования (design by contract)  [new]
tchingiz
Member

Откуда:
Сообщений: 31437
я все сразу не могу делать.
Дальнейшее обсуждение продолжается в
https://www.sql.ru/forum/actualthread.aspx?bid=24&tid=802380&pg=-1

чтобы критерий подставновки не утонул в ерунде
31 окт 10, 01:52    [9707059]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 7 8 9 [10]      все
Все форумы / Программирование Ответить