You are on page 1of 2

TREINAMENTO ABAP

*&---------------------------------------------------------------------*
*& 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

DATA: g_r_hello TYPE REF TO zcl_hello,


g_r_hello_herda TYPE REF TO zcl_hello_heranca,
g_v_hello TYPE string,
g_v_hello2 TYPE char30.

PARAMETERS: p_name TYPE char30 DEFAULT 'World OO!!'.

START-OF-SELECTION.

* ----- pai -----------------------------------------------


* CREATE OBJECT g_r_hello
* EXPORTING
* i_name = p_name.
*
* g_v_hello = g_r_hello->get_full_message( ).
* g_v_hello = g_r_hello->get( ).
*
* WRITE: / g_v_hello.
* -------------------------------------------------------
* ----- herança------------------------------------------
CREATE OBJECT g_r_hello_herda
EXPORTING
i_name = p_name.

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

You might also like