O assunto de hoje são os pacotes, como que utiliza os pacotes de entrada e para que serve, para começar a conversa eu trouxe o seguinte exemplo, os diretórios para quem já é usuário do Windows está familiarizado com essa imagem.
Essas são pastas que tem uma lógica de organização, onde organizamos as nossas imagens, vídeos, planilhas e documentos do Word. Se todos os arquivos ficarem na mesma pasta fica difícil para encontrar o que se deseja e dificulta também a visualização.
Utilizando as pastas acabamos agregando os arquivos por assuntos de forma contextualizada que permite uma organização muito melhor e os pacotes tem o mesmo objetivo na aplicação.
Conforme a aplicação vai crescendo em número de classes e interfaces precisamos organizar isso em pacotes para ficar muito mais fácil a visualização e a busca de determinada classe.
No Java como fazemos para ter duas classes com o mesmo nome no projeto? Esse problema pode ser resolvido utilizando pacotes.
Vamos ver um código para entender como isso funciona.
Temos a classe principal Main.java.
1 2 3 4 5 6 7 |
public class Main{ public static void main(String[] args){ } } |
Essa é a classe Date.java
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 30 |
public class Date { private int dia; private int mes; private int ano; public int getDia(){ return dia; } public void setDia(int dia){ this.dia = dia; } public int getMes(){ return mes; } public void setMes(int mes){ this.mes = mes; } public int getAno(){ return ano; } public void setAno(int ano){ this.ano = ano; } } |
Vamos criar uma objeto da classe Date que criamos.
1 2 3 4 5 6 7 |
public class Main{ public static void main(String[] args){ Date minhaData = new Date(); } } |
O Java ele tem um classe nativa que chama Date.java, para não haver conflito entre a classe Date que criamos e a nativa, temos que informar o caminho completo da classe Date do Java.
1 2 3 4 5 6 7 8 |
public class Main{ public static void main(String[] args){ Date minhaData = new Date(); java.util.Date dataDoJava = new java.util.Date(); } } |
No comando java.util.Date, o java e util são pacotes enquanto a Date é a classe. Dessa maneira agora podemos utilizar duas classes com o mesmo nome.
Os pacotes devem estar escrito com letras minúsculas e se for um projeto web costuma-se criar o pacote com o nome do domínio invertido, por exemplo, br.com.cursojavanow.
Nisso br, com e cursojavanow são pacotes e se por exemplo houver a classe Date dentro desse pacote a chamada ficaria: br.com.cursojavanow.Date.
Para criar pacotes você pode ir até a pasta do projeto e criar pastas ou dentro de uma IDE como exemplo o NetBeans tem a opção de criar pacote, que na verdade é criar pasta.
Vou pegar a classe Date e colocar dentro do pacote br.com.cursojavanow.
Agora os arquivos Main.java e Date.java não estão no mesmo pacote e na classe Date vou colocar na primeira a linha a qual pacote a classe pertence.
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 30 31 32 |
package br.com.cursojavanow; public class Date { private int dia; private int mes; private int ano; public int getDia(){ return dia; } public void setDia(int dia){ this.dia = dia; } public int getMes(){ return mes; } public void setMes(int mes){ this.mes = mes; } public int getAno(){ return ano; } public void setAno(int ano){ this.ano = ano; } } |
Em uma IDE esse nome é colocado automaticamente. Outra mudança é fazer o import da classe Date na classe Main.
Quando movemos manualmente assim o pacote no código temos que fazer a importação dele, na IDE ela faz a importação automaticamente.
1 2 3 4 5 6 7 8 9 10 |
import br.com.cursojavanow.Date; public class Main{ public static void main(String[] args){ Date minhaData = new Date(); java.util.Date dataDoJava = new java.util.Date(); } } |
Outros artigos que você pode achar interessante.
Organização da API Java
A Declaração Import
Poderá ver o vídeo no Youtube Aqui