terça-feira, 12 de abril de 2011

Programinha Orientado a Objeto

  "  Este programa Mostra como eh dahora trabalha com Orientação a Objeto,
" eh dificil mas eh dahora pegando o conceito vc consegue pelomenos entender
" os programas orientado a objeto que vc for dar manutenção, pq vc vê que o
" Código e mais estruturado e organizado
"  Extra - Quem me deu aula de OO foi o Flavio Furlan do (abap101.com) e
" o Mauricio Cruz da (www.abapzombie.blog.br) portanto qualquer coisa vcs
" falem com eles rsrsrsrsrs e/ou comentem aqui.

*&---------------------------------------------------------------------*
*& Report  ZMJ_PROG_OO.
*&
*&---------------------------------------------------------------------*

REPORT  zmj_prog_oo.

" Tela de Seleção .....
SELECTION-SCREEN BEGIN OF BLOCK WITH FRAME.
PARAMETERS: s_c TYPE OBLIGATORY  .
SELECTION-SCREEN END OF BLOCK a.

"  A 'Definition serve para declaração de tudo que será usado
*----------------------------------------------------------------------*
*       CLASS c1 DEFINITION
*----------------------------------------------------------------------*
CLASS c1 DEFINITION.

  " 'Public Section conterá atributos visiveis pra todos ( progs, functions, etc)
  PUBLIC SECTION.
    "  Olhando bem com o method eh, faz vc lembra de algo ne, e claro parece
    " uma função a ideia eh essa mesmo, contem os importing changing e exporting
    METHODS:   set IMPORTING value(set_value) TYPE i,
               add,
               get EXPORTING value(get_value) TYPE i.

    "  Caso ela vire uma 'SuperClass (classe Mãe) no 'Protected Section os atributos
    " e metodos seram somente usados nas subclasses e nela mesma 
  PROTECTED SECTION.

    " 'Private section conterá atributos visiveis somente dentro da classe.
  PRIVATE SECTION.
    DATA contador TYPE .
ENDCLASS.                    "c1 DEFINITION

"  A 'Implementation serve para mostrar o q tudo que foi declarado faz,
" dica - Toda vez que abrir uma classe ou metodo ja fecha pra visualizar
" melhor oq está Fazendo.
*----------------------------------------------------------------------*
*       CLASS c1 IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION.

  " 'Method que compara a variavel 'Contador com o variavel definida do 'Method
  METHOD set.
    contador = set_value.
  ENDMETHOD.                    "set

  " 'Method que adiciona +2 na variavel 'Contador
  METHOD add.
    ADD 2 TO contador.
  ENDMETHOD.                    "add

  " 'Method que compara variavel definida do 'Method com a varival 'Contador
  METHOD get.
    get_value = contador.
  ENDMETHOD.                    "get
ENDCLASS.                    "c1 IMPLEMENTATION

" Daki pra baixo estaremos trabalhando com tudo que declaramos acima.

" Data cnt com referencia a classe criada dando assim acesso a tudo da classe.
DATA obj_1 TYPE REF TO c1.
DATA TYPE .

" Inicio da seleção ....

START-OF-SELECTION.

  " Para estar trabalhando com ele ainda vc precisa cria-lo como objeto
  CREATE OBJECT obj_1.

  "  Chama o 'Method set para o objeto 'obj_1 onde o valor exportado é a variável
  " declarada como tipo inteiro (linha 75)
  CALL METHOD obj_1->set
    EXPORTING
      set_value = n.

  " Faz n vezes a chamada no 'Method add conforme imput na tela de seleção.
  DO s_c TIMES.
    CALL METHOD obj_1->add.
  ENDDO.

  " Chama o 'Method set para o objeto 'obj_1 onde o valor importado é a variável
  CALL METHOD obj_1->get
    IMPORTING
      get_value = n.

  " Mostra a variável pra 6 vê que funciona.
  WRITE n.
Comentários
0 Comentários

Nenhum comentário:

Postar um comentário