Defining and Using Classes Basic Ideas in Class Programming Objects and Properties Methods Class Constants (Parameters) Class Definitions and Types Inheritance Classes as Containers of Methods Abstract Classes See Also Defining Classes Introduction to Terminology Kinds of Classes Kinds of Class Members Kinds of Properties Defining a Class: The Basics Naming Conventions Inheritance Introduction to Compiler Keywords See Also Compiling and Deploying Classes Compiling Programmatically Class Compiler Basics Class Compiler Notes Putting Classes in Deployed Mode See Also Creating Class Documentation Introduction to the Class Reference Creating Documentation to Include in the Class Reference Using HTML Markup in Class Documentation See Also Package Options Overview of Packages Package Names Defining Packages Package Mapping Package Use When Referring to Classes Importing Packages See Also Defining and Referring to Class Parameters Introduction to Class Parameters Defining Class Parameters Parameter Types and Values Referring to Parameters of a Class See Also Defining and Calling Methods Introduction to Methods Defining Methods Specifying Method Arguments: Basics Indicating How Arguments Are to Be Passed Specifying a Variable Number of Arguments Returning a Value Restricting Access by Using Privilege Checks Specifying the Implementation Language Types of Methods (CodeMode Options) Projecting a Method As an SQL Stored Procedure Calling Class Methods Casting a Method Overriding an Inherited Method See Also Working with Registered Objects Introduction to Object Classes OREF Basics Creating New Objects Viewing Object Contents Introduction to Dot Syntax Validating Objects Determining an Object Type Cloning Objects Referring to Properties of an Instance Calling Methods of an Instance Getting the Class Name from an Instance $this Variable (Current Instance) i%PropertyName (Instance Variables) See Also Introduction to Persistent Objects Persistent Classes Introduction to the Default SQL Projection Identifiers for Saved Objects: ID and OID Class Members Specific to Persistent Classes Other Class Members See Also Persistent Objects and Extents Introduction to Extents Extent Definitions Extent Indices Extent Queries See Also Persistent Objects and Globals Standard Global Names Hashed Global Names User-Defined Global Names Columnar Storage Globals Redefining Global Names See Also Working with Persistent Objects Saving Objects Testing the Existence of Saved Objects Opening Saved Objects Swizzling Reading Stored Values Deleting Saved Objects Accessing Object Identifiers See Also Object Concurrency Options Why Specify Concurrency? Options Concurrency Values Concurrency and Swizzled Objects Version Checking (Alternative to Concurrency Argument) See Also Defining Persistent Classes Defining a Persistent Class Projection of Packages to Schemas Specifying the Table Name for a Persistent Class Storage Definitions and Storage Classes Schema Evolution Resetting the Storage Definition Controlling How IDs Are Generated Controlling the SQL Projection of Subclasses Redefining a Persistent Class That Has Stored Data See Also Defining and Using Literal Properties Defining Literal Properties Defining an Initial Expression for a Property Defining a Property As Required Defining a Computed Property Defining a Multidimensional Property Defining Enumerated Properties Specifying Values for Literal Properties Using Property Methods Controlling the SQL Projection of Literal Properties See Also Common Data Type Classes Introduction Data Type Classes Grouped by SqlCategory Data Type Classes Grouped by OdbcType Data Type Classes Grouped by ClientDataType See Also Common Property Parameters Introduction Core Property Parameters Class-Specific Property Parameters Common Parameters Parameters for XML and SOAP Less Common Parameters See Also Working with Collections Defining Collections Working with List Collections Working with Array Collections Copying Collection Data Controlling the SQL Projection of Collection Properties See Also Working with Streams Introduction to Stream Classes Defining Stream Properties Using the Stream Interface Stream Classes for Use with gzip Files Projection of Stream Properties to SQL and ODBC Stream Compression See Also Defining and Using Object-Valued Properties Defining Object-Valued Properties Introduction to Serial Objects Possible Combinations of Objects Specifying the Value of an Object Property Saving Changes SQL Projection of Object-Valued Properties See Also Defining and Using Relationships Overview of Relationships Defining a Relationship Examples Connecting Objects Removing a Relationship Deleting Objects from Relationships Working with Relationships SQL Projection of Relationships Creating Many-to-Many Relationships See Also Other Options for Persistent Classes Defining a Sharded Class Defining a Read-Only Class Using Columnar Storage Adding Indexes Adding Foreign Keys Adding Triggers Referring to Fields from ObjectScript Adding Row-Level Security See Also Defining Method and Trigger Generators Introduction Basics How Generators Work Values Available to Method Generators Values Available to Trigger Generators Defining Method Generators Generators and INT Code Effect on Subclasses See Also Defining and Using Class Queries Introduction to Class Queries Using Class Queries Defining Basic Class Queries Defining Custom Class Queries Defining Parameters for Custom Queries When to Use Custom Queries SQL Cursors and Class Queries See Also Defining and Using XData Blocks Basics XML Example JSON Example YAML Example Python %import Example Defining Class Projections Introduction Adding a Projection to a Class Creating a New Projection Class See Also Defining Callback Methods Callbacks and Triggers %OnAddToSaveSet() %OnAfterBuildIndices() %OnAfterDelete() %OnAfterPurgeIndices() %OnAfterSave() %OnBeforeBuildIndices() %OnBeforePurgeIndices() %OnBeforeSave() %OnClose() %OnConstructClone() %OnDelete() %OnDeleteFinally() %OnNew() %OnOpen() %OnOpenFinally() %OnReload() %OnRollBack() %OnSaveFinally() %OnValidateObject() %OnDetermineClass() See Also Using and Overriding Property Methods Introduction to Property Methods Property Accessors for Literal Properties Property Accessors for Object-Valued Properties Overriding a Property Getter Method Overriding a Property Setter Method Defining an Object-Valued Property with a Custom Accessor Method Defining Data Type Classes Overview of Data Type Classes Defining a Data Type Class Defining Class Methods in Data Type Classes Defining Instance Methods in Data Type Classes See Also Implementing Dynamic Dispatch Introduction to Dynamic Dispatch Content of Methods Implementing Dynamic Dispatch The Dynamic Dispatch Methods See Also Object-Specific ObjectScript Features Relative Dot Syntax (..) ##class Syntax $this Syntax ##super Syntax $CLASSNAME and Other Dynamic Access Functions i%<PropertyName> Syntax ..#<Parameter> Syntax Using the Populate Utility Data Population Basics Default Behavior Specifying the POPSPEC Parameter Basing One Generated Property on Another How %Populate Works Custom Populate Actions and the OnPopulate() Method Alternative Approach: Creating a Utility Method Using the %Dictionary Classes Introduction to Class Definition Classes Browsing Class Definitions Modifying Class Definitions See Also Using the Object Synchronization Feature Introduction to Object Synchronization Modifying the Classes to Support Synchronization Performing the Synchronization Translating Between GUIDs and OIDs Manually Updating a SyncTime Table