ProvideX V8.20 > Language Reference > 2. Directives
64
DEF CLASS Directive
          Define Object Class
Formats
DEF CLASS class$ [UNIQUE][CREATE label [REQUIRED]][DELETE label[REQUIRED]]
Where:
class$
Class name that will refer to this type of object.
CREATE label Optional keyword with line label for override of ON_CREATE logic
DELETE label Optional keyword with line label for override of ON_DELETE logic.
REQUIRED
Optional keyword to force execution of ON_CREATE/ON_DELETE logic.
UNIQUE
Optional keyword to force a single instance of an object in memory.
Description
Use the DEF CLASS directive in Object Oriented Programming (OOP) to declare the
start of an object definition. It defines the name of the object and it can be used to
override object creation and deletion logic.
class$ specifies the class name that will refer to this type of object. Class names are
case-insensitive and forward/backward slashes are considered equivalent. Duplicate
names are not allowed within the system. An object declared as UNIQUE will have a
single instance created, and any subsequent attempt to create an instance returns the
same object identifier and increments the object reference count by one.
By default, an object can have ON_CREATE and/or ON_DELETE logic defined. You
can override this by specifying new label names for the creation/deletion logic via
CREATE label and DELETE label clauses in the class definition. Normally, object
creation/deletion logic is invoked when an object of this specific class is
created/destroyed. That means, if you have ON_CREATE logic for an object A and
object B inherits it, then the ON_CREATE for object A will not be executed on creation
of object B. You can force creation and/or deletion logic to be executed on
inheritance by including the keyword REQUIRED.
In terms of precedence, if an object inherits another object that has creation logic, the
creation logic for the inherited object is performed first; e.g., if object C inherited
object B which inherited object A, then the ON_CREATE in object A would be
performed first, followed by object B's and finally object C's. (Deletion logic is
performed in the opposite order).
Defining an Object
Fundamentally, an object consolidates data (properties) and functions (methods) into
a single unit. The names assigned to properties and methods within the object are
unique within the object; i.e, different objects can have data elements or functions of
the same name. The names relate only to the object and not to anything else.
This single unit is used in an application to simplify design, coding, and testing. All
references to an object are controlled through a pointer called the object identifier.