Академический Документы
Профессиональный Документы
Культура Документы
ABAP Objects
Programming
Horst Keller / Stefan Bresch
Business Programming Languages, SAP AG
Overview
Composing Interfaces
Polymorphism
Composing Interfaces
INTERFACE i1.
...
...
INTERFACES i2, i3, ...
...
ENDINTERFACE.
INTERFACE i2.
INTERFACES i1.
ENDINTERFACE.
INTERFACE i3.
INTERFACES i1, i2.
ENDINTERFACE.
INTERFACE i1.
METHODS meth.
ENDINTERFACE.
INTERFACE i4.
INTERFACES i2, i3.
ENDINTERFACE.
Problem?
Composing Interfaces – Implementation
INTERFACE i1.
METHODS m1. Inside: Access to deep
ENDINTERFACE. components of compound
INTERFACE i2. interfaces via aliases only.
INTERFACES i1. Outside: Narrowing cast.
ALIASES m2 FOR i1~m1.
ENDINTERFACE.
INTERFACE i3.
INTERFACES i2.
ALIASES m3 FOR i2~m2. FOR i2~i1~m1.
ENDINTERFACE.
Polymorphism
Object:
Instance of a class.
Reference Variable:
DATA oref TYPE REF TO class|interface. oref
Golden Rule
The static type must be more general than or
equal to the dynamic type.
Principle
The event handler defines the
objects that can trigger the EVENTS evt
event handler method.
Inheritance case:
METHODS handler
FOR EVENT evt OF class. class
Polymorphic Event Handling – Type Check 6.10
Read-Only Attributes
Attributes in Internal Tables
Dynamic Access
Restricted Instantiation
Friends
Visibility – Read-Only Attributes
CLASS c1 DEFINITION.
PUBLIC SECTION.
METHODS get_a1 RETURNING r1 ...
PRIVATE SECTION.
DATA a1 TYPE ...
CLASS c1 IMPLENTATION.
ENDCLASS.
METHOD get_a1.
r1 = a1.
Text book style ... ENDMETHOD.
ENDCLASS.
but performance?
CLASS c1 DEFINITION.
PUBLIC SECTION.
DATA a1 TYPE ... READ-ONLY.
...
ENDCLASS.
Access – Attributes in Internal Table Operations
Functional Methods
Dynamic Invoke
* Examples
transaction_manager->start( ).
html_viewer->show_url( url ).
Method Call – Dynamic Invoke
Transaction Code
Object Services
Global or Local
Introduction
Transparent Object Persistence
Handling persistent Objects
Additional transaction service
Object Services - Introduction 6.10
Database
Object Services - Transparent Object Persistence
6.10
Persistence Service
Persistent Classes
Object-relational Mapping
Persistence Representation
Object Services - Persistence Service 6.10
CL_CARRIER
CARRID
CARRNAME SCARR
...
CARRID CARRNAME...
...
CARRID = LH LH Lufthansa ...
...
CARRNAME = Lufthansa
...
Object Services - Persistence Representation 6.10
Accessor Methods
Life Cycle Management Methods
Class Agents
Loading, Creating, Deleting, ...
Object Identity
Persistent Object References
Object Services - Accessor Methods 6.10
CARRIER_AGENT = CA_CARRIER=>AGENT.
TRY.
CARRIER = CARRIER_AGENT->GET_PERSISTENT(
I_CARRID = 'LH' ).
CARRNAME = CARRIER->GET_CARRNAME( ).
WRITE: 'LH: ', CARRNAME.
CATCH CX_OS_OBJECT_NOT_FOUND.
ENDTRY.
Object Services - Creating a Persistent Object 6.10
CARRIER_AGENT = CA_CARRIER=>AGENT.
TRY.
CARRIER = CARRIER_AGENT->CREATE_PERSISTENT(
I_CARRID = 'LH' ).
CARRIER->SET_CARRNAME('Lufthansa' ).
CATCH CX_OS_OBJECT_EXISTING.
ENDTRY.
COMMIT WORK.
Object Services - Deleting a Persistent Object 6.10
CARRIER_AGENT = CA_CARRIER=>AGENT.
TRY.
CARRIER_AGENT->DELETE_PERSISTENT(
I_CARRID = 'LH' ).
CATCH CX_OS_OBJECT_NOT_EXISTING.
ENDTRY.
COMMIT WORK.
Object Services – Object Identity 6.10
Transaction service
Transactions
Nested transactions
Transactions and the SAP-LUW
Object Services – Transaction Service 6.10
TM = CL_OS_SYSTEM=>GET_TRANSACTION_MANAGER( ).
T = TM->CREATE_TRANSACTION( ).
T->START( ).
* Inside the transaction
T->END( ).
Object Services – Nested Transactions 6.10