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
- Features Specific to Persistent Classes
- Introduction to the Default SQL Projection
- The Object ID
- The Object OID
- See Also
- Storage Definitions
- Introduction to Storage Definitions
- Storage Classes
- Schema Evolution
- Resetting a Storage Definition
- Redefining a Persistent Class That Has Stored Data
- See Also
- Persistent Objects and Storage Globals
- Standard Global Names
- Hashed Global Names
- User-Defined Global Names
- Redefining Global Names
- See Also
- Persistent Objects and Extents
- 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
- Controlling How IDs Are Generated
- Controlling the SQL Projection of Subclasses
- 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
- Available Property Parameters, Listed by Data Type Class
- Property Parameter Reference
- See Also
- Working with Collections
- Introduction to Collections
- Defining Collection Properties
- Defining Standalone Collections
- Working with List Collections
- Working with Array Collections
- Copying Collection Data
- See Also
- Storage and SQL Projection of Collection Properties
- Default Storage and Projection of List Properties
- Default Storage and Projection of Array Properties
- Controlling Storage of Collection Properties
- Controlling the SQL Projection
- Controlling the Name of the Projected Child Table
- 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
- Parameters of the Class Query
- Example
- Maximum Length of String Parameters
- See Also
- Defining Custom Class Queries
- Defining Custom Class Queries
- Defining the Methods
- Defining Parameters for Custom Queries
- When to Use Custom Queries
- SQL Cursors and Class Queries
- See Also
- Defining and Using XData Blocks
- Defining Class Projections
- 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