10. Обобщение — мать учения

// обычное перемещение:

// если карта берется со стены, пристенка // или из вспомогательного ряда:

if( (Line == О I Line == 2 I Line == 4) &&

// и кладется в непустой склад IsCards(3,pos) &&

// и на карту такой же масти

GetCard(Line,Pos,true).GetSuitO == GetCardO.pos.true).GetSuitO &&

// и меньшую на 1 по значению OnBig(Line,Pos,3,pos,false) )

// то перемещение допустимо return true;

}

// во всех остальных случаях перемещение недопустимо return .false;

}

Нисходящее программирование

В методе CanMoveTo() не определен метод OnBig(), проверяющий, в строгом ли порядке возрастания или убывания значений карты кладутся друг на друга. Немногим ранее, когда писался метод реакции на щелчок мыши, также не был определен CanMoveToQ, он только упоминался, а реализован был позже.

h02221.jpg

Дело в том, что подобным способом разрабатывать программы гораздо проще. Сначала ее логика проектируется на самом высоком уровне абстракций, без привязки к конкретным конструкциям Си++, потом происходит детализация различных моментов, некоторые места, требующие особой

222