input = StrToInt( InputForm->Input->Text ) ;

// проверить его на допустимый диапазон:

if( input >= 50 && input <= 1000 ) }

Из констант — в переменные

Но где сохранить новое значение? Ведь в качестве игрового порога используется константа GAME_FINISH_SCORE, а значения констант менять нельзя.

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

h01651.jpg

Трудоемкость проекта можно оценить формально. Для этого есть специальные технологии (например, метод функциональных точек), однако они сложны в использовании и применяются в основном при создании больших программных комплексов. Но далеко не всегда исходные требования удается сформулировать с самого начала. Часто бывает так, что при создании заказной программы у заказчика по ходу работы возникают новые пожелания, подчас требующие почти полной переделки всей внутренней структуры приложения. Люди, незнакомые с программированием, как правило, не способны оценить трудоемкость тех или иных модификаций готового продукта. Некоторые, на их взгляд, несущественные дополнения на самом деле требуют огромного труда и наоборот, самые сложные изменения пользовательского интерфейса могут потребовать всего лишь изменения нескольких свойств в Инспекторе объектов.

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

Наилучший в этой ситуации способ — сделать переменную из константы GAME_FINISH_SCORE. Для этого ее описание в файле Game.h надо убрать, а в класс TReferee добавить новую переменную:

int GAME_FINISH_SCORE;

Ее название, выглядящее как название константы, менять не надо, потому что оно встречается в разных местах программы. Надо только проинициа-лизировать ее начальное значение — создать конструктор TReferee и в его реализации записать один оператор:

165