As described in the previous section, ABL supports two basic kinds of user-defined objects—objects based on procedures and objects based on classes. Although you use much of the same syntax to program each kind of object, each of these object categories supports an entirely different programming model: