Pacotes
Na linguagem Java existe uma maneira simples e direta de se organizar arquivos, além de possibilitar que se utilize mais de uma classe de mesmo nome no mesmo projeto. Essa forma de organização recebe o nome de empacotamento. No Java utilizamos a palavra package para representar o pacote da classe.
A organização de pacotes ocorre de forma semelhante a uma biblioteca de dados. Vários arquivos são agrupados em pastas comuns, logo se tem por hábito agrupar arquivos de funções semelhantes em mesmas pastas.
A árvore hierárquica do pacote não possui regras restritas de limitação de quantidade de nós, apenas recomenda-se notação semelhante a da Internet, a fim de reduzir ao máximo a possibilidade de termos mais de um pacote de arquivos de mesmo nome.
uma boa pratica para nomes de pacotes é utilizar apenas uma palavra como nome do pacote, por exemplo, biblioteca, pessoa, email, e o nome do pacote escrito em minúsculo. O pacote não pode ter o nome de uma palavra-chave do java e não pode começar com número ou caracteres especiais (exceto $ e _).
No exemplo a seguir vamos criar a estrutura de pacotes br.biblioteca.telas e dentro deste pacote vamos colocar a classe CadastroLivro:
Criada então essa hierarquia, o próximo passo é declarar no arquivo da classe o nome do pacote ao qual ela pertence. Esta declaração deve ser feita obrigatoriamente na primeira linha do arquivo (sem contar comentários) da seguinte maneira:
Note na declaração acima que as pastas foram divididas por pontos. Logo a mesma hierarquia de pastas deve ser seguida nesta declaração.
Desta forma, os arquivos ficam realmente organizados e, de certa forma, isolados de outros pacotes. Vale lembrar que, quando criamos uma classe na raiz de nosso projeto esta classe não possui pacote.
O pacote de desenvolvimento Java já traz consigo muitos pacotes de funções especificas, sendo alguns eles:
Pacote | Descrição |
---|---|
java.lang | Pacote usual da linguagem |
java.util | Utilitários da linguagem |
java.io | Pacote de entrada e saída |
java.awt | Pacote de interface gráfica |
java.net | Pacote de rede |
java.sql | Pacote de banco de dados |
Quando se está desenvolvendo uma classe e deseja-se utilizar uma classe de outro pacote, somos obrigados a declarar esta utilização. Para tal, utilizamos a palavra-chave import.
De forma semelhante a palavra-chave package, a palavra-chave import deve considerar a hierarquia de pastas e separá-las por pontos, da seguinte forma:
No exemplo anterior, demonstramos que a classe CadastroLivro irá utilizar a classe “Livro” do pacote “br.biblioteca.model”.
Quando queremos utilizar muitas classes de um mesmo pacote, podemos importar o pacote inteiro utilizando o caractere asterisco ( * ) no lugar do nome das classes.
Neste exemplo é criado um novo objeto a partir da classe Livro, que está dentro do pacote br.biblioteca.model, como utilizamos o * no import, podemos utilizar qualquer classe do pacote model.
OBS: Durante o processo de compilação do arquivo .java para .class, o compilador primeiro importa as classes que estão com o pacote completo e depois procura pelas classes que tiveram o pacote inteiro importado, então normalmente é utilizado o nome inteiro do pacote e da classe, assim as classes são compiladas um pouco mais rápido.
No vídeo a seguir mostramos passo a passo como funciona a organização das classes e uso dos packages: