Object-oriented programming with OpenEdge® 10.1A PSDN Web Seminar February 2006 Salvador Viñals Consultant Product Manager Progress Software – OpenEdge.

Slides:



Advertisements
Similar presentations
Module 8 “Polymorphism and Inheritance”. Outline Understanding Inheritance Inheritance Diagrams Constructors in Derived Classes Type Compatibility Polymorphism.
Advertisements

OpenEdge® Object-oriented ABL
OBJECT ORIENTED PROGRAMMING M Taimoor Khan
Ch 12: Object-Oriented Analysis
ITEC200 – Week03 Inheritance and Class Hierarchies.
Inheritance and Class Hierarchies Chapter 3. Chapter 3: Inheritance and Class Hierarchies2 Chapter Objectives To understand inheritance and how it facilitates.
OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
16/22/2015 2:54 PM6/22/2015 2:54 PM6/22/2015 2:54 PMObject-Oriented Development Concept originated with simulating objects and their interactions. Adapted.
Chapter 13: Object-Oriented Programming
John Sadd Progress Fellow and OpenEdge Evangelist
OOP in Java Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
C++ fundamentals.
Pat Bonser Product Readiness OpenEdge ® 10.1A Introduction & Overview PUG Norway Lillehammer March 16 th & 17 th.
Programming Languages and Paradigms Object-Oriented Programming.
DEV-07: Increasing Productivity with Tools for Business Logic Gikas Principal Software Engineer.
Design Patterns.
CSE 425: Object-Oriented Programming II Implementation of OO Languages Efficient use of instructions and program storage –E.g., a C++ object is stored.
11 1 Object oriented DB (not in book) Database Systems: Design, Implementation, & Management, 6 th Edition, Rob & Coronel Learning objectives: What.
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
An Introduction to Software Architecture
Object-oriented programming in the Progress® 4GL 10.1A Beta
Object-Oriented Extensions to the 4GL Pat Bonser Product Readiness PUG Norway Lillehammer March 16th & 17th.
C# Programming Fundamentals of Object-Oriented Programming Fundamentals of Object-Oriented Programming Introducing Microsoft.NET Introducing Microsoft.NET.
Unified Modeling Language, Version 2.0
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 09. Review Introduction to architectural styles Distributed architectures – Client Server Architecture – Multi-tier.
ARCH-03: Implementing the OpenEdge™ Reference Architecture – Part 1 John Sadd Progress Fellow and OpenEdge Evangelist.
Object-Oriented Programming and the Progress ABL Tomáš Kučera Principal Solution Engineer / EMEA Power Team.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
CSE 425: Object-Oriented Programming I Object-Oriented Programming A design method as well as a programming paradigm –For example, CRC cards, noun-verb.
ARCH-4: The Presentation Layer in the OpenEdge® Reference Architecture Frank Beusenberg Senior Technical Consultant.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 13 Introduction to Classes.
Chapter 18 Object Database Management Systems. McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved. Outline Motivation for object.
Object Oriented Programming in C++ Chapter 6 Inheritance.
C++ Programming Basic Learning Prepared By The Smartpath Information systems
Object Oriented Software Development
AN OBJECT LESSON IN CLASSES “or how OO ABL solves everything.”
ARCH-07: Implementing the OpenEdge™ Reference Architecture – Part 2
ARCH-7: A Class-Based Implementation of the OpenEdge® Reference Architecture John Sadd Fellow and OpenEdge Evangelist Applied Technology.
ARCH-11: Building your Presentation with Classes John Sadd Fellow and OpenEdge Evangelist Sasha Kraljevic Principal TSE.
Introduction to c++ programming - object oriented programming concepts - Structured Vs OOP. Classes and objects - class definition - Objects - class scope.
DEV-6: Advanced Object-Oriented Programming in the ABL Evan Bleicher Senior Development Manager Shelley Chase
Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.
Object-Oriented Programming Chapter Chapter
® IBM Software Group © 2004 IBM Corporation Developing an SOA with RUP and UML 2.0 Giles Davies.
Object Oriented Programming
ISBN Object-Oriented Programming Chapter Chapter
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
1 Unified Modeling Language, Version 2.0 Chapter 2.
A7: Architecting Your Application in OpenEdge ® 10 Mike Ormerod Applied Architect.
ARCH-7: Integrate this! SonicMQ® and the OpenEdge® Reference Architecture Christian Stiller Technical Architect.
Inheritance and Class Hierarchies Chapter 3. Chapter 3: Inheritance and Class Hierarchies2 Chapter Objectives To understand inheritance and how it facilitates.
Inheritance and Class Hierarchies Chapter 3. Chapter Objectives  To understand inheritance and how it facilitates code reuse  To understand how Java.
Classes, Interfaces and Packages
Chapter 18 Object Database Management Systems. Outline Motivation for object database management Object-oriented principles Architectures for object database.
MOVE-15: Leveraging Business Entities, Data Access Objects and ProDataSets with a Progress Dynamics® or ADM2 GUI Peter Judge Principal Software Engineer.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Overview of C++ Polymorphism
Presented by Ted Higgins, SQL Server DBA An Introduction to Object – Oriented Programming.
Copyright 2007, Information Builders. Slide 1 iWay Web Services and WebFOCUS Consumption Michael Florkowski Information Builders.
Peter Judge A8: What’s New in Object-Oriented ABL Principal Software Engineer OpenEdge 10.1C and beyond.
Java Programming: Guided Learning with Early Objects Chapter 9 Inheritance and Polymorphism.
Inheritance Modern object-oriented (OO) programming languages provide 3 capabilities: encapsulation inheritance polymorphism which can improve the design,
Object-Orientated Programming
Object Oriented Analysis and Design
Lecture 22 Inheritance Richard Gesick.
Testing with OO OO has several key concepts:
DEV-08: Exploring Object-oriented Programming
Overview of C++ Polymorphism
Presentation transcript:

Object-oriented programming with OpenEdge® 10.1A PSDN Web Seminar February 2006 Salvador Viñals Consultant Product Manager Progress Software – OpenEdge Division

© 2006 Progress Software Corporation2 Audience  Technical level: Intermediate  This session is targeted to customers somewhat familiar with object-orientation  This session does not focus on reference information

© 2006 Progress Software Corporation3 OpenEdge 10.1A Focus Improve the productivity of OpenEdge … to provide our partners significant competitive advantage through the software they develop and deploy

© 2006 Progress Software Corporation4 OpenEdge 10.1A Highlights  OpenEdge Architect  Auditing  Language: short-hand syntax (::), READ-XML(), WRITE- XML(), BY-REFERENCE, XP manifests, 64bit r-code  RDBMS: performance, more online utilities and schema changes  JDBC Type 4  Symbiotic Adapter for SonicMQ ®  Install: Simpler, faster and embeddable  Rebranding: Fathom to OpenEdge  Replication: Enable online, AI, single command failback  DVD  Linux 64bit (RH AS 3, SuSe 9) …. and much more What we are not going to talk about today…

© 2006 Progress Software Corporation5 Agenda  Object-orientation in OpenEdge 10.1A Benefits Positioning Concepts and Features  Object-oriented programming  Where to go next

© 2006 Progress Software Corporation6 Introducing OO in 10.1A OpenEdge® 10.1 introduces formal object- oriented programming through language extensions that support user-defined classes. User-defined classes allow you to define objects, with methods and data, and interfaces for building business applications.

© 2006 Progress Software Corporation7 Object-orientation Benefits  Let’s you organize applications the way you think: around objects  Increase application robustness (strong typing)  More development productivity with encapsulation, inheritance, and polymorphism  Promotes reusability  Helps you build OERA. More closely support SOA Modular. Components. Composite applications. Service contracts = Interfaces  Ease application maintenance  Natural integration with: modeling tools other OO platforms  Ease hire new developers Benefits

© 2006 Progress Software Corporation8 Positioning  When shall you consider using Classes? For well defined and designed functional units Not too coarse. Not too granular. Useful (and easy) when called from at least three different modules of the application, or different applications Need to adhere to Interfaces  When Procedures are best? Tasks Processes Workflows Dynamic or late bound code (not strong typed) Disposable programs

© 2006 Progress Software Corporation9  Multiple rollout strategy: OpenEdge 10.1A is the first one  The object-oriented extensions do not replace existing language constructs  You do not need to use OO if you do not want  Classes can include ON constructs  10.1A language compiler is two-pass Quick facts

© 2006 Progress Software Corporation10 Interoperability Procedures and Classes  Procedures Can NEW a CLASS Can DELETE an object Invoke methods using object reference Can pass object reference as a parameter  Classes Can RUN a procedure Can invoke internal procedure / UDF using procedure handle

© 2006 Progress Software Corporation11 Similarities between Classes and Procedures ProceduresClasses Procedure files (.p)Class files (.cls) Define variablesData members Internal procedures VOID methods User defined functionsOther methods Code in main blockConstructor Super-procedures Inheritance.p.cls

© 2006 Progress Software Corporation12 Object-Oriented Concepts Overview What do you need to understand to use OO?  OO terminology for familiar concepts Classes, data members, methods, types & objects  Encapsulation Grouping data & behavior together  Inheritance Re-using and extending code  Delegation Letting contained objects do their own work  Interfaces Implementing a standard set of methods  Polymorphism Generic code for objects with common data & behavior

© 2006 Progress Software Corporation13 OO in the 10.1A Features  CLASS definitions  Single inheritance hierarchies  Data members and methods  Interfaces  Polymorphism  Delegation  CAST function  VALID-OBJECT() method .cls files  Support with development tools

© 2006 Progress Software Corporation14 Details on Object-Oriented Concepts Overview and 10.1A Features  Refer to the following 10.1A Beta program presentations that will be made available on PSDN along with this Web seminar: (beta) Object-oriented programming in the Progress 4GL 10 1A1B Webinar.ppt (beta) Object-oriented programming in the Progress 4GL 10 1A2B Webinar.ppt

© 2006 Progress Software Corporation15 Agenda  Object-orientation in OpenEdge 10.1A Benefits Positioning Concepts and Features  Object-oriented programming  Where to go next

© 2006 Progress Software Corporation16 Object-oriented programming  When shall you consider using Classes? For well defined and designed functional units Not too coarse. Not too granular. Useful (and easy) when called from at least three different modules of the application, or different applications Need to adhere to Interfaces  How to start? You need a model (white-board models are good) Best not to start with the presentation layer Best not to start with the data management layer Start inside-out: –Model the required functionality –Identify potential functional units candidates for classes

© 2006 Progress Software Corporation17 Object-oriented programming  Logical model - Abstraction Identify Classes. Data members. Methods. Identify inheritance “chains” Identify interfaces you need to conform to Identify where you’ll need delegation, polymorphism, etc. Refine: Too coarse? Too fine grained? Will you use it?  Implementation model Define each of above Refine as needed  Start programming

© 2006 Progress Software Corporation18 Object-oriented programming  Logical model - Abstraction Identify Classes. Data members. Methods. Identify inheritance “chains” Identify interfaces you need to conform to Identify where you’ll need delegation, polymorphism, etc. Refine: Too coarse? Too fine grained? Reusable?  Implementation model Define each of above Refine as needed  Start programming

© 2006 Progress Software Corporation19 Business Abstraction  What is an Order?  Business Operations Approve Ship Check Inventory  Data Operations Create Read Update Delete Order

© 2006 Progress Software Corporation20 Higher Level Abstraction  What is a Business Entity Tracks my business  What do I do with a business entity Business Operation –Security –Auditing Delegate CRUD to Data Access in subclasses –Create –Read –Update –Delete Business Entity

© 2006 Progress Software Corporation21 Example of Logical Model Business Processing Presentation Layer Integration Data Access

© 2006 Progress Software Corporation22 Example of More Detailed Logical Model Super Class Subclass Inheritance Delegation Polymorphism Interface Public Private Protected Data Members Methods Polymorphism

© 2006 Progress Software Corporation23 Object-oriented programming  Logical model - Abstraction Identify Classes. Data members. Methods. Identify inheritance “chains” Identify interfaces you need to conform to Identify where you’ll need delegation, polymorphism, etc. Refine: Too coarse? Too fine grained? Reusable?  Implementation model Define each of above Refine as needed  Start programming

© 2006 Progress Software Corporation24 Super Class – Business Entity Type –. Methods Data Members OOABL.BusinessEntity # daObject:IDataAccess # lcBEXMLDataSet:LONGCHAR + fetchWhere():VOID + saveChanges():VOID What does a Business Entity need to do for the application?  Data Members daObject - Retrieve records lcBEXMLDataSet – Stores records in XML to pass around  Methods fetchWhere –Select Records (Read) saveChanges –Saves Changes (Create, Update, Delete) Note: Example doesn’t contain Security or Auditing but that could be defined here as well

© 2006 Progress Software Corporation25 CLASS OOABL.BusinessEntity: /* data members */ DEFINE PUBLIC VARIABLE lcBEXMLDataSet AS LONGCHAR NO-UNDO. /* methods */ METHOD PUBLIC LONGCHAR fetchWhere (INPUT cBEWhere AS CHAR): END. /* fetchWhere*/ METHOD PUBLIC VOID saveChanges (): END. /* saveChanges */ END CLASS. /*BusinessEntity Class*/ Super Class – Business Entity

© 2006 Progress Software Corporation26 Inheritance Hierarchy Overview Re-using and extending code  Inheritance is used to abstract out common functionality & data amongst similar classes  Inheritance relationship means a sub-class inherits all data members & methods from a super class  Resulting sub-class may extend or change behavior by overriding methods of super class or add functionality by adding new methods to the sub-class

© 2006 Progress Software Corporation27 Inheritance - An Example OOABL.BusinessEntity # daObject: IDataAccess # lcBEXMLDataSet:LONGCHAR + fetchWhere():VOID + saveChanges():VOID Inherits super class subclass Additional Override OOABL.BEOrder # dsOrder: dataset + BEOrder ():VOID + fetchWhere():VOID + saveChanges():VOID + processOrder():VOID Additional

© 2006 Progress Software Corporation28 CLASS OOABL.BEOrder INHERITS OOABL.BusinessEntity: {ProDataSet/PrivateOrderTT.i} {ProDataSet/PrivateDSOrder.i} CONSTRUCTOR PUBLIC BEOrder (OUTPUT lSuccess AS LOGICAL): END CONSTRUCTOR. /* constructor BEOrder */ DESTRUCTOR PUBLIC BEOrder (): END DESTRUCTOR. /* destructor BEOrder */ METHOD PUBLIC OVERRIDE LONGCHAR fetchWhere (INPUT cBEWhere AS CHAR): END. /* fetchWhere*/ METHOD PUBLIC OVERRIDE VOID saveChanges(): END. /* saveChanges */ METHOD PUBLIC VOID processOrder(): END. /* processOrder */ END CLASS. /*BEOrder Class*/ Inheritance - An Example

© 2006 Progress Software Corporation29 Delegation Overview Letting contained classes do their own work  Delegation may be used when an object is built from other objects that are not in the class hierarchy  The containing object forwards messages it can’t handle to a contained object, called its delegate  The containing object defines a “stub” for the message

© 2006 Progress Software Corporation30 Delegation – An Example OOABL.BEOrder # dsOrder: dataset + BEOrder ():VOID + fetchWhere():VOID + saveChanges():VOID + processOrder():VOID OOABL.DAOrder - dsOrder: handle + convertToDS():VOID + convertToXML():VOID + setcWhere():VOID + getcWhere():CHAR + setDataSources():VOID + selectRecords():LONGCHAR + updateRecords():VOID + setCallbacks():VOID + postOlineFill():VOID + postDataSetFill():VOID Business entity object delegates the record retrieval to data access object delegates

© 2006 Progress Software Corporation31 OOABL.BusinessEntity # daObject:OOABLIDataAccess #lcBEXMLDataSet:LONGCHAR + fetchWhere():VOID Delegation - Using an Interface to Ensure an API OOABL.DAOrder - dsOrder: handle + selectRecords():VOID OOABL.BEOrder # dsOrder: dataset BEOrder() CONSTRUCTOR BEOrder() DESTRUCTOR + fetchWhere():VOID delegates OOABL.IDataAccess + selectRecords():VOID implements inherits Animation walks through the code design… OrderMain.p /* Defines a BEOrder variable */ /* NEWs BEOrder */ /* calls BEOrder fetchWhere */ /* Passes dataset back to UI */ OOABL.DataObject # xmlDataSet # DataObject() CONSTRUCTOR /* methods from interface */ + selectRecords():VOID Container Class Delegate Class

© 2006 Progress Software Corporation32 CLASS OOABL.DAOrder INHERITS OOABL.DataObject: {ProDataSet/PrivateOrderTT.i} {ProDataSet/PrivateDSOrder.i} CONSTRUCTOR PUBLIC DAOrder (): END CONSTRUCTOR. /** INHERITED METHODS OVERRIDE SECTION **/ METHOD PUBLIC OVERRIDE VOID ConvertToDS (): /* Uses default READ-XML behavior */ DATASET dsOrder:READ-XML ("LONGCHAR", lcXMLDATASET, "EMPTY", ?, ?). END. /*END ConvertToDS */ METHOD PUBLIC OVERRIDE VOID ConvertToXML(): /* Default XML-WRITE to LONGCHAR */ DATASET dsOrder:WRITE-XML ("LONGCHAR", /* target-type */ lcXMLDATASET, /* longchar */ TRUE, /* formatted */ ?, /* encoding */ ?, /* schema location */ ?, /* write schema */ ?). /* minschema */ END. /* end of ConvertToXML */ Delegation – An Example (complete sample code in annotations)... /...

© 2006 Progress Software Corporation33 METHOD PUBLIC OVERRIDE LONGCHAR selectRecords (): DEFINE VARIABLE hdsOrder AS HANDLE NO-UNDO. DEFINE VARIABLE hEvents AS HANDLE NO-UNDO. DEFINE VARIABLE iBuff AS INTEGER NO-UNDO. DEFINE VARIABLE hBuff AS HANDLE NO-UNDO. DEFINE QUERY qOrder FOR Sports2000.Order, Sports2000.Customer, Sports2000.SalesRep. DEFINE DATA-SOURCE srcOrder FOR QUERY qOrder Order KEYS (OrderNum), Customer KEYS (CustNum), SalesRep KEYS (SalesRep). DEFINE DATA-SOURCE srcOline FOR OrderLine. hdsOrder = DATASET dsOrder:HANDLE. /* Use NEW SET-CALLBACK Method for THIS-OBJECT instead of persistent proc */ SetCallBacks(INPUT hdsOrder). /* Prepare the query */ QUERY qOrder:QUERY-PREPARE("FOR EACH Order WHERE order.ordernum = " + (cWhere) + ", FIRST Customer OF Order, FIRST SalesRep OUTER-JOIN OF Order"). /* Attach datasources before fill */ BUFFER ttOrder:ATTACH-DATA-SOURCE(DATA-SOURCE srcOrder:HANDLE, "Customer.Name,CustName"). BUFFER ttOline:ATTACH-DATA-SOURCE(DATA-SOURCE srcOline:HANDLE). hDSOrder:FILL(). /*Detach datasources after fill */ DO iBuff = 1 TO DATASET dsOrder:NUM-BUFFERS: DATASET dsOrder:GET-BUFFER-HANDLE(iBuff):DETACH-DATA-SOURCE(). END. convertToXML(). RETURN lcXMLDataSet. END. /* selectRecords */ Delegation – An Example (complete sample code in annotations)... /...

© 2006 Progress Software Corporation34 Interfaces Overview Implementing a standard set of methods  An interface specifies a set of method prototypes which must be implemented by a class in order to claim support for the interface Reliably defines a common API supported by different classes Use an INTERFACE to ensure the API exists  Similar to inheritance, except no default data to inherit & no default implementation for the methods  A class may implement zero or more interfaces

© 2006 Progress Software Corporation35 Interface – An Example OOABL.dataObject # xmlDataSet: LONGCHAR # hDataSet:HANDLE # cWhere:CHARACTER # DataObject() + convertToDS():VOID + convertToXML():VOID + setcWhere():VOID + getcWhere():CHAR + setDataSource():VOID + selectRecords():LONGCHAR + updateRecords():VOID OOABL.IDataAccess + setcWhere():VOID + getcWhere():CHAR + setDataSource():VOID + selectRecords():LONGCHAR + updateRecords():VOID implements

© 2006 Progress Software Corporation36 INTERFACE OOABL.IDataAccess: METHOD PUBLIC VOID setcWhere(INPUT icWhere AS CHARACTER). /* will set the where clause for record selection */ METHOD PUBLIC CHAR getcWhere (). /* will get the where clause for record selection */ METHOD PUBLIC VOID setDataSources(INPUT cDataSources AS CHARACTER). /*will initialize the dataset's datasources */ METHOD PUBLIC LONGCHAR selectRecords(). /* will select object specific records */ METHOD PUBLIC VOID updateRecords(INPUT lcXML AS LONGCHAR). /* store create, updates, and deletes to records */ METHOD PUBLIC VOID convertToDS (). METHOD PUBLIC VOID convertToXML (). END INTERFACE. /*IDataAccess */ Interface – An Example (all dataObject classes will implement this interface)

© 2006 Progress Software Corporation37 Polymorphism Overview Treating similar objects generically  Multiple classes can inherit from same super class  Each can override behavior in super class Multiple implementations Different behavior  Instances of classes derived from the same super class can be dealt with generically at runtime  A message in the super class is dispatched to the corresponding method in a subclass Polymorphism means each subclass may respond to the same message in a different manner

© 2006 Progress Software Corporation38 Polymorphism – An Example OOABL.BEExternalOrder - InvoiceNum:INTEGER + processOrder():VOID - sendInvoiceInfo():VOID - startSession():VOID OOABL.BEInternalOrder -crossChargeDeptNum:INTEGER + processOrder():VOID - getCrossChargeDept():CHAR - setCrossChargeDept():VOID - crossCharge():VOID OOABL.BEOrder # dsOrder: dataset + BEOrder ():VOID + fetchWhere():VOID + saveChanges():VOID + processOrder():VOID

© 2006 Progress Software Corporation39 CLASS OOABL.BEOrder INHERITS OOABL.BusinessEntity:... CLASS OOABL.BEExternalOrder INHERITS OOABL.BEOrder FINAL:... CLASS OOABL.BEInternalOrder INHERITS OOABL.BEOrder FINAL:... /* ProcessOrderMain.p -- Main procedure for an Order Dataset */ DEFINE INPUT PARAMETER lInternal AS LOGICAL NO-UNDO. DEFINE INPUT PARAMETER piOrderNum AS INTEGER NO-UNDO. DEFINE OUTPUT PARAMETER lProcessed AS LOGICAL NO-UNDO. DEFINE VARIABLE myBEOrder AS CLASS OOABL.BEOrder NO-UNDO. DEFINE VARIABLE lcXML AS LONGCHAR NO-UNDO. DEFINE VARIABLE lSuccess AS LOGICAL NO-UNDO. /* Instantiate the right subclass */ IF lInternal THEN myBEOrder = NEW OOABL.BEInternalOrder(OUTPUT LSuccess). ELSE myBEOrder = NEW OOABL.BEExternalOrder(OUTPUT lSuccess). /* fetch the right order and orderlines */ lcXML = myBEOrder:fetchWhere(STRING(piOrderNum)). myBEOrder:processOrder(OUTPUT lProcessed). DELETE OBJECT myBEOrder. Polymorphism – An Example (complete sample code in annotations)

© 2006 Progress Software Corporation40 Director.p /* Defines a Boss variable */ /* NEWs Boss (RegionalManager or CorporateManager */ /* sets Boss’ cTaskToDelegate */ /* calls Boss’ delegateTask */ /* deletes Boss object etc. */ Polymorphism – Another Example delegates OOABL.IJobTask + setcTask():VOID + getcTask():CHARACTER + completeTask:LOGICAL OOABL.Worker - cTask:CHARACTER /* methods from interface */ + setcTask():VOID + getcTask():CHARACTER + completeTask:LOGICAL implements OOABL.Boss # MyWorkerObject: Worker + Boss() CONSTRUCTOR + Boss() DESTRUCTOR + delegateTask():LOGICAL + AnnounceResults():VOID OOABL.RegionalManager + AnnounceResults():VOID OOABL.CorporateManager + AnnounceResults():VOID polymorphism

© 2006 Progress Software Corporation41 Where to go next …  OpenEdge Getting Started: Object-oriented Programming  What's New in OpenEdge 10.1: Object Oriented Programming (April 2006)  Article: Object-orientation and the Progress® ABL in OpenEdge® Release 10.1A  Development patterns web papers (coming up soon) Product Documentation Education Course PSDN

© 2006 Progress Software Corporation42 Thank you for your time!

© 2006 Progress Software Corporation43 Questions

© 2006 Progress Software Corporation44