+ All Categories
Home > Documents > Mike Fechner, Consultingwerk Ltd. PUG Finland, Thursday, 25h 2010 Object-orientation in the ABL...

Mike Fechner, Consultingwerk Ltd. PUG Finland, Thursday, 25h 2010 Object-orientation in the ABL...

Date post: 02-Jan-2016
Category:
Upload: poppy-bailey
View: 215 times
Download: 0 times
Share this document with a friend
Popular Tags:
36
Mike Fechner, Consultingwerk Ltd. PUG Finland, Thursday, 25h 2010 Object-orientation in the ABL Capabilities and features … and limits
Transcript
Page 1: 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

Object-orientation in the ABLCapabilities and features

… and limits

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

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

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

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 )

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

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

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

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 5

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

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 6

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

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 7

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

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 8

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

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 9

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

Demo / Sample code

IBusinessEntity Interface BusinessEntity class proSIretrieve.p Class Browser

Object-orientation in the ABL 10

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

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

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

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 12

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

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 13

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

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 14

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

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 15

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

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 16

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

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 17

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

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 18

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

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 19

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

Demo / Sample code

Wrapping Dynamics Managersinto (static) classes

Object-orientation in the ABL 20

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

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

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

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 22

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

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 23

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

Subclassing Data Structures

Object-orientation in the ABL 24

class Temp-Tables

ttOrder

«column» OrderNum OrderDate CustomerNum

ttCustomOrder

«column» OrderNum OrderDate CustomerNum HighPriorityFlag Comments

DEFINE ttCustomOrder LIKE ttOrder FIELD HighPriorityFlag FIELD Comments

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

Object-orientation in the ABL 25

class DataRow Inheritance

System.Data.DataRow

Your.Application.OrderRow

Your.Application.Custom.SpecialOrderRow

Similar to a buffer or a recordAllows dynamic access to fields using a (weak typed) collection

Static access to fieldsStrong typedPotentially validation rules (triggers)

Static access to additional fields

inherits

inherits

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

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 26

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

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

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

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 28

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

Demo

Class browser Progress .NET Objects Microsoft .NET Objects (+ generics) Infragistics Classes ABL classes

Object-orientation in the ABL 29

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

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

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

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 31

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

OERA and OO discussions

Model-Set-Entity Pattern (Phil Magnay)– http://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 availableObject-orientation in the ABL 32

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

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 33

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

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 34

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

Object-orientation in the ABL 35

Questions ?

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

Object-orientation in the ABL 36

Thank you !


Recommended