Бьерн Страуструп.
Язык программирования С++
336
В
этой главе вводится понятие обширного интерфейса ($$13.6), чтобы выделить некоторый общий
случай всех этих видов классов. С помощью него определяется понятие каркаса области приложения
($$13.7).
Здесь рассматриваются прежде всего классы, относящиеся строго к одному из перечисленных видов,
хотя, конечно, используются классы и гибридного вида. Но использование класса гибридного вида
должно быть результатом осознанного решения, возникшего при оценке плюсов и минусов различных
видов, а не результатом пагубного стремления уклониться от выбора вида класса (слишком часто
"отложим пока выбор" означает просто нежелание думать). Неискушенным разработчикам библиотеки
лучше всего держаться подальше от классов гибридного вида. Им можно посоветовать следовать
стилю программирования той из
существующих библиотек, которая обладает возможностями,
необходимыми для проектируемой библиотеки. Отважиться на создание библиотеки общего
назначения может только искушенный программист, и каждый создатель библиотеки впоследствии
будет "осужден" на долгие годы использования, документирования и сопровождения своего
собственного создания.
В языке С++ используются статические типы. Однако, иногда возникает необходимость в дополнение к
возможностям, непосредственно предоставляемым виртуальными функциями, получать динамическую
информацию о типах. Как это сделать, описано в $$13.5. Наконец, перед всякой нетривиальной
библиотекой встает задача управления памятью. Приемы ее решения рассматриваются в $$13.10.
Естественно, в этой главе невозможно рассмотреть все методы, оказавшиеся полезными при создании
библиотеки. Поэтому можно отослать к другим местам книги, где рассмотрены следующие вопросы:
работа с ошибками и устойчивость к ошибкам ($$9.8), использование
функциональных объектов и
обратных вызовов ($$10.4.2 и $$9.4.3) , использование шаблонов типа для построения классов ($$8.4).
Многие темы этой главы связаны с классами, являющимися контейнерами, (например, массивы и
списки). Конечно, такие контейнерные классы являются шаблонами типа (как было сказано в $$1.и 4.3
$$8). Но здесь для упрощения изложения в примерах используются классы, содержащие указатели на
объекты типа класс. Чтобы получить настоящую программу, надо использовать шаблоны типа, как
показано в главе 8.
Достарыңызбен бөлісу: