Object-Oriented ABL Techniques

This group will serve as a focal point for discussions, examples, and projects intended to help people utilize the object-oriented language features which became available in OE10.1. The intention is to:
1) Develop established object-oriented design principles in a way that is consistent with a 4GL;
2) Provide OO-based contributions to OERA-compliant architectures; and
3) Assist in the utilization of OO techniques in the context of existing procedural code.
Contributions to this purpose will include white paper discussions, code fragments illustrating techniques, and complete model components to use in building applications.


how can i use VLC player in progress 4gl ?

how can i use VLC player in progress 4gl and is this possible to split 4 or 5 category, and play each and every individual play list?


Progress DB access via VM

Hi,

I'm using Progress 10.1c in Linux(ubuntu 10.04) which runs on a Windows machine via VM. The databases are running in Linux as local databases i.e. without specifying any port numbers. How can I access the DB's running on Linux from Windows.
Is i possible at all?

Regards,
Akshay


UML Diagrams

Following are the UML class diagrams for the proposed implementation.

Note that RelationAttrSetOps will not be included in the initial implementation, but its definition is provided here to indicate where these operations will be implemented when and if they are needed.

iSet Family (click for larger version)







See below for higher resolution PDF.




iAttrSet Family (click for larger version)


Properties and Operators

Java collection classes have been provided with a fairly rich set of properties and operators, presumably based on the idea that these classes can then be used for a richer range of rôles, just as there are many classes in that same hierarchy which are clearly not intended for relationships at all. In the present implementation, the decision was made to focus on the essentials of object relationships with the idea of creating efficient, low impact infrastructure for OO programming and then to consider later whether there are other classes with other functions which could also be created.


Implementation Technologies

In the 2006 implementation, all collection classes were implemented using temp-tables based on the conclusion that temp-tables were a natural ABL language feature which provided a superset of capabilities needed for collection management. While this approach was effective and simple, since then concern has been raised about performance issues when the number of temp-tables in a session becomes large and about the excessive memory footprint and possibly instantiation penalty when a temp-table is used for a small and simple collection.


Performance Testing

Most relationship collections will contain only a handful of elements, but it is possible for a relationship to contain a large number of elements. Therefore, we are concerned with both the memory footprint of a class when it contains a small number of elements and with the performance of that class when it contains a large number of elements. In particular, the 2006 implementation used temp-tables throughout.


Core Concepts – Model Hierarchy

In constructing a model hierarchy for these collection classes there are a couple of issues. One is that we want to have an interface for Iterator, which is used in many places, and then an interface which defines the base for each of the two basic types of relationship collections – those with simple elements and those with key/value pairs. If we had inheritance of interfaces (rumored to be coming in OE11.0) we would have the base interface for the type inherit from Iterator and that base interface could be implemented by any class in the hierarchy.


Core Concepts – Duplicates

In any ordinary object relationships, one would never have duplicates because it simply makes no sense to have the same object twice on one end of a relationship. Some Java Collection objects enforce this rule and others don’t.


Core Concepts - Order

The most common form of relationship collection is ordered only by the order in which elements are added to the collection. The parent using the collection may have added the elements in some special order, but most commonly the order is of no significance because any operation performed on the collection will be performed on all members of the collection and it is thus order is of no significance.


Collection Classes for OO Relationships

In Object-Oriented programming one object interacts with another object via a relationship, i.e., a direct link between the two objects. When this relationship is one to one, then one object will simply have a reference to the other object. But, if the relationship is one to many, then there is a need for an intermediary structure to hold the references for the many end of the relationship.


Low-level Infrastructure Components

While the primary focus of the OERA OSI is service components to implement OERA architectures, any framework also has a need for a library of basic, low level components on which to base other code. Thus, the OERA OSI will include a library of such low level components.


Calling out to a C++ class from the Progress ABL

On a programmer mailing list, there was a question about how to call out to a class in C++ from the Progress ABL. The following gives an example of doing so.

First, here is a bit of C++ code that hopefully illustrates a wrapper on how to call out to a class from the Progress interface (explanation follows):

------------ 2.cpp -----------


extern "C" {

int TestRoutine () ;

}




class A {

 private :

 int A1;

 public :

 int SetA1 (int V) {

   A1 = V;

 }

 int GetA1 () {

   return A1;

 }

}; // class A


int TestRoutine () {

Shared Temp-table for Multiple threads

Hi Folks,
I am creating(initiating) multiple threads using Unix/Progress.
What I want is some way to process each thread create some temp-table records and at the end of all the threads I have a master temp-table.

Problem is each thread is a seperate Progress session and kills the temp-table at the end of each session.

Details ......

One main program say xxxx0.P defines a new shared temp-table

And initiates 40 threads (each a different progress session).
It executes program xxxx1.p in each session
xxxx1.p has defines temp-table as shared.


Introduction to the parameter object

I'm reading Martin Fowler's refactoring and will work out some of his methods (which also apply to building new software) in this blog. Read this to get some background info:

http://sourcemaking.com/refactoring/introduce-parameter-object
http://www.refactoring.com/catalog/introduceParameterObject.html
http://martinfowler.com/ap2/range.html

Below a simple daterangeparameter object, and therebelow a procedure using the daterange object.


Application performance profile viewer

This profiler identifies performancebottlenecks in your application by analysing the logfile you create with the log-manager. ProfilerProfiler


#
Syndicate content