DataFlex classes can be defined to contain nested objects of any other class. Each time an instance of the new class is created the nested objects are also created. Nested objects are useful tools for defining classes that have sophisticated behavior and data storage requirements.
Nested objects that are part of a class's definition become private attributes of the class. That is, they are part of the class's internal design. Whenever an object is destroyed any nested objects it defines are also automatically destroyed.
Nested objects are declared in the class's constructor method (Construct_Object). Below is an example class definition that contains a nested object:
Class cStorageForm is a Form
Procedure Construct_Object
Forward Send Construct_Object
Object oStorageArray is an Array
End_Object
End_Procedure
Procedure DoAppendValue
Integer iItemCount
String sFormValue
Get Value of Self 0 To sFormValue
Get Item_Count of oStorageArray To iItemCount
Set Array_Value of oStorageArray iItemCount To sFormValue
End_Procedure
Procedure DoClearStorage
Send Delete_Data To oStorageArray
End_Procedure
Function StorageValue Integer iItem Returns String
String sReturnValue
Get String_Value of oStorageArray iItem To sReturnValue
Function_Return sReturnValue
End_Function
End_Class
The above example defines a new Form class cStorageForm that contains a nested array object. Three methods are defined as an interface to the nested array. DoAppendValue retrieves the Form object's value and appends it to the nested array; DoClearStorage clears the data in the nested array and StorageValue returns an indexed value from the array.
The methods defined in this example call methods from the current object and from the nested array object. For the purpose of clarity the Self keyword has been used when calling a method of the current object. However, this is redundant since the current object is the default recipient of any message.