Professional Documents
Culture Documents
*&---------------------------------------------------------------------*
*& Report Z99HELLO_06
*&
*&---------------------------------------------------------------------*
REPORT z99hello_06 NO STANDARD PAGE HEADING.
* Agora sim, temos uma separação bem definida entre quem é responsável
* por tratar com o usuário (programa principal, com PARAMETERS e WRITE)
* e quem cuidará das regras do texto (classe LCL_HELLO). Ainda sim,
* estaremos protegidos do Performa Fanboy e deixamos nosso programa
* reutilizável.
* Quando você começa a usar programação orientada a objetos você
* naturalmente começa a pensar nesses conceitos, como robustes,
* facilidade de manutenção, encapsulamento
* Como regra prática, procure deixar comandos WRITEs fora das
* classes de negócio (Model).
*----------------------------------------------------------------------*
* CLASS lcl_hello DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*CLASS lcl_hello DEFINITION.
* PUBLIC SECTION.
*
* DATA: ende TYPE char30.
*
* METHODS: constructor
* IMPORTING
* ic_name TYPE char30.
*
* METHODS: set
* IMPORTING
* i_name TYPE char30,
*
* get
* RETURNING VALUE(r_name) TYPE char30,
*
* get_full_message
* RETURNING VALUE(r_message) TYPE string.
* PRIVATE SECTION.
* DATA: name TYPE char30.
*
*ENDCLASS. "lcl_hello DEFINITION
*
**----------------------------------------------------------------------*
** CLASS lcl_hello IMPLEMENTATION
**----------------------------------------------------------------------*
**
**----------------------------------------------------------------------*
*CLASS lcl_hello IMPLEMENTATION.
* METHOD constructor.
* CALL METHOD me->set
* EXPORTING
HELLO_06 1
TREINAMENTO ABAP
* i_name = ic_name.
* ENDMETHOD. "constructor
*
* METHOD set.
* IF i_name = 'PROCEDURAL!!'.
* me->name = 'I would say... I love OO!'.
* ELSE.
* me->name = i_name.
* ENDIF.
* ENDMETHOD. "set
*
* METHOD get.
* r_name = me->name.
* ENDMETHOD. "get
*
* METHOD get_full_message.
* CONCATENATE 'Hello:' me->name INTO r_message SEPARATED BY space.
* ENDMETHOD. "get_full_message
*ENDCLASS. "lcl_hello IMPLEMENTATION
START-OF-SELECTION.
g_v_hello = g_r_hello_herda->get_full_message( ).
WRITE: / g_v_hello.
g_v_hello = g_r_hello_herda->get( ).
WRITE: / g_v_hello.
g_v_hello = g_r_hello_herda->get_nova_menssagem( ).
WRITE: / g_v_hello.
HELLO_06 2