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.