Manipulação de Packages em Java - Site Pessoal de Sérgio Furgeri

Propaganda
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
Download