Você está na página 1de 2

REPORT z07_exercicio_8_1.

*Autor: Luiz Felipe M Passos

CLASS carro DEFINITION.

PUBLIC SECTION.
METHODS constructor IMPORTING marca TYPE string
modelo TYPE string
cor TYPE string
km TYPE i
revisao TYPE sy-datum.

METHODS get_identificacao RETURNING VALUE(identificacao) TYPE string.

METHODS get_km RETURNING VALUE(km) TYPE i.

METHODS get_ultima_revisao RETURNING VALUE(ultima_revisao) TYPE sy-datum.

METHODS atualiza_km IMPORTING p_km TYPE i.

METHODS verifica_revisao IMPORTING p_check TYPE sy-datum RETURNING


VALUE(informacao_revisao) TYPE string.

PROTECTED SECTION.

PRIVATE SECTION.
DATA: marca TYPE string,
modelo TYPE string,
cor TYPE string,
km TYPE i,
revisao TYPE sy-datum.
ENDCLASS.

CLASS carro IMPLEMENTATION.

METHOD constructor.
me->marca = marca.
me->modelo = modelo.
me->cor = cor.
me->km = km.
me->revisao = revisao.
ENDMETHOD.

METHOD get_identificacao.
identificacao = me->marca && '-' && me->modelo && '-' && me->cor.
ENDMETHOD.

METHOD get_km.
km = me->km.
ENDMETHOD.

METHOD get_ultima_revisao.
ultima_revisao = me->revisao.
ENDMETHOD.

METHOD atualiza_km.
me->km = p_km.
ENDMETHOD.
METHOD verifica_revisao.
SKIP.

IF p_check = me->get_ultima_revisao( ).
informacao_revisao = 'Revisão:' && 'X'.
ELSE.
informacao_revisao = 'Revisão:' && ''.
ENDIF.
ENDMETHOD.
ENDCLASS.

DATA: o_carro1 TYPE REF TO carro,


o_carro2 TYPE REF TO carro.

PARAMETERS: p_km TYPE i,


p_check TYPE sy-datum.

AT SELECTION-SCREEN.

START-OF-SELECTION.

CREATE OBJECT o_carro1


EXPORTING
marca = 'BMW'
modelo = 'X5'
cor = 'preta'
km = 30000
revisao = '20211021'.

CREATE OBJECT o_carro2


EXPORTING
marca = 'Ford Mustang'
modelo = 'GT'
cor = 'azul'
km = 6000
revisao = '20211021'.

IF p_km IS NOT INITIAL.


o_carro1->atualiza_km( p_km ).
ENDIF.

WRITE:/ 'Identificação do carro:', o_carro1->get_identificacao( ),


/ 'Quilometragem:', o_carro1->get_km( ) && ' km',
/ 'Ultima revisão:', o_carro1->get_ultima_revisao( ),
/ o_carro1->verifica_revisao( p_check ).

Você também pode gostar