Manipulação de Packages em Java Professor Sérgio Furgeri Manipulação de Packages em Java Pacote é um conjunto de classes armazenadas em um mesmo diretório. Em termos gerais, um pacote pode ser comparado a libraries de outras linguagens de programação. Exemplos de pacotes em java: Convenções com relação aos nomes de pacotes: • Utilizar apenas letras minúsculas, podendo ser separadas por ponto (.); • É indicado que os pacotes sejam nomeados com o nome reverso ao site a partir do qual o pacote se encontra armazenado. Para se definir um pacote: package nome-do-pacote; exemplos: package ipep.exemplos.ex03; package br.com.ipep.exemplo01 Como encontrar uma classe dentro de um pacote: Supondo que a classe exemplo01 encontra-se no pacote ipep.exemplos, então o caminho do arquivo .class da classe será ipep.exemplos.exemplo01. Como importar um pacote ou uma classe do pacote: import nome-do-pacote.nome-do.subpacote.nome-da-classe exemplos: import java.io.InputStream; // importa apenas a classe InputStream. import java.io.*; // importa todas as classes do subpacote io. Página 1 Manipulação de Packages em Java Professor Sérgio Furgeri 1. Crie um diretório na unidade C chamado de meudiretorio. Digite e compile a classe 1 abaixo. Como está especificado que a classe pertence ao pacote meupacote, durante o processo de compilação será criada a pasta meupacote (caso ela não exista), a partir do pacote onde classe1 se encontra. Ao ser compilado, o arquivo classe1.class será armazenado na pasta meupacote. Classe 1 package meupacote; class Classe1 { public static int soma(int a,int b) { return(a+b); } } 2. Digite e compile a classe 2 abaixo na mesma pasta da classe1. Como está especificado que a classe também pertence ao pacote meupacote, durante o processo de compilação será gerado o arquivo classe2.class na pasta meupacote. Classe 2 package meupacote; class Classe2 { public static int sub(int a,int b) { return(a-b); } } 3. Digite e compile a classe3 abaixo na mesma pasta das classes 1 e 2. Da mesma forma, o arquivo classe3.class será gerado na pasta meupacote. Classe 3 package meupacote; class Classe3 { public static void main(String args[]) { Classe1 c1 = new Classe1(); Classe2 c2 = new Classe2(); System.out.println(c1.soma(1,2)); System.out.println(c2.sub(2,1)); } Página 2 Manipulação de Packages em Java Professor Sérgio Furgeri } Observações: • Para executar uma classe a partir do DOS deve-se colocar o nome do pacote, seguido do nome da classe: java meupacote.Classe3. • A classe 3 enxerga as classes 1 e 2 porque pertence ao mesmo pacote. • Ao se retirar a linha package meuPacote da classe 3 ela não reconhece as classes 1 e 2. 4. Vamos analisar a classe3, modificando seu pacote para outropacote: package outropacote; class classe3 { public static void main(String args[]) { //nome-do-pacote.nome-da-classe meupacote.Classe1 c1 = new meupacote.Classe1(); //caminho do pacote (em relação a classe3) // a classe3 está em C:\aulas\Ipep\Java // a classe1 está em C:\aulas\Ipep\Java\meuPacote meupacote.Classe2 c2 = new meupacote.Classe2(); System.out.println(c1.soma(1,2)); System.out.println(c2.sub(2,1)); } } • O uso do pacote acima não é permitido porque as classes 1 e 2 não foram definidas como públicas, isto é, elas podem ser acessadas apenas a partir do mesmo pacote. • Gera o erro: meupacote.Classe1 is not public in meupacote; cannot be accessed from outside package. • Para resolver o problema basta definir as classes 1 e 2 como public (public class Classe1). Será criada mais uma pasta chamada outropacote contendo o arquivo Classe3.class. Página 3 Manipulação de Packages em Java Professor Sérgio Furgeri 5. Outra forma de definir a classe 3 é o comando import: import meupacote.Classe1; //import nome-do-pacote.nome-da-classe import meupacote.Classe2; // também pode ser usado o comando import meupacote.*; (desde que Classe3 esteja em um pacote). class Classe3 { public static void main(String args[]) { Classe1 c1 = new Classe1(); // não é necessário colocar o nome do pacote Classe2 c2 = new Classe2(); System.out.println(c1.soma(1,2)); System.out.println(c2.sub(2,1)); } } Página 4