1. Объявите все переменные-члены класса как
закрытые.
2.
Каждую из основных
операций абстрактного типа (класса) определите как открытую функцию-член
класса, дружественную функцию, обычную функцию или перегруженный оператор.
Объедините определение класса, объявления функций и операторов в одну группу,
которая вместе с пояснительными комментариями называется
интерфейсом абстрактного типа. Комментарии в определении класса и
объявлениях функций и операторов должны содержать описания того, как
используется каждая функция и оператор.
3.
Сделайте реализацию
основных операций над абстрактным типом данных недоступной использующему ее
программисту. Реализация состоит из определений функций и перегруженных
операторов, а также определений вспомогательных функций и других дополнительных
элементов.
Чтобы
обеспечить максимально надежное соблюдение этих правил в С++, лучше всего
поместить интерфейс и реализацию абстрактного типа в отдельные файлы. Как
нетрудно предположить, файл, в котором находится интерфейс, называется файлом интерфейса,
а файл, содержащий реализацию,
именуется файлом реализации. Детали процесса создания,
компиляции и использования этих двух файлов в разных версиях С++ могут немного
различаться, но общая схема всегда одинакова. В частности, содержимое файлов во
всех системах одинаково, а команды, используемые для их компиляции и
компоновки, разные. Процесс разделения интерфейса и реализации абстрактного
типа данных на два файла подробно описан в приведенном ниже примере.