Objetos – Collections e Iterators – Abap

Publicado: 6 de março de 2014 em Abap

Iterator

Em português iterador, é um objeto que permite a um programador examinar uma coleção ou container. Vários tipos de iteradores são frequentemente fornecidos através de uma interface de container. Apesar da interface e semântica de um determinado iterador serem fixas, iteradores são frequentemente implementados em termos de estruturas subjacentes a uma implementação de container e são muitas vezes ligados intimamente ao container para permitir a semântica operacional do iterador.

Observe que um iterador percorre e também dá acesso aos elementos de dados em um container, mas não realiza iteração (isto é, não sem alguma liberdade significativa tomada com este conceito ou com uso trivial da terminologia). Um iterador tem um comportamento semelhante a um cursor de banco de dados. Iteradores datam da linguagem de programação CLU de 1974.

Collection

É uma coleção, às vezes chamada de um recipiente(container), é simplesmente um objeto que agrupa vários elementos em uma única unidade. Coleções são usadas ​​para armazenar, recuperar, manipular e comunicar dados agregados, ou seja uma coleção é um objeto que contém outros objetos, existem outras coleções com diferentes capacidades.

Historicamente, o quadro de coleções têm sido bastante complexo, o que lhes deu uma reputação de ter uma grande curva de aprendizagem. Os exemplos mais conhecidos de frameworks de coleções são o C ++ Standard Template Library (STL). A nomenclatura das APIs e suas sintaxes podem mudar de uma linguagem de programação para outra.

As Classes ABAP:

A SAP fornece por padrão duas classes para manipular objetos usando coleções e iteradores:

  • CL_OBJECT_COLLECTION – para a coleta de objetos.
  • CL_OBJECT_COLLECTION_ITERATOR para Iterator.

As interfaces subjacentes não são genéricas o suficiente para distribuir outros tipos de opções de coleta, métodos obrigatórios, como, adicionar, remover, etc,  não fazem parte da interface. Portanto, você precisa criar interfaces de usuário semelhantes as da implementação da classes Standard e que podem ser usadas ​​em diferentes coleções e implementação de iterador.

A partir das classes Standards é possível criar uma classe Z para as coleções e iteradores, para que se assemelhe ao framework de coleções do java que possui muito mais  flexibilidade para colecionar e iterar objetos.

Exemplo:

neste exemplo mostramos como se usa uma Collection(coleções) para guardar uma lista de objetos (Array), e navegar pela lista de objetos usando o seu Iterator(iterador).

Abap

*&---------------------------------------------------------------------*
*& Report  ZITERADOR
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Coleções e Iteradores
*&---------------------------------------------------------------------*

REPORT  ZITERADOR.

* Classe Item

CLASS ITEM DEFINITION.
    PUBLIC SECTION.

    DATA: ITENS TYPE STRING READ-ONLY.

    METHODS: CONSTRUCTOR IMPORTING ITENS TYPE STRING.

ENDCLASS.

CLASS ITEM IMPLEMENTATION.

   METHOD constructor.
      me->ITENS = ITENS.
   ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

* Define collection LIST

DATA LIST TYPE REF TO CL_OBJECT_COLLECTION.
CREATE OBJECT LIST.

* Cria Objeto Item
DATA ITEM TYPE REF TO ITEM.

* musicas dos Beatles

PERFORM ADD USING 'Let it be'.
PERFORM ADD USING 'Dont let me down'.
PERFORM ADD USING 'Come togheter'.
PERFORM ADD USING 'Hey Jude'.
PERFORM ADD USING 'Twist and shout'.

* Cria Iterador

DATA ITERADOR TYPE REF TO CL_OBJECT_COLLECTION_ITERATOR.
ITERADOR = LIST->GET_ITERATOR( ).

* Usa iterator como um cursor de banco de dados

WHILE  ITERADOR->HAS_NEXT( ) IS NOT INITIAL.
   ITEM ?= ITERADOR->GET_NEXT( ).
   WRITE : / ITEM->ITENS.
ENDWHILE.

* Adiciona Itens na lista

FORM ADD USING VALUE(S) TYPE STRING.
   CREATE OBJECT ITEM
         exporting
             ITENS = S.
   LIST->ADD( ITEM ) .
ENDFORM.
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s