Экземпляр объекта — это переменная объектного типа. Время жизни и видимость объектов зависят от вида и места их описания и подчиняются общим правилам ПАСКАЛЯ. Экземпляры объектов можно создавать в статической или динамической памяти:
var Vasia: monster; {описывается статический объект} pm: '?'monster; {описывается указатель на объект}.
new (pm); {создается динамический объект}.
Можно определять массивы объектов или указателей на объекты и создавать из них динамические структуры данных. Если объектный тип описан в модуле, для создания в программе переменных этого типа следует подключить модуль в разделе uses: uses graph, monsters;
Доступ к элементам объекта осуществляется либо с использованием составного имени, либо с помощью оператора with: Vasia. erase;
with pmA do begin init (100, 100, 30); draw; end;
Если объект описан в модуле, то получить доступ к значениям полей со спецификатором private в программе можно только через обращение к соответствующим методам.
При создании каждого объекта выделяется память, достаточная для хранения всех его полей. Методы объекта хранятся в одном экземпляре. Для того чтобы методу было известно, с данными какого экземпляра объекта он работает, при вызове ему в неявном виде передается параметр self, определяющий место расположения данных этого объекта.
Объекты одного типа можно присваивать друг другу, при этом выполняется поэлементное копирование всех полей. Кроме того, в ПАСКАЛЕ определены правила расширенной совместимости типов объектов. Они рассмотрены далее. Все остальные действия выполняются над отдельными полями объектов.
Управлять большим количеством разрозненных объектов сложно. С этим можно справиться путем упорядочивания и ранжирования объектов, т. е. объединяя общие для нескольких объектов свойства в одном объекте и используя этот объект в качестве базового.