Fundamentos da Instrução Package

O processo de empacotamento em Java é uma abordagem comum para organizar classes e interfaces. Seguindo os padrões da linguagem, um pacote é nomeado obdecendo algumas regras importantes para diminuir a probabilidade de colisão entre classes que possuem o mesmo nome. Os pacotes são vistos como recepientes para classes, mas eles definem na verdade uma hierarquia de diretórios para a localização de classes e interfaces.

Empacotar classes, também tem como objetivo promover o reaproveitamento de código, a sustentabilidade e o princípio orientado a objeto de encapsulamento e modularidade. Este artigo irá demonstrar a você como e quando empacotar suas classes e interfaces seguindo os padrões de codificação definidos na linguagem Java.

1. Instrução package

Em Java existe um grupo de palavras que são reservadas, ou seja, não podem ser usadas como nome de variáveis. Quando classes e interfaces são criadas em um pacote específico é necessário colocar no topo da classe e da interface, como primeira instrução, o nome completo do pacote. A instrução package é uma destas palavras reservadas da linguagem e é ela que define que tal classe pertence a um pacote.

Quando um pacote for criado, ele deve seguir uma regra de nomeação que é a seguinte: utilize o endereço eletrônico da empresa mballem.wordpress.com de trás para frente com.wordpress.mballem, seguido do nome do projeto com.wordpress.mballem.artigos e a partir deste ponto insira dentro as classes, interfaces e até novos pacotes se necessário. Essa regra de nomeação foi desenvolvida para evitar que classes e interfaces de mesmo nome não acabem em conflito quando importadas em um mesmo projeto. Por exemplo, a classe Cliente criada na empresa “A” e outra na empresa “B” poderia acabar em conflito se usadas em um mesmo projeto e não tivessem sido separadas por pacotes distintos. Já o nome do projeto é importante para definir o objetivo das classes contidas nele.

Outras regras sobre o uso da instrução “package” são as seguintes:

  • São limitadas a uma por arquivo;
  • O nome dos pacotes são similares a estrutura de um diretório. O nome do pacote com.wordpress.mballem.artigos seria equivalente ao diretório com/wordpress/mballem/artigos;
  • Os nomes dos pacotes que começam com java ou com javax são reservados para o uso da JavaSoft, a unidade comercial da Sun Microsystems, atualmente adquirida pela Oracle;
  • Os pacotes devem ter seus nomes em letras minúsculas e palavras compostas devem ser separadas pelo caractere underscore com.wordpress.mballem.artigos.artigo_pacotes.

Quando você projeta pacotes em Java para agrupar classes, os seguintes pontos devem ser considerados:

Atributo do pacoteBenefício de aplicação
Acoplamento de classesDependências de pacotes são reduzidas com acoplamento de classes.
Acoplamento de sistemaDependências de pacotes são reduzidas com acoplamento de sistemas.
Tamanho do pacoteNormalmente, pacotes maiores suportam reutilização, enquanto que pacotes menores suportam melhor a manutenção.
ManutençãoFrequentemente, as mudanças de software podem ser limitadas a um único pacote quando os pacotes são orientados a funcionalidades.
NomenclaturaPense em convenções quando nomear seus pacotes. Utilize nomeação reversa de domínios para a estrutura de pacotes. Utilize letras minúsculas com underscore (_) para separar palavras em nomes de pacotes.

2. Por que seguir as regras da especificação?

A especificação de codificação Java define varias regras para que o código desenvolvido por um programador americano, seja perfeitamente entendido e compreensível para seus colegas e também por programadores brasileiros, ingleses, italianos, entre outros.

Veja um exemplo de como um conflito de classes poderia ocorrer se não usássemos corretamente as especificações referentes a empacotamento. Uma empresa chamada Cápsula (capsula.com.br) está desenvolvendo um projeto Geometry. Neste projeto não está sendo utilizada a especificação Java de nomeação dos pacotes. Um grupo de classes foi criado, PlanePoint e Polygon. Na mesma empresa um segundo projeto está sendo desenvolvido, o Simulator, com as classes PlaneHotAirBalloon e Helicopter. Veja que se for necessário unir estes projetos, teria conflito entre as classes Plane. Usando corretamente a nomenclatura de pacotes esse problema deixa de existir, teríamos dois pacotes distintos, o br.com.capsula.geometry e o br.com.capsula.simulator.

Quando uma classe é criada em um pacote específico a instrução package deve estar no topo do arquivo desta classe, veja na Listagem 1 o exemplo da classe Plane do projeto Geometry. E na Listagem 2 o exemplo da classe Plane do projeto Simulator.

Listagem 1. Geometry – Plane.java.
package br.com.capsula.geometry;

public class Plane {
//conteudo da classe
}
Listagem 2. Simulator – Plane.java.
package br.com.capsula.simulator;

public class Plane {
//conteudo da classe
}

Se o pacote “power” for adicionado ao projeto Simulator, e nele for criada a classe Energy, se deve declarar a instrução “package” da seguinte maneira (Listagem 3):

Listagem 3. Power – Energy.java.
package br.com.capsula.simulator.power;

public class Energy {
//conteudo da classe
}

Referencia:

Ballem

Marcio Ballem é bacharel em Sistemas de Informação pelo Centro Universitário Franciscano em Santa Maria/RS. Tem experiência com desenvolvimento Delphi e Java em projetos para gestão pública e acadêmica. Possui certificação em Java, OCJP 6.

Você pode gostar...