ABL originated as a procedure-based language. In later releases, extensions were added that allow you to use an object-oriented development model, in which the principal structure is a class rather than a persistent procedure. The object-oriented model includes support for such features as polymorphism, delegation, interfaces, and overloading. Basic object-oriented resources in Progress Developer Studio for OpenEdge are:
ABL Class
ABL Interface
Note: GUI for .NET applications use object-oriented ABL code, but Progress Developer Studio for OpenEdge provides specialized tools and menu options for programming them. Therefore, this discussion treats GUI for .NET code as a separate category from basic object-oriented code.
Class-based objects can coexist in the same application and communicate with procedure-based objects (persistent procedures). You can use most ABL syntax within classes, and for the most part, you can use it in just the same way as in procedural code.
Class-based programming supports a simplified program structure that can be easier to maintain than procedural code and can facilitate reuse of code among objects. The run-time nature of procedural coding, on the other hand, generally supports a dynamic coding model more easily than does class-based programming. Because you can mix procedures and class-based objects in the same application, you can choose the model that best serves a given programming task in your application.
For more information on object-oriented extensions, see OpenEdge Getting Started: Object-oriented Programming in the Product Documentation section of the Progress Software Developer's Network Web site.