Uma coleção é um tipo de dado estruturado usado para agrupar, em uma única unidade, vários elementos homogêneos ou heterogêneos. Conceitualmente, na programação orientada a objetos, a coleção é uma estrutura de dados (um objeto) que pode armazenar referências a outros objetos, ou seja, é uma estrutura usada para armazenar, recuperar e fazer operações sobre dados de vários objetos.
Normalmente, as coleções contêm referências a objetos que são inteiramente do mesmo tipo. As suas interfaces de estrutura declaram as operações a serem realizadas genericamente em vários tipos de coleções.
Com as coleções, os programadores utilizam estruturas de dados existentes, sem se preocupar com a maneira como elas são implementadas. Esse é um exemplo maravilhoso de reutilização de código. Os desenvolvedores podem codificar mais rápido e esperar um bom desempenho, com maximização da velocidade de execução e minimização do consumo de memória.
Como outras vantagens adicionais, podemos listar:
- Redução do esforço de programação, a partir do uso de estruturas de dados e algoritmos úteis, para diminuir a reescrita;
- Aumento da performance: como as várias implementações de cada interface são substituíveis, os programas podem ser facilmente refinados trocando-se as implementações;
- Reduz o esforço de aprendizado de API’s, eliminando a necessidade de se aprender várias API’s de coleções diferentes;
- Redução do esforço de projetar e implementar API’s, eliminando a necessidade de se criar API’s de coleções próprias;
- Promover o reuso de software, fornecendo uma interface padrão para coleções e algoritmos para manipulá-los.
Em particular nesse último item, normalmente os programadores implementam coleções de objetos através da simples implementação de Arrays. Desta forma, deveremos toda vez que estabelecer um novo Array de um tipo de objeto específico, implementar as suas funções de manipulação, tais como a inserção, remoção, buscas diversas, dentre outras. Temos assim, um processo de reescrita de código, dificultando a reutilização e a fácil implementação do conjunto de objetos.
Coleção de objetos, portanto, se caracteriza pela implementação do conceito de Agregação, um tipo de relacionamento um para muitos, sendo um padrão comumente utilizado em programação orientada a objetos. Agregação significa que uma classe tem uma lista de instâncias de outras classes, o que na verdade vem de encontro com a definição de coleções.
Podemos ter exemplos de agregação e como ela é usada para modelar um relacionamento de composição entre elementos do modelo, quando uma biblioteca contém Livros, ou dentro de uma empresa, quando Departamentos são constituídos de Funcionários. Para modelarmos isso, o (Departamento) agregado possui uma associação de agregação com suas partes integrantes (Funcionário).
Neste artigo mostraremos como se implementar coleções de objetos através das classes ...