Você está na página 1de 4

Padro de Projeto Iterator

Rodrigo F. Moraes da Cruz1


1

Sistemas de informao Universidade Federal do do Par (UFPA) Caixa Postal 68400-000 Camet PA Brazil
fagnercruz2008@hotmail.com

Abstract. This article aims to understand the functioning of the Iterator design pattern will be addressed participants making up this pattern, its concepts, its applicability when using it, consequences of use, its drawbacks and disadvantages and two practical examples in Java. Resumo. Este artigo tem como finalidade compreender o funcionamento do padro de projeto Iterator, sero abordados os participantes que compe este padro, seus conceitos, sua aplicabilidade quando us-lo, consequncias de uso, suas desvantagens e desvantagens e dois exemplos prticos em Java.

Introduo Os Padres de Projeto tambm conhecidos como Design Patterns (em ingls) so solues j encontradas, testadas e comprovadas e que podemos aplicar aos projetos sem ter que reinventar a roda. Diversos Padres de Projeto j foram catalogados e so um conjunto de boas prticas que devemos seguir e utilizar em projetos de software orientados a objetos. Padres de Projetos basicamente descrevem solues para problemas recorrentes no desenvolvimento de sistemas de software orientados a objetos. Um padro de projeto estabelece um nome e define o problema, a soluo, quando aplicar esta soluo (contexto) e suas consequncias. Alm disso, os Padres de Projeto tambm definem um vocabulrio comum que facilita a comunicao, documentao e aprendizado dos sistemas de software um desses padres o Iterator como veremos a seguir. 1.Conceito Em programao de computadores, um iterator, em portugus iterador, um objeto que permite a um programador examinar um container. Vrios tipos de iteradores so frequentemente fornecidos atravs de uma interface de container. Apesar da interface e semntica de um determinado iterador serem fixas, iteradores so frequentemente implementados em termos de estruturas subjacentes a uma implementao de container e so muitas vezes ligados intimamente ao container para permitir a semntica operacional do iterador. Observe que um iterador percorre e tambm d acesso aos elementos de dados em um container, mas no realiza iterao (isto , no sem alguma liberdade significativa tomada com este conceito ou com uso trivial da terminologia). Um iterador comportamentalmente semelhante a um cursor de banco de dados. Iteradores datam da linguagem de programao CLU de 1974 2.Aplicabilidade

Quando devemos usar o padro de projeto Iterator:

-Para acessar os contedo de um agregado de objetos sem expor a sua representao interna. Para suportar mltiplos percursos de agregados de objetos. Para fornecer uma interface uniforme que percorra diferentes estruturas agregadas (suportando iterao polimrfica).

3.Estrutura

Figura 1. Essa figura representa o diagrama UML do Padro de projeto Iterator.

Iterator: define a interface dos objetos que encapsulam toda a complexidade para percorrer os elementos do Aggregate. ConcreteIterator: implementao da interface Iterator para um tipo especfico de Aggregate. Aggregate: define a interface das colees de objetos que podem ter seus elementos percorridos atravs de um Iterator. ConcreteAggregate: estrutura de dados que implementa o Aggregate. 4.Vantagens O Padro Iterator encapsula as implementaes das iteraes, a partir de agora no precisamos mais ver que tipo de coleo est sendo utilizada pelos objetos como um ArrayList ou um HashTable. Com a utilizao do Padro Iterator precisamos apenas de um loop para lidarmos polimorficamente com qualquer coleo de itens desde que ela apenas implemente o Iterator. Anteriormente tambm estvamos com o cdigo vinculado a classes como ArrayList, agora usamos apenas uma interface (Iterator), lembre-se de programar sempre_para_interfaces.

5.Desvantagens -Mais de um percurso pode estar em curso num mesmo agregado. 6.Exemplo No exemplo temos utilizao do padro de projeto Iterator para acessar os elementos de um vetor. Para bem ilustrar as funcionalidades deste padro foi criada uma classe Vetor (Aggregate) com as funcionalidades bsicas para acessar seus elementos e tambm um mtodo chamado createIterador para instanciar o Iterador responsvel por acessar os elementos do vetor membro da classe. Alm desta classe, definiu-se uma classe abstrata Iterador com trs mtodos, um para acessar o primeiro elemento de um tipo agregado, outro para acessar o ltimo elemento e, finalmente, um mtodo para avanar para o prximo elemento. A partir desta classe abstrata, pode-se criar diferentes iteradores concretos. No exemplo apresentado criou-se um iterador para acessar os elementos de um vetor de inteiros Cdigo

Diagrama

6.Concluso O Padro Iterator permite o acesso sequencial aos elementos de um agregado sem expor a sua implementao subjacente. O Padro Iterator tambm responsvel por toda a tarefa de iterao, retirando assim do agregado a responsabilidade, dessa forma simplificando a interface e a sua implementao deixando a responsabilidade onde deveria estar. Por fim, o padro Iterator nos remete a dois princpios de bons projetos que da alta coeso com as classes projetadas em torno de um conjunto de funes relacionadas entre si e da Responsabilidade nica, onde a classe possui uma nica finalidade ou responsabilidade. Apesar da coeso ter um conceito mais genrico, ela est estritamente relacionada com o conceito_da_Responsabilidade_nica .

7. Referncias Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra. Head First Design Patterns. O'Reilly Media, 2004. Gamma, E., Helm, R., Johnson, R., Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, 2010. .

Você também pode gostar