Presentation is loading. Please wait.

Presentation is loading. Please wait.

Mike Fechner, Consultingwerk Ltd. PUG Finland, Thursday, 25h 2010 Object-orientation in the ABL Capabilities and features … and limits.

Similar presentations


Presentation on theme: "Mike Fechner, Consultingwerk Ltd. PUG Finland, Thursday, 25h 2010 Object-orientation in the ABL Capabilities and features … and limits."— Presentation transcript:

1 Mike Fechner, Consultingwerk Ltd. PUG Finland, Thursday, 25h 2010 Object-orientation in the ABL Capabilities and features … and limits

2 Object-orientation in the ABL2 Consultingwerk Ltd.  Independent IT consulting organisation  Focussing on OpenEdge and.NET  Progress Consulting Partner, long running cooperation with PSC  Located in Cologne, Germany  Consulting, conception, coaching, development, training, mentoring, review  Customers located in Germany, Europe (EU, CH), USA  Vendor of tools and consulting packages

3 Object-orientation in the ABL3 Consultingwerk Ltd.  20 years of Progress experience (V5 … V10)  Progress, OpenEdge, ADM2, Dynamics, OERA, Sonic MQ/ESB  OpenEdge GUI for.NET early adaptor (hands on since 10/2006) .NET (C#) experience since 2002 (.NET 1.0) in combination with the OpenEdge Proxy objects  Almost no Java experience (but I’ve been said it’s a copy of C# - or vice versa )

4 Object-orientation in the ABL4  Introduction  Comparing OOABL to procedural  Comparing OOABL to C#  OO with GUI for.NET  OERA and OO discussions in the community

5 Object-orientation in the ABL  Often referred as OOABL –Some people in PSC dislike that term. It‘s not a new language. But it‘s much shorter than the „object-oriented extensions to the ABL aka 4GL“  Adds coding constructs like classes, object instantiation, methods, access types etc. to the ABL  Constructs well known from (other) OO languages like C# and Java Object-orientation in the ABL5

6 OOABL time line  10.1A first implementation, classes, objects, methods, properties (but I’m not 100% sure about that)  10.1B Interfaces, USING statement, properties (when not part of 10.1A)  10.1C Static members, structured error-handling, properties in Interfaces, DYNAMIC-NEW  10.2A GUI for.NET, garbage collection for objects (anything reference by a WIDGET-HANDLE or COM- HANDLE is not an object)  10.2B Abstract classes, abstract members,.NET generic type definition, strong typed events, reflection part 1  OE11: No major new OO feature announced – so far Object-orientation in the ABL6

7 OOABL: Why?  Common way of coding, known to every young developer. Universities don’t teach procedural programming at all  Market trend that PSC could not resist anymore, didn’t want to be the only modern non OO language  Simply the way people want to code today. True for ABL?  GUI for.NET! No way to leverage the.NET framework without OO Object-orientation in the ABL7

8 OOABL: Why?  Different way of coding, breaking tasks into smaller chunks, agile coding, Unit-Testing, reusability (but we believe the ABL is the most powerful language to maintain spaghetti code)  Interfaces, Design Patterns, often quoted Guru’s (not sure if everybody read their books)  Martin Fowler (UML, OO architecture, transformation)  GoF, Gang of Four, Erich Gamma et al., often quoted in source code (i.e. GoF 175 – decorator pattern) Object-orientation in the ABL8

9 OOABL: Members of a class  Constructor(s)  Destructor  Methods, overloaded methods, polymorph meth  Properties –Data members –Variables (primitive and reference types) –Defined non OO objects, Temp-Tables, ProDatasets  Events Object-orientation in the ABL9

10 Demo / Sample code  IBusinessEntity Interface  BusinessEntity class  proSIretrieve.p  Class Browser Object-orientation in the ABL10

11 Object-orientation in the ABL11 Object-orientation in the ABL  Introduction  Comparing OOABL to procedural  Comparing OOABL to C#  OO with GUI for.NET  OERA and OO discussions in the community

12 Comparing OOABL to procedural  The compiler and runtime enforce OO concepts (but not good OO design ) –strong-typing, type safeness  Concepts like inheritance or encapsulation are part of the language  ADM2 implemented them in the language  Object instance is very similar to a persistent procedure: Launched by someone else, life cycle, private and public members Object-orientation in the ABL12

13 Comparing OOABL to procedural  Comparing SUPER class to SUPER procedure  Both allow „inheriting“ behaviour by using methods and procedures of the SUPER thing  SUPER procedure: Manual task to run or locate that, SUPER class: Just INHERIT  Shared SUPER procedure: Data Members (Variables, Temp-Tables, Buffer, …) shared among childs, SUPER class: individual to every single child  Child class won‘t compile with error in SUPER class Object-orientation in the ABL13

14 TABLE-HANDLE parameter  A SUPER procedure expecting a TABLE-HANDLE parameter can be overloaded with a TABLE parameter  Compiler doesn‘t care (know about it)  Runtime is fine with that  This is not possible with classes: –Method with TABLE-HANDLE cannot be overridden by method with TABLE parameter –Interface method with TABLE-HANDLE parameter cannot be implemented using TABLE Object-orientation in the ABL14

15 Dynamic coding  Procedures –RUN VALUE („…“). RUN VALUE („…“) IN hProc. –DYNAMIC-FUNCTION, {fn}, {fnarg} –INTERNAL-ENTRIES property –DYNAMIC-CALL  OO –Don‘t do that Except DYNAMIC-NEW –DYNAMIC-NEW (10.1C), DYNAMIC-INVOKE (10.2B) –No dynamic access to properties –No possibility to query available members  Object-orientation in the ABL15

16 AppServer  The AppServer protocol only speaks procedural  Every client needs to call into procedures  Activate, Deactivate, Connect, Disconnect procedures  AppServer may use objects from there on  Can‘t pass an object as a parameter between AppServer and Client  Can‘t remotely call into an object like we can into a remote persistent procedure (not recommended, but possible) Object-orientation in the ABL16

17 Garbage collection  For true objects only (Progress.Lang.Object, System.Object)  Instace is removed automatically when nobody knows about it anymore  The fact that the DB objects (query object handle, buffer object handle) are called objects is misleading. In fact they should be called widgets  A must have safety rope for large (OO) systems Object-orientation in the ABL17

18 GLOBAL SHARED Variables  Classes and objects don‘t have access to these  Static properties are much more powerful anyway  But to introduce first OO features in an application this may be an issue Object-orientation in the ABL18

19 Static classes  … classes with only static members  Easiely build a framework that needs no startup  Usably from procedures and classes  Build static wrappers to exisiting framework APIs (Dynamics managers)  But can‘t be unloaded at all! When static classes have access to DB tables, you won‘t be able to disconnect the DB at runtime Object-orientation in the ABL19

20 Demo / Sample code  Wrapping Dynamics Managers into (static) classes Object-orientation in the ABL20

21 Object-orientation in the ABL21 Object-orientation in the ABL  Introduction  Comparing OOABL to procedural  Comparing OOABL to C#  OO with GUI for.NET  OERA and OO discussions in the community

22 C#  The original language of the.NET Framework  Java like  Developed by MS after they wered allowed to modify Java anymore  100% object-oriented Object-orientation in the ABL22

23 C#  Everything (in the.NET framework) is an object, most objects you can inherit from and that is how you code –DataView, DataTable, DataSet, DataRow  In the ABL most language features are pre OO –Query, Temp-Table, ProDataset, Buffer –No inheritance from built in language features Object-orientation in the ABL23

24 Subclassing Data Structures Object-orientation in the ABL24

25 Object-orientation in the ABL25

26 OO ABL’s missing features  Collections to handle „groups“ of object instances  Generic types to make Collections type safe and easy to use  Serialization, ability to persist object state (data members) or transport accross the wire  ABL can only query (Temp-)Tables  Browser can only show records in a query  ProBindingSource needs qeury as well Object-orientation in the ABL26

27 Object-orientation in the ABL27 Object-orientation in the ABL  Introduction  Comparing OOABL to procedural  Comparing OOABL to C#  OO with GUI for.NET  OERA and OO discussions in the community

28 OO ABL with GUI for.NET  A perfect match (in 10.2B)  Hybrid ABL classes act like.NET objects  Inheritance, Interface Implementation  Event handling  ABL can declare.NET Collections and generic types  A hybrid instance may be used in a.NET Collection Object-orientation in the ABL28

29 Demo  Class browser  Progress.NET Objects  Microsoft.NET Objects (+ generics)  Infragistics Classes  ABL classes Object-orientation in the ABL29

30 Object-orientation in the ABL30 Object-orientation in the ABL  Introduction  Comparing OOABL to procedural  Comparing OOABL to C#  OO with GUI for.NET  OERA and OO discussions in the community

31 OERA and OO discussions  Progress OERA (John Sadd, Mike Omerod) –ProDataset central role –OO Code to manage ProDataset and Queries and validation etc. –ProDataset exposed to others (no real encapsulation of –internal- data) –Difficulties with sub-classing data due to missing language capabilities –Little work to build and maintain, good ABL fit Object-orientation in the ABL31

32 OERA and OO discussions  Model-Set-Entity Pattern (Phil Magnay) –http://communities.progress.com/pcom/messa ge/72716#72716http://communities.progress.com/pcom/messa ge/72716#72716 –ProDataset centric, but encapsulated –Huge evolution of John Sadd‘s original patterns –„Facade“ objects to access and manipulate records –Used in large development projects, source code not available Object-orientation in the ABL32

33 OERA and OO discussions  Very often like religious war…  Looooooooong threads, looooooong posts  In a language that has nothing to do with classical ABL speak  Mostly debated is the role of relational concepts like Temp-Tables and ProDatasets in the Business Logic  Classic ABL coding is often underestimated (my opinion) Object-orientation in the ABL33

34 OERA and OO discussions  PABLO (Thomas Mercer Hursh) –No use of ProDataset and Temp-Tables in a Business Logic –A single instance represents each record –Lazy instantiation to solve (potential) performance issues –XML serialization –Sub-classing no problem –But: No real implementation available Object-orientation in the ABL34

35 Object-orientation in the ABL35 Questions ?

36 Object-orientation in the ABL36 Thank you !


Download ppt "Mike Fechner, Consultingwerk Ltd. PUG Finland, Thursday, 25h 2010 Object-orientation in the ABL Capabilities and features … and limits."

Similar presentations


Ads by Google