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


.Узловые классы - часть 3


     (char*)0);

  file_name.ask();

  char* p = file_name.get_string();

  if (p) {

     // используем имя файла

  }

  else {

     // имя файла не задано

  }

  //

}

Подведем итог - узловой класс должен:

[1]        рассчитывать на свои базовые классы как для их реализации, так и для представления сервиса пользователям этих классов;

[2]        представлять более полный интерфейс (т.е. интерфейс с большим числом функций-членов) пользователям, чем базовые классы;

[3]        основывать в первую очередь (но не исключительно) свой общий интерфейс на виртуальных функциях;

[4]        зависеть от всех своих (прямых и косвенных) базовых классов;

[5]        иметь смысл только в контексте своих базовых классов;

[6]        служить базовым классом для построения производных классов;

[7]        воплощаться в объекте.

Не все, но многие, узловые классы будут удовлетворять условиям 1, 2, 6 и 7. Класс, который не удовлетворяет условию 6, походит на конкретный тип и может быть назван конкретным узловым классом. Класс, который не удовлетворяет условию 7, походит на абстрактный тип и может быть назван абстрактным узловым классом. У многих узловых классов есть защищенные члены, чтобы предоставить для производных классов менее ограниченный интерфейс.

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




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



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