| Directives |
|
| Formats |
|
|||||||||||||||||||
| 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. The value of 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. In order to use an object, you must first define its characteristics. Each object is defined with a DEF CLASS statement and a combination of ProvideX OOP directives. DEF CLASS is followed immediately by the directives that describe the object.
The definition begins with the DEF CLASS directive on statement 0010 and concludes with the END DEFdirective on statement 0080. |
|||||||||||||||||||
| Dynamic Property Creation | Dynamic property creation is a +PxPlus Exclusive (build 9181) If the ACCEPT PROPERTIES clause is declared on the class definition, external programs can dynamically create properties within any instance of the class merely by assigning the property a value. Once a property is dynamically created, it will be present in the property list returned in the '* property list string. For example:
In addition, any instance of an object can add properties to itself using the ADD PROPERTY directive. |
|||||||||||||||||||
| Example | The
following is an example of the definition of the object
"Customer":
|
|||||||||||||||||||
| See Also | Object
Oriented Programming DROP CLASS Delete Class Definition DROP OBJECT Delete Object FUNCTION Declare Object Method LIKE Inherit Properties LOAD CLASS Pre-Load Class Definition LOCAL Designation of Local Data PROGRAM Create/Assign Program File PROPERTY Declare Object Properties RENAME CLASS Change Name of Class STATIC Add Local Properties at Runtime NEW( ) Function REF( ) Function |
|||||||||||||||||||