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