Классы позволяют расширять структуру данных без изменения таблиц базы данных и привлечения разработчиков. Для каждого вида объектов создается свой класс.
Класс — это шаблон, в соответствии с которым в систему заносятся записи об объектах. Перед тем как создать класс, необходимо определить атрибуты объектов, значения которых будут храниться в базе данных. Атрибуты объектов добавляются в созданный для этого вида объектов класс. Атрибуты класса выносятся на форму интерфейсного объекта, связанного с этим классом, и при создании новой записи об объекте в них заносятся значения.
Классы могут объединяться в иерархическую структуру. Подклассы наследуют все атрибуты родительского класса, что позволяет настроить одинаковые атрибуты один раз.
Например, фирме, работающей с физическими лицами и юридическими лицами, необходимо собирать, хранить и обрабатывать данные о них.
Для фирмы они будут являться контрагентами и обладать общим набором характеристик, таким как ИНН, фактический адрес, юридический адрес, наименование и так далее. Но физические лица обладают характеристиками, которых нет у юридических лиц, такими как фамилия, имя, отчество, паспортные данные, а юридические — полным и кратким названием организации и т.д.
Для контрагентов создается общий класс Контрагент, в котором будут перечислены атрибуты, имеющиеся и у физических лиц, и у юридических. Для юридических и физических лиц создаются два класса — потомки класса Контрагент, которые унаследуют все атрибуты родительского класса, и в которые добавляются атрибуты, относящиеся только к этим классам. Все объекты системы — это экземпляры какого-либо класса. Значения атрибутов объектов хранятся в отдельной таблице атрибутов (модель EAV).
На форму могут быть вынесены не все атрибуты, а только их часть, что позволяет настраивать разное отображение данных для разных категорий пользователей. Например, менеджерам по продажам доступны данные о реквизитах контрагентов, а для операторов колл-центра эта информация скрыта.