Oriented approach is to combine both the data and functions that operate on the data into a single unit. Features of OOPs • Emphasis is on Data rather than procedure • Programs are divided into Classes and Objects • Functions that operate on data are tied together with data • Data is hidden and can’t be accessed by external functions • Objects can communicate through functions Benefits of OOPs • Better Security to the data • Code Reusability • Reduction of Implementation costs and time • Software complexity can be easily managed • Improves the quality and productivity Concepts of OOP • Object and class • Data Abstraction and Encapsulation • Inheritance • Polymorphism • Interfaces • Exception handling Class and Objects • Class is a Collection of Data and Methods (Functions) to manipulate the data • Objects are like variables of type Class • Class contains.. – Attributes (Variables)/data – Methods (Services) – Events Classes: 2 types • Local Classes SE38 • Global Classes SE24 Class Syntax • Class c1 definition. – Public section • Methods – Protected section – Private section • Endclass • Class C1 implementation. – Methods – Endmethod Endclass Data: object obj1 type ref to C1 Create object obj1 Call method obj1-Method Syntax of the Class • Class class-name • { • Private : • variable declaration. • function declaration. • Public : • variable declaration. • function declaration. • Protected : • variable declaration. • function declaration. • } Access Specifies • Private : The private members can be accessed only with in the class. • Public : The public members can be accessed outside the class. • Protected : The main purpose of the protected visibility label inherit derived from it. Encapsulation • Combining of Data and functions into a single unit (Class) is called as Encapsulation (Data Binding) • The data is not accessible to the outside functions. Only those functions, which are combined in the class can access it. • The hiding of data from direct access by the program is called Data Hiding Inheritance • The mechanism of deriving a new class from an old class is called inheritance. • The concept of inheritance is based on the reusability of the properties of the existing classes by the newly created class. • The old class is called base class, and the new class is called as derived class. • The derived class inherits some (or) all of the traits from the base class. • It is a mechanism by which objects of one class can acquire the properties of another class. • Inheritance leads to the idea of reusability Polymorphism • Polymorphism means ‘one name ,multiple forms’. • Polymorphism is a feature that allows a single name/operator to be associated with different operations depending on the type of the data passed. • Polymorphism is implemented using the function overloading, operator overloading and dynamic binding (virtual functions). • Polymorphism are two types : • 1.Compiletime polymorphism. • 2.Runtime polymorphism. Overloading • Function overloading : • The concept of function-overloading allows multiple functions to share the same name with different argument types. • using the concept of function overloading, we can design a family of function with one function name but with different argument lists. • Operator overloading : • The mechanism of providing the operators with a special meaning for a data type is called operator loading. Interfaces • Interfaces are used to define a group of constants, variables and Methods. Interfaces are just like classes, methods are declared with out any implementation. • The implementation part of the methods are declared in subclasses. Any number of classes can implement the same interface. • Some rules to be remembered: • All methods in an interface are by default public. • An interface can extend any number of interfaces, but don’t implement any interface. • A class can implement any number of interfaces but no interfaces can be extended to a class. Exception Handling • Exceptions refers to unusual conditions in a program that causes the programs to fail (or) certain conditions that lead errors. • The error handling mechanism is called exception handling. • Exceptions are classified into two groups: • Synchronous exceptions • Asynchronous exceptions Example-1 • *----------------------------------------------------------------------* • * CLASS c1 DEFINITION • *----------------------------------------------------------------------* • CLASS C1 DEFINITION. • PUBLIC SECTION. • METHODS: M1. • ENDCLASS. "c1 DEFINITION • *----------------------------------------------------------------------* • * CLASS c1 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS C1 IMPLEMENTATION. • METHOD: M1. • WRITE: / 'hello'. • ENDMETHOD. "M1 • ENDCLASS. "c1 IMPLEMENTATION • DATA: O1 TYPE REF TO C1. • START-OF-SELECTION. • CREATE OBJECT O1. • CALL METHOD O1->M1. Example-2 • *----------------------------------------------------------------------* • * CLASS c1 DEFINITION • *----------------------------------------------------------------------* • CLASS C1 DEFINITION. • PUBLIC SECTION. • METHODS: M1 IMPORTING A TYPE I. • ENDCLASS. "c1 DEFINITION • *----------------------------------------------------------------------* • * CLASS c1 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS C1 IMPLEMENTATION. • METHOD: M1. • WRITE: / A. • ENDMETHOD. "M1 • ENDCLASS. "c1 IMPLEMENTATION • DATA: O1 TYPE REF TO C1. • START-OF-SELECTION. • CREATE OBJECT O1. • CALL METHOD O1->M1 EXPORTING a = 4. Example-3 • *----------------------------------------------------------------------* • * CLASS c1 DEFINITION • *----------------------------------------------------------------------* • CLASS C1 DEFINITION. • PUBLIC SECTION. • METHODS: M1 IMPORTING A TYPE I • EXPORTING B TYPE I. • ENDCLASS. "c1 DEFINITION • . • *----------------------------------------------------------------------* • * CLASS c1 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS C1 IMPLEMENTATION. • METHOD: M1. • B = A * A. • ENDMETHOD. "M1 • ENDCLASS. "c1 IMPLEMENTATION • DATA: O1 TYPE REF TO C1. • DATA: RESULT TYPE I. • START-OF-SELECTION. • CREATE OBJECT O1. • CALL METHOD O1->M1 • EXPORTING • A=4 • IMPORTING • B = RESULT. • WRITE: RESULT. Example-4 • *----------------------------------------------------------------------* • * CLASS c1 DEFINITION • *----------------------------------------------------------------------* • CLASS C1 DEFINITION. • PUBLIC SECTION. • data: x type i, • Y TYPE I. • METHODS: M1 IMPORTING A TYPE I EXPORTING B TYPE I. • METHODS: M2. • ENDCLASS. "c1 DEFINITION • . • *----------------------------------------------------------------------* • * CLASS c1 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS C1 IMPLEMENTATION. • METHOD: M1. • B = A * A. • ENDMETHOD. "M1 • METHOD: M2. • WRITE:/ X, Y. • ENDMETHOD. "M2 • ENDCLASS. "c1 IMPLEMENTATION • START-OF-SELECTION. • DATA: O1 TYPE REF TO C1. • CREATE OBJECT O1. • DATA: O2 TYPE REF TO C1. • CREATE OBJECT O2. • DATA: RESULT TYPE I. • CREATE OBJECT O1. • CALL METHOD O1->M1 • EXPORTING • A=4 • IMPORTING • B = RESULT. • WRITE: RESULT. • O2->X = 2. • O2->Y = 4. • CALL METHOD O2->M2 Example-5 • *----------------------------------------------------------------------* • * CLASS c1 DEFINITION • *----------------------------------------------------------------------* • CLASS C1 DEFINITION. • PUBLIC SECTION. • DATA: X TYPE I, • Y TYPE I. • METHODS: M1 IMPORTING A TYPE I EXPORTING B TYPE I. • METHODS: M2. • METHODS: M3 IMPORTING X TYPE I Y TYPE I. • PRIVATE SECTION. • DATA: P TYPE I, • Q TYPE I. • ENDCLASS. "c1 DEFINITION • *----------------------------------------------------------------------* • * CLASS c1 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS C1 IMPLEMENTATION. • METHOD: M1. • B = A * A. • ENDMETHOD. "M1 • METHOD: M2. • WRITE: / X, Y. • WRITE: / P, Q. • ULINE. • ENDMETHOD. "M2 • METHOD: M3. • P = X. • Q = Y. • ENDMETHOD. "M2 • ENDCLASS. "c1 IMPLEMENTATION • START-OF-SELECTION. • DATA: O1 TYPE REF TO C1. • CREATE OBJECT O1. • DATA: O2 TYPE REF TO C1. • CREATE OBJECT O2. • DATA: O3 TYPE REF TO C1. • CREATE OBJECT O3. • DATA: RESULT TYPE I. • CREATE OBJECT O1. • CALL METHOD O1->M1 • EXPORTING • A=4 • IMPORTING • B = RESULT. • WRITE: RESULT. • O2->X = 2. O2->Y = 4. • CALL METHOD O2->M2. • * NOT ALLOWED, SINCE P AND Q ARE PRIVATE • * O3->P = 3 • * O3->Q = 6. • DATA: A1 TYPE I VALUE 3. • DATA: B1 TYPE I VALUE 6. • CALL METHOD O3->M3 • EXPORTING X = A1 Y = B1. • CALL METHOD O3->M2. Interfaces • Interfaces extend the scope of a class by adding their own components to its public section • Interface I1 • Methods • End interface • Interfaces do not have implementation part • Interfaces are implemented by classes INTEFACES • *----------------------------------------------------------------------* • * INTERFACE i_data • *----------------------------------------------------------------------* • INTERFACE I_DATA. • METHODS: CREATE,CHANGE,DISPLAY. • ENDINTERFACE. "i_data • PARAMETERS: PO RADIOBUTTON GROUP R1 USER-COMMAND ABCD. • PARAMETERS: SO RADIOBUTTON GROUP R1. • SELECTION-SCREEN: ULINE. • PARAMETERS: CR RADIOBUTTON GROUP R2 USER-COMMAND ABCDE. • PARAMETERS: CH RADIOBUTTON GROUP R2. • PARAMETERS: DI RADIOBUTTON GROUP R2. • *----------------------------------------------------------------------* • * CLASS c1 DEFINITION • *----------------------------------------------------------------------* • CLASS C1 DEFINITION. • PUBLIC SECTION. • INTERFACES: I_DATA. • ENDCLASS. "c1 DEFINITION • *----------------------------------------------------------------------* • * CLASS c1 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS C1 IMPLEMENTATION. • METHOD: I_DATA~CREATE. • CALL TRANSACTION 'ME21N'. • ENDMETHOD. "i_data~create • METHOD: I_DATA~CHANGE. • CALL TRANSACTION 'ME22N'. • ENDMETHOD. "i_data~cHANGE • METHOD: I_DATA~DISPLAY. • CALL TRANSACTION 'ME23N'. • ENDMETHOD. "i_data~DISPLAY • ENDCLASS. "c1 IMPLEMENTATION INTERFACES Cont… • *----------------------------------------------------------------------* • * CLASS C2 DEFINITION • *----------------------------------------------------------------------* • CLASS C2 DEFINITION. • PUBLIC SECTION. • INTERFACES: I_DATA. • ENDCLASS. "C2 DEFINITION • *----------------------------------------------------------------------* • * CLASS C2 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS C2 IMPLEMENTATION. • METHOD: I_DATA~CREATE. • CALL TRANSACTION 'VA01'. • ENDMETHOD. "i_data~create • METHOD: I_DATA~CHANGE. • CALL TRANSACTION 'VA02'. • ENDMETHOD. "i_data~cHANGE • METHOD: I_DATA~DISPLAY. • CALL TRANSACTION 'VA03'. • ENDMETHOD. "i_data~DISPLAY • ENDCLASS. "C2 IMPLEMENTATION • START-OF-SELECTION. • DATA: O1 TYPE REF TO C1. • CREATE OBJECT O1. • DATA: O2 TYPE REF TO C2. • CREATE OBJECT O2. • DATA: IREF TYPE REF TO I_DATA. • IF PO = 'X'. • IREF = O1. • ELSE. • IREF = O2. • ENDIF. • IF CR = 'X'. • CALL METHOD IREF->CREATE. • ELSEIF CH = 'X'. • CALL METHOD IREF->CHANGE. • ELSE. • CALL METHOD IREF->DISPLAY. • ENDIF. Events • Event is a mechanism by which method of one class can raise the method of another class without instantiating that class • Steps • Create an event in a class • Create a triggering method for that event in same class which will raise the event • Create an event handler method for the event in same / other class • Register the event_handler method in the program Events • Some methods acts as triggeers(trigger event) other menthods(handlers) • i.e Handler methods are executed when event occurs in trigger methods TRIGGERING AND HANDLING EVENTS • *----------------------------------------------------------------------* • * CLASS c1 DEFINITION • *----------------------------------------------------------------------* • CLASS C1 DEFINITION. • PUBLIC SECTION. • METHODS: GET_DATA, APPEND_DATA, DISPLAY_DATA, REFRESH_DATA. • EVENTS: IS_INITIAL. • PRIVATE SECTION. • DATA: IT_EKPO TYPE STANDARD TABLE OF EKPO. • DATA: WA_EKPO TYPE EKPO. • ENDCLASS. "c1 DEFINITION • *----------------------------------------------------------------------* • * CLASS c1 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS C1 IMPLEMENTATION. • METHOD: GET_DATA. • SELECT * FROM EKPO INTO TABLE IT_EKPO UP TO 10 ROWS. • ENDMETHOD. • METHOD: APPEND_DATA. • WA_EKPO-EBELN = '12345'. • APPEND WA_EKPO TO IT_EKPO. • ENDMETHOD. • METHOD: DISPLAY_DATA. • IF IT_EKPO IS NOT INITIAL. • LOOP AT IT_EKPO INTO WA_EKPO. • WRITE: / WA_EKPO-EBELN. • ENDLOOP. • ELSE. • RAISE EVENT IS_INITIAL. • ENDIF. • ENDMETHOD. • METHOD: REFRESH_DATA. • REFRESH IT_EKPO. • ENDMETHOD. • ENDCLASS. "c1 IMPLEMENTATION Cont… • CLASS C1_HANDLER DEFINITION. • PUBLIC SECTION. • METHODS: HANDLE_INITIAL FOR EVENT IS_INITIAL OF C1. • ENDCLASS. • CLASS C1_HANDLER IMPLEMENTATION. • METHOD: HANDLE_INITIAL. • WRITE: / 'EVENT ''IS_INITIAL'' IS TRIGGERED'. • ENDMETHOD. • ENDCLASS. • START-OF-SELECTION. • DATA: O1 TYPE REF TO C1. • CREATE OBJECT O1. • DATA: O2 TYPE REF TO C1_HANDLER. • CREATE OBJECT O2. • * REGISTERING EVENTS WITH CLASS • SET HANDLER O2->HANDLE_INITIAL FOR O1. • CALL METHOD O1->DISPLAY_DATA. • CALL METHOD O1->GET_DATA. • CALL METHOD O1->DISPLAY_DATA. • CALL METHOD O1->APPEND_DATA. • CALL METHOD O1->DISPLAY_DATA. • CALL METHOD O1->REFRESH_DATA. • CALL METHOD O1->DISPLAY_DATA. Calling Methods in different ways • *----------------------------------------------------------------------* • * CLASS c1 DEFINITION • *----------------------------------------------------------------------* • CLASS C1 DEFINITION. • PUBLIC SECTION. • METHODS: m1 importing a type i. • ENDCLASS. "c1 DEFINITION • *----------------------------------------------------------------------* • * CLASS c1 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS C1 IMPLEMENTATION. • METHOD: m1. • write: / a. • ENDMETHOD. • endclass. • START-OF-SELECTION. • DATA: O1 TYPE REF TO C1. • CREATE OBJECT O1. • CALL METHOD O1->m1 exporting a = 4. • CALL METHOD O1->m1( a = 5 ). • CALL METHOD O1->m1( 6 ). Use of Export and Changing parameters • data w_tAx type p decimals 2. • data w_sal type p decimals 2. • *----------------------------------------------------------------------* • * CLASS c1 DEFINITION • *----------------------------------------------------------------------* • CLASS tax DEFINITION. • PUBLIC SECTION. • METHODS: tax_calc importing grade type c • exporting itax type p • changing sal type p. • ENDCLASS. "c1 DEFINITION • . • *----------------------------------------------------------------------* • * CLASS c1 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS tax IMPLEMENTATION. • METHOD: tax_calc. • case grade. • when 'A'. • ITAX = SAL * '0.3'. • when 'B'. • ITAX = SAL * '0.2'. • when 'C'. • ITAX = SAL * '0.1'. • endcase. • SAL = SAL - ITAX. • ENDMETHOD. • endclass. • START-OF-SELECTION. • DATA: O1 TYPE REF TO TAX. • CREATE OBJECT O1. • W_SAL = 30000. • WRITE: / W_SAL, W_TAX. • CALL METHOD O1->TAX_CALC exporting GRADE = 'A' • IMPORTING ITAX = W_TAX • CHANGING SAL = W_SAL. • WRITE: / W_SAL, W_TAX. Method using ITAB as parameter • TYPES:BEGIN OF TY_EKPO, • EBELN TYPE EBELN,EBELP TYPE EBELP,MENGE TYPE EKPO-MENGE,NETPR TYPE EKPO-NETPR, • END OF TY_EKPO. • DATA: IT_EKPO TYPE STANDARD TABLE OF TY_EKPO. • DATA: WA_EKPO TYPE TY_EKPO. • *----------------------------------------------------------------------* • * CLASS c1 DEFINITION • *----------------------------------------------------------------------* • CLASS C1 DEFINITION. • PUBLIC SECTION. • METHODS: GET_EKPO IMPORTING EBELN TYPE EBELN • EXPORTING ITAB_EKPO TYPE ANY TABLE. • ENDCLASS. "c1 DEFINITION • . • *----------------------------------------------------------------------* • * CLASS c1 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS C1 IMPLEMENTATION. • METHOD: GET_EKPO. • SELECT EBELN EBELP MENGE NETPR FROM EKPO INTO TABLE ITAB_EKPO • WHERE EBELN = EBELN. • ENDMETHOD. "get_ekpo • ENDCLASS. "c1 IMPLEMENTATION • START-OF-SELECTION. • PARAMETERS: P_EBELN TYPE EBELN. • DATA: O1 TYPE REF TO C1. • CREATE OBJECT O1. • CALL METHOD O1->GET_EKPO • EXPORTING • EBELN = P_EBELN • IMPORTING • ITAB_EKPO = IT_EKPO. • LOOP AT IT_EKPO INTO WA_EKPO. • WRITE: / WA_EKPO-EBELN,WA_EKPO-EBELP. • ENDLOOP. Using RETURN Parameter • When we use RETURN , EXPORT AND CHANGING should not be there and only one RETURN parameter is allowed • RETURN parameter is always passed by VALUE • DATA: W_NUM TYPE I. • *----------------------------------------------------------------------* • * CLASS c1 DEFINITION • *----------------------------------------------------------------------* • CLASS C1 DEFINITION. • PUBLIC SECTION. • METHODS: M1 IMPORTING A TYPE I • B TYPE I • RETURNING VALUE(RESULT) TYPE I. • ENDCLASS. "C1 DEFINITION • *----------------------------------------------------------------------* • * CLASS c1 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS C1 IMPLEMENTATION. • METHOD: M1. • RESULT = A + B. • ENDMETHOD. "M1 • ENDCLASS. "C1 IMPLEMENTATION • START-OF-SELECTION. • DATA: O1 TYPE REF TO C1. • CREATE OBJECT O1. • CALL METHOD O1->M1 • EXPORTING • A =2 • B =4 • RECEIVING • RESULT = W_NUM. • *or w_num = o1->m1( a = 2 b = 4 ). • WRITE: / W_NUM. Inheritance • *----------------------------------------------------------------------* • * CLASS c1 DEFINITION • *----------------------------------------------------------------------* • CLASS C1 DEFINITION. • PUBLIC SECTION. • METHODS: M1. • DATA: NUM1 TYPE I VALUE 4. • PROTECTED SECTION. • METHODS: M2. • DATA: NUM2 TYPE I VALUE 6. • ENDCLASS. "C1 DEFINITION • . • *----------------------------------------------------------------------* • * CLASS c1 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS C1 IMPLEMENTATION. • METHOD: M1. • WRITE: / 'Iam in M1'. • WRITE: / NUM1. • ENDMETHOD. "M1 • METHOD: M2. • WRITE: / 'Iam in M2'. • WRITE: / NUM2. • ENDMETHOD. "M1 • ENDCLASS. "C1 IMPLEMENTATION • *----------------------------------------------------------------------* • * CLASS C2 DEFINITION • *----------------------------------------------------------------------* • CLASS C2 DEFINITION INHERITING FROM C1. • PUBLIC SECTION. • METHODS: M3. • ENDCLASS. "C2 DEFINITION Cont… • *----------------------------------------------------------------------* • * CLASS C2 IMPLEMENTATION • *----------------------------------------------------------------------* • CLASS C2 IMPLEMENTATION. • METHOD: M3. • WRITE: / 'Iam in M3'. • CALL METHOD M2. • ENDMETHOD. "M3 • ENDCLASS. "C2 IMPLEMENTATION • START-OF-SELECTION. • DATA: O1 TYPE REF TO C2. • CREATE OBJECT O1. • CALL METHOD O1->M1. • * call method O1->m2. • CALL METHOD O1->M3. Polymorphism • interface itf. • methods interface_display. • endinterface.