user5653854
user5653854

Reputation:

Why does ABAP divide classes into implementation and definition?

I know that ABAP Objects are kinda old but as far as my knowledge goes you still have to use at least two "sections" to create a complete class.

ABAP:

CLASS CL_MYCLASS DEFINITION.
    PUBLIC SECTION.
        ...
    PROTECTED SECTION.
        ...
    PRIVATE SECTION.
        ...
ENDCLASS.

CLASS CL_MYCLASS IMPLEMENTATION.
    ...
ENDCLASS.

Java:

public class MyClass {

    <visibility> <definition> {
        <implementation>
    }

}

Wouldn't it make development easier/faster by having a combination of both like most modern languages have?

What are the reasons for this separation?

Upvotes: 4

Views: 435

Answers (2)

knut
knut

Reputation: 27875

Maybe another reason:

Most (?) classes are not defined with manual written code, but via SE24. There you define the interface in one dynpro and write the code in another one.

Internally the interfaces are stored in one source, the code is stored in another source. So it is reasonable to separate the interface and the implementation.

Upvotes: 0

vwegert
vwegert

Reputation: 18483

Easier/faster for the human (maybe), but costly for the compiler: It has to sift through the entire code to determine the structure of the class and its members, whereas in the current form, it only needs to compile the definition to determine whether a reference is valid. ABAP is not the only language that separates definition from implementation: Pascal did so for units, and Object Pascal for classes. One might argue that C++ allows for same construct without specifying an implementation section when you're not using inline member function declarations.

Upvotes: 4

Related Questions