Программирование по контракту — различия между версиями
Sergej (обсуждение | вклад) (→Пример) |
Sergej (обсуждение | вклад) (→Пример) |
||
| Строка 16: | Строка 16: | ||
}} | }} | ||
== Пример == | == Пример == | ||
| + | Необходимо гарантировать, что данный класс будет возвращать корректные данные, либо, вообще не будет работать (Исходя из принципа «Мертвые программы не лгут»). | ||
class Time { | class Time { | ||
intHOURS; | intHOURS; | ||
Версия 15:51, 15 июня 2013
Программирование по контракту обеспечивает проверку предусловий и постусловий при выполнении методов классов, пользовательских функций. Также немаловажную роль в правильности написания функций играют инварианты.
Содержание
Предусловие
| Определение: |
| Предусловие - должно быть выполнено до исполнения действия. |
Постусловие
| Определение: |
| Постусловие - должно быть выполнено после исполнения действия. |
Инвариант
| Определение: |
| Инвариант - определяет глобальные свойства некоторого класса, которые должны соблюдаться после его создания на протяжении всего времени жизни. |
Пример
Необходимо гарантировать, что данный класс будет возвращать корректные данные, либо, вообще не будет работать (Исходя из принципа «Мертвые программы не лгут»).
class Time {
intHOURS;
intMINUTES;
intSECONDS;
getHours();
{
return HOURS;
}
getMinutes();
{
return MINUTES;
}
getSeconds()
{
return SECONDS;
}
setHours(newHOURS);
{
HOURS = newHOURS;
}
setMinutes(newMINUTES);
{
MINUTES = newMINUTES;
}
setSeconds(newSECONDS)
{
SECONDS = newSECONDS;
}
}