Тема 1. Классы

Класс – это набор данных плюс набор функций для работы с этими данными. Классы моделирует объекты, которые встречаются в программировании, математике и т.п. Класс или объект класса можно представлять как нечто целое, имеющее внутреннюю структуру.

Данные класса, также, как и данные структур называются полями. Функции, входящие в состав класса, называются методами.

Класс позволяет скрыть от пользователя детали внутреннего устройства. Методы класса позволяют работать с объектами класса, не вникая в детали его внутреннего устройства. Так по существующим правилам создания классов, у пользователя не должно быть прямого доступа к полям класса. Вместо этого следует использовать set- и get-методы, которые часто называют "сеттерами и геттерами". Даже если такие методы состоят из одной строки (return имя_поля), это правильно потому, что как только появятся новые требования к работе с полем, которые нельзя реализовать без метода, то потребуется изменить код в одном месте и не переписывать весь класс.

Описание класса в C++ состоит из двух частей: описание интерфейса и реализация методов класса. Традиционно описание интерфейса класса помещается в заголовочный файл (h-файл), имя такого файла имеет расширение ".h". Описание интерфейса содержит описание переменных-членов класса и описание прототипов методов. Впрочем, некоторые простые методы могут быть реализованы непосредственно в h-файле; такую реализацию называют "внутристроковой" или "инлайновой" (inline).

При использовании инлайновых методов и функций их текст непосредственно вставляется в то место, где он используется. Объем кода при этом увеличивается (один и тот же фрагмент повторяется многократно при каждом использовании), зато программа получается значительно более быстрой: во первых, не используется механизм вызова функций; во вторых, и самое главное, – компилятор C++ получает возможность оптимизации кода, которая не ограничивается рамками одного метода. Реализация объемных (не инлайновых) методов класса выносится из заголовочного файла в файл реализации, который называют C++ файлом.

Члены класса – это переменные, содержащиеся внутри каждого объекта класса, как бы входящие в "конструкцию" класса. Класс в C++ отличается от структуры только способом создания и тем фактом, что все поля структур по умолчанию считаются общедоступными (public), а все поля класса по умолчанию считаются приватными (private). То есть в структурах по умолчанию доступ ко всем полям разрешен, а в классах – запрещен.

Кроме того, у классов обязаны быть конструкоры и деструкторы, пусть даже пустые.