Classes and class hierarchies
C.3
Представляйте различие между интерфейсом и реализацией с помощью класса
Причина
Явное различие между интерфейсом и реализацией улучшает читаемость и упрощает сопровождение.
Пример
class Date {
public:
Date();
// проверить, что {yy, mm, dd} — допустимая дата, и инициализировать
Date(int yy, Month mm, char dd);
int day() const;
Month month() const;
// ...
private:
// ... некоторое представление ...
};
Например, теперь мы можем изменить представление Date, не затрагивая его пользователей (перекомпиляция вероятна, но не изменение кода).
Примечание
Использование класса таким образом для представления различия между интерфейсом и реализацией, конечно, не единственный способ. Например, мы можем использовать набор объявлений отдельных функций в пространстве имён, абстрактный базовый класс или шаблон функции с концепциями для представления интерфейса. Наиболее важный вопрос — явно различать интерфейс и «детали» его реализации. В идеале, и как правило, интерфейс гораздо более стабилен, чем его реализация(и).
Контроль
???