Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Контрактное программирование в Java. / 7 сообщений из 7, страница 1 из 1
02.05.2016, 14:17
    #39228388
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контрактное программирование в Java.
Применяется ли в Java контракное программирование ( design by сontract ), и если да, то насколько широко?
Варианты:
1). Использование конструкции assert .
2). Использование библиотек или фреймворков, например SpringContracts .
3). Можно ли заменить контрактное программирование тестированием? Если я правильно понимаю - контрактное программирование применяется для тестирования и проверки состояния данных внутри методов на этапе разработки.

В готовом проекте механизм применяемый для контрактного программирования отключается ?

ps. Прочитал про design by contract обзорно, возможно где то чего то недопонял, интересует нужно ли копать дальше по этой теме, будет ли это полезным. Буду рад любой полезной информации.
...
Рейтинг: 0 / 0
03.05.2016, 05:57
    #39228524
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контрактное программирование в Java.
faustgreenЕсли я правильно понимаю - контрактное программирование применяется для тестирования и проверки состояния данных внутри методов на этапе разработки. DbC - В общем выглядит, как попытка сделать валидацию входных данных на "стороне"
от основного кода (метода/процедуры/и т.д.). По принципу - "проверили один раз и хватит" .
имхо

P.S.
Рекомендую также посмотреть в сторону АОП
...
Рейтинг: 0 / 0
03.05.2016, 17:01
    #39228672
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контрактное программирование в Java.
faustgreen3). Можно ли заменить контрактное программирование тестированием? Если я правильно понимаю - контрактное программирование применяется для тестирования и проверки состояния данных внутри методов на этапе разработки.

requie остаётся всегда, ensure удаляется в прод-коде. инвариант- не помню.

Т.к. контракт наследуется, то я не знаю, как это сделать в java. Разве что сделать специальные аннотации (в принципе, ничего запредельно сложного нет, но есть где душе развернуться).

PS: АОП не замена .
...
Рейтинг: 0 / 0
03.05.2016, 17:37
    #39228683
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контрактное программирование в Java.
Alexey TominАОП не замена .DbC - это частный случай применения АОП.Alexey TominТ.к. контракт наследуется, то я не знаю, как это сделать в java.Решается при помощи "сквозной" функциональности
...
Рейтинг: 0 / 0
03.05.2016, 20:35
    #39228722
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контрактное программирование в Java.
UsmanAlexey TominАОП не замена .DbC - это частный случай применения АОП.Alexey TominТ.к. контракт наследуется, то я не знаю, как это сделать в java.Решается при помощи "сквозной" функциональности

Можно пример "require or"?
Т.е. когда при попытке в наследнике ужесточить контракт код не компилируется?
...
Рейтинг: 0 / 0
04.05.2016, 02:14
    #39228767
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контрактное программирование в Java.
Alexey Tomin,

Contract enforcement with AOP
Alexey TominТ.е. когда при попытке в наследнике ужесточить контракт код не компилируется?Осталось только запилить поддержку аннотаций (:
...
Рейтинг: 0 / 0
04.05.2016, 09:00
    #39228818
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контрактное программирование в Java.
UsmanAlexey Tomin,

Contract enforcement with AOP
Alexey TominТ.е. когда при попытке в наследнике ужесточить контракт код не компилируется?Осталось только запилить поддержку аннотаций (:

Не вижу там поддержку requie or.

И вообще не понимаю, как сделать так, чтобы возникала ошибка КОМПИЛЯЦИИ
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class V1{
  @Require("x>=0") 
  public getY(int x) { ... }
}

public class V2 extends V1{
  @Require("x>=1") <-- Это не должно проходить компиляцию. Или требовать @RequireOr(...), а @Require не допускать вообще
  public getY(int x) { ... }
}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Контрактное программирование в Java. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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