Предназначение понятия класса заключается в том,
чтобы предоставить инструмент для образования новых
типов, таких же удобных в обращении, как и встроенные
типы. В идеальном случае новый тип способом применения не должен отличаться от встроенных типов, толь-
ко способом создания.
Тип является конкретным представлением некоторой концепции. К примеру, включающийся в C++ тип
float с его операциями +, –, * и т. д. обеспечивает ограниченную, но конкретную версию математического понятия действительного числа. Новый тип образуется
для того, чтобы дать специальное и конкретное описание понятия, которому ничто прямо и очевидно среди
встроенных типов не отвечает.
К примеру, в программе, работающей с телефоном,
можно было бы создать тип trunk_module (элемент линии), а в программе обработки текстов — тип list_of_paragraphs (список параграфов). Обычно программу, в которой образуются типы, хорошо отвечающие понятиям
приложения, понять легче, чем ту, в которой это не происходит. Хорошо выбранные типы, которые определяются авторами программы, делают программу более
четкой и короткой. Это также дает возможность компилятору обнаруживать недопустимые применения
объектов, которые в противном случае останутся ненайденными до тестирования программы.
В определении нового типа основной идеей является отделить несущественные подробности реализации
(формат данных, которые применяются для хранения
объекта типа) от качеств, существенных для его правильного использования. Подобное разделение
можно описать так, что работа со структурой данных и внутренними административными подпрограммами производится через специальный интерфейс.
Класс представляет собой определяемый пользователем тип. Данный раздел знакомит с основными
средствами определения класса, создания объекта
класса, работы с такими объектами и, наконец, уничтожения таких объектов после использования.
Явной связи между функциями и типом данных не
существует. Такую связь можно определить, описав
функции как члены:
struct date {
int month, day, year;
void set(int, int, int);
void get(int*, int*, int*);
void next();
void print();
};
Функции, описанные данным способом, называются функциями-членами и могут вызываться только для
специальной переменной некоторого типа с применением стандартного синтаксиса для доступа к членам
структуры.