Язык программирования C++ от Страуструпа


.Каркас области приложения - часть 2


     }

     catch (filter::Retry& m) {

       cout << m.message() << '\n';

       int i = p->retry();

       if (i) return i;

     }

     catch (...) {

       cout << "Fatal filter error\n";

       return 1;

     }

  }

}

Теперь прикладную программу можно написать так:

class myfilter : public filter {

  istream& is;

  ostream& os;

  char c;

  int nchar;

  public:

     int read() { is.get(c); return is.good(); }

     void compute() { nchar++; };

     int result()

     { os << nchar

          << "characters read\n";

       return 0;

}

 

myfilter(istream& ii, ostream& oo)

  : is(ii), os(oo), nchar(0) { }

};

и вызывать ее следующим образом:

int main()

{

  myfilter f(cin,cout);

  return main_loop(&f);

}

Настоящий каркас, чтобы рассчитывать на применение в реальных задачах, должен создавать более развитые структуры и предоставлять больше полезных функций, чем в нашем простом примере. Как правило, каркас образует дерево узловых классов. Прикладной программист поставляет только классы, служащие листьями в этом многоуровневом дереве, благодаря чему достигается общность между различными прикладными программами и упрощается повторное использование полезных функций, предоставляемых каркасом. Созданию каркаса могут способствовать библиотеки, в которых определяются некоторые полезные классы, например, такие как scrollbar ($$12.2.5) и dialog_box ($$13.4). После определения своих прикладных классов программист может использовать эти классы.




- Начало -  - Назад -  - Вперед -



Книжный магазин