Пользователям нужна возможность хранить в системе данные произвольной структуры — состоящие из разных, заранее неизвестных разработчикам полей. Для этого были созданы классы.
Класс содержит имена атрибутов (полей) и типы хранимых в атрибутах данных. Классы могут наследовать свойства (наборы атрибутов и типы их данных) один от другого. Класс-потомок содержит свойства класса-родителя и прибавляет к ним свои.
Классы определяют структуру и типы хранимых данных, сами же данные хранятся не в классе, а в объектах, созданных в соответствии со структурой, описанной в классе. Класс можно сравнить с планом дома, а объект — с домом, построенным по этому плану.
Приведем пример. Для хранения сведений о клиентах в системе создан стандартный класс Контрагент. Среди его атрибутов:
- Юридический адрес;
- Фактический адрес;
- Почтовый адрес и т. д.
Это — данные, которые понадобятся для работы с любым клиентом, будь то физическое или юридическое лицо. Но о юридическом лице нужно сохранять больше данных, чем о физическом. Поэтому для юридических лиц создан свой класс, наследующий классу Контрагент: Юридическое лицо. В него входят все атрибуты класса-родителя, и сверх того — новые:
- Полное название;
- Краткое название;
- Руководитель...
Таким же образом класс Юридическое лицо расширяется классом Юридическое лицо РФ:
- КПП;
- ОГРН...
Атрибутов системного класса может оказаться недостаточно для хранения данных о клиенте. В этом случае администратор создаёт новый класс, наследующий свойства, например, Юридического лица РФ. К унаследованным свойствам прибавляются новые: