Глава 14. Базовые концепции классов____________________________35?

При помощи стендовых испытаний достигается сразу несколько целей. Во-первых, вы получаете простой и удобный метод тестирования ваших классов; тестовый код может быть легко включен и исключен при помощи директив препроцессора. К тому же наличие тестового кода однозначно указывает на то, что класс был реально протестирован, а при необходимости из него можно понять, каким образом с классом следует обращаться.

Пример стенда приведен в листинге 14.4; он наглядно демонстрирует, насколько просто использовать новый класс, достигая при этом тех же результатов.

h03511.jpg

1 // DIR2.CPP — Методы класса на испытательном стенде

2 ttinclude "dir2.h"

3 // определение конструктора

4 DIR_LIST::DIR_LIST( char *fname, int attrib)

5 (

6 done = findfirst( fname, sffblk, attrib) ;

7 } .

8 // Возвращает результат поиска следующего файла,

// соответствующего маске

9 int DIR_LIST::Next()

10 { ' .

11 return ( done = findnext( Sffblk));

12 )

13 // Возвращает имя найденного файла

14 char *DIR_LIST::Cur()

15 (

16 return done ? О : ffblk.rf_name;

17 }•

18 // #undef _DIR2_SCAFFOLD // исключение тестового кода

19 ttdefine _DIR2_SCAFFOLD

20 #ifdef _DIR2_SCAFFOLD

21 ftinclude <iostream.h>

22 void main()

23 {

24 // Насколько компактнее стала программа!

25 for( DIR_LIST list ("*.*"); list.CurO; list.Next() )

26 cout « list.CurO « endl;

27 }

28 #endif

Взгляните на строки 25 и 26. Все необходимое для печати оглавления каталога умещается в этих двух строках.

В строках с 4 по 17 содержатся определения методов класса; код этих методов практически идентичен приведенному в листинге 14.3. Но здесь есть