Изменения

Перейти к: навигация, поиск

Программирование по контракту

7 байт добавлено, 22:20, 25 сентября 2013
Пример
Необходимо гарантировать, что функции данного класса будут возвращать корректные данные, либо, вообще не будут работать.
class Time {
int HOURShours; int MINUTESminutes; int SECONDSseconds;
int getHours();
{
return HOURShours;
}
int getMinutes();
{
return MINUTESminutes;
}
int getSeconds()
{
return SECONDSseconds;
}
void setHours(int newHOURS);
}
}
Предусловие: (например для getHours() Hours ) hours >= 0 && Hours hours < 24.
Постусловие: возвращенное значение будет являться текущим часом.
==== Решение 1 ====
Выбрасывать исключение. Имеет недостатки: неочевидность проверки, необходимость писать кучу кода вручную.
int getHours(){
if (HOURShours <0 ||HOURShours >23)
throw GREAT_Time_Exception;
return HOURShours;
}
Анонимный участник

Навигация