logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!

AS3 Patterns – Iterator

Colocado por DClick Team na(s) categoria(s): 1, 4, 6, Actionscript, app, AR, as3, BI, boolean, class, collection, Curso, dados, demo, Diversos, for, function, git, IE, int, interface, O, on, Outros, pattern, programação, RIA, Ria’s Geral, TAT, Tema, Tree, Twitter, UI em 04 19th, 2011 | Sem comentários

Twitter!

Na programação orientada a objetos um iterador é um objeto que possibilita o programador a examinar um objeto que contem outros objetos (container).

As semânticas de acesso dos iteradores são fixas e você pode implementar diversos tipos de iteradores de forma desacoplada a partir de uma interface.
Imagine um iterador como um cursor de uma base de dados onde os elementos são acessados sequencialmente (cursor).

Os arquivos utilizados podem ser encontrados em:
https://github.com/wlepinski/as3-patterns/tree/master/Iterator

Basicamente a interface de um iterador pode ser definida como:

1
2
3
4
5
6
7
8
public interface IIterator

? ? function first ():void;
? ? function next ():void;
? ? function isDone ():Boolean;
? ? function currentItem ():*;
? ? function hasNext():Boolean;

Com essa interface podemos prover algumas implementações de iteradores para qualquer tipo de objeto que descreva qual o seu iterador, a interface abaixo será utilizada pelos nosso objetos que podem ser iterados.

1
2
3
4
5
6
7
public interface IAbstractList

? ? function createIterator ():IIterator;
? ? function count ():int;
? ? function append ( item:Object ):void;
? ? function remove ( item:Object ):void;

Vamos criar um iterador (ArrayIterator) que implementa a interface IIterator e recebe como parâmetro no construtor um ArrayList que também vamos implementar a seguir:

Implementação do ArrayIterator:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class ArrayIterator implements IIterator

? ? public var index:int = 0;
? ? public var list:ArrayList;

? ? public function ArrayIterator ( list:ArrayList )
? ? ? ? this.list = list;
? ?
? ? ? ? ? ?
? ? public function first ():void
? ? ? ? index = 0;
? ?
? ?
? ? public function next ():void
? ? ? ? index++;
? ?
? ?
? ? public function isDone ():Boolean
? ? ? ? return index >= list.count();
? ?
? ?
? ? public function currentItem ():*
? ? ? ? return list.array index ;
? ?
? ?
? ? public function hasNext ():Boolean
? ? ? ? return index < list.count();
? ?
}

Implementação do ArrayList:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class ArrayList implements IAbstractList

? ? public var array:ArrayCollection = new ArrayCollection();
? ?
? ? public function ArrayList ()
? ?
? ? ? ?
? ? public function createIterator ():IIterator
? ?
? ? ? ? return new ArrayIterator( this );
? ?
? ?
? ? public function count ():int
? ?
? ? ? ? return array.length;
? ?
? ?
? ? public function append ( item:Object ):void
? ?
? ? ? ? array.addItem( item );
? ?
? ?
? ? public function remove ( item:Object ):void
? ?
? ? ? ? array.removeItemAt( array.getItemIndex( item ) );
? ?
}

Podemos utilizar o iterador de duas formas, em um “for” ou em um “while”:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var list:IAbstractList;
var iterator:IIterator;

// Utilizando o for????
list = new ArrayList();
list.append( “Array Item 1″ );
list.append( “Array Item 2″ );
list.append( “Array Item 3″ );

iterator = list.createIterator();
? ? ? ?
for ( iterator.first(); !iterator.isDone(); iterator.next() )

? ? trace( iterator.currentItem() );

// Usando while
list = new ArrayList();
list.append( “Array2 Item 1″ );
list.append( “Array2 Item 2″ );
list.append( “Array2 Item 3″ );

iterator = list.createIterator();

while ( iterator.hasNext() )
? ? trace( iterator.currentItem() );
? ? iterator.next();



Veja o post original no blog do autor aqui!  

DClick Team

Escrito por DClick Team @ http://blog.dclick.com.br/pt/
Saiba mais sobre o autor na sua pagina de perfil
Outros posts do autor:
» Formulários dinâmicos com validadores
» Adobe Community Experts e o Feedback do dia-a-dia
» Data Synchronization com AIR e BlazeDS

Deixe um comentário



Spam Protection by WP-SpamFree

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2791 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com