1 / 36

Mike Fechner, Consultingwerk Ltd. PUG Finland, Thursday, 25h 2010

Object-orientation in the ABL Capabilities and features. … and limits. Mike Fechner, Consultingwerk Ltd. PUG Finland, Thursday, 25h 2010. Consultingwerk Ltd. Independent IT consulting organisation Focussing on OpenEdge and .NET Progress Consulting Partner, long running cooperation with PSC

alagan
Télécharger la présentation

Mike Fechner, Consultingwerk Ltd. PUG Finland, Thursday, 25h 2010

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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 Object-orientation in the ABL

  3. 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 ) Object-orientation in the ABL

  4. 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 Object-orientation in the ABL

  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 ABL

  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 ABL

  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 ABL

  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 ABL

  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 ABL

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

  11. 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 Object-orientation in the ABL

  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 ABL

  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 ABL

  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 ABL

  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 ABL

  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 ABL

  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 ABL

  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 ABL

  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 ABL

  20. Demo / Sample code • Wrapping Dynamics Managersinto (static) classes Object-orientation in the ABL

  21. 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 Object-orientation in the ABL

  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 ABL

  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 ABL

  24. Subclassing Data Structures Object-orientation in the ABL

  25. Object-orientation in the ABL

  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 ABL

  27. 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 Object-orientation in the ABL

  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 ABL

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

  30. 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 Object-orientation in the ABL

  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 ABL

  32. OERA and OO discussions • Model-Set-Entity Pattern (Phil Magnay) • http://communities.progress.com/pcom/message/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 ABL

  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 ABL

  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 ABL

  35. ? Questions Object-orientation in the ABL

  36. ! Thank you Object-orientation in the ABL

More Related