Программирование по контракту — различия между версиями
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
Программирование по контракту обеспечивает проверку предусловий и постусловий при выполнении методов классов, пользовательских функций. Также немаловажную роль в правильности написания функций играют инварианты.
Содержание
Предусловие
| Определение: |
| Предусловие - должно быть выполнено до исполнения действия. |
Постусловие
| Определение: |
| Постусловие - должно быть выполнено после исполнения действия. |
Инвариант
| Определение: |
| Инвариант - определяет глобальные свойства некоторого класса, которые должны соблюдаться после его создания на протяжении всего времени жизни. |
Пример