Программирование по контракту — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 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

Программирование по контракту обеспечивает проверку предусловий и постусловий при выполнении методов классов, пользовательских функций. Также немаловажную роль в правильности написания функций играют инварианты.

Предусловие

Определение:
Предусловие - должно быть выполнено до исполнения действия.

Постусловие

Определение:
Постусловие - должно быть выполнено после исполнения действия.

Инвариант

Определение:
Инвариант - определяет глобальные свойства некоторого класса, которые должны соблюдаться после его создания на протяжении всего времени жизни.

Пример

[math]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;
    }
}[/math]