Um package é um mecanismo suportado pela linguagem de programação Java que permite agrupar tipos relacionados entre si, fornece outro nível de controlo de acesso e realiza uma gestão do espaço de nomes.

Há várias razões para agrupar tipos num mesmo package:

  • Qualquer programador fica a saber que os tipos pertencentes a um mesmo package estão relacionados entre si.
  • Os nomes dos tipos definidos num package não entram em conflito com os tipos definidos noutro package porque cada package cria o seu espaço de nomes.
  • Pode-se permitir que os tipos dentro de um package tenham acesso a determinados membros de tipos do package e restringir o acesso a estes mesmos membros por parte de tipos definidos fora deste package.

Criar um package


Para criar um package, é necessário escolher o nome para o package e inserir uma instrução package com o nome seleccionado no topo de cada ficheiro fonte que contem os tipos se quer incluir no package. No jogo do galo, cada ficheiro deverá ter como primeira instrução o seguinte:
package jogogalo;

O nome completo de uma classe é uma combinação do nome do package a que pertence a classe e o nome da classe: nomePackage.nomeClasse. Por exemplo, a classe Peca definida no package jogogalo tem como nome completo jogogalo.Peca.

Usar os membros de um package


Os tipos definidos dentro de um package são designados como os membros do package. Um tipo tem acesso automático a todos os membros definidos no seu package.


Há três formas de um tipo se referir a outro um membro público de outro package:

  • Referir-se ao membro utilizando o seu nome completo. Esta solução deve ser utilizada apenas quando o membro em causa é raramente referenciado;
  • Importar o membro em causa do package. Esta solução funciona bem se se referenciar poucos tipos do package em causa;
  • Importar todos os membros do package. Esta abordagem funciona bem quando se referem muitos membros do mesmo package;
Para importar um membro de um package utiliza-se a instrução "import nomeCompletoDoTipo;" Por exemplo, a seguinte instrução
import jogogalo.Peca;
permite importar a classe jogogalo.Peca para ser utilizada noutra classe definida noutro package. Após esta instrução, pode-se referir ao tipo Peca utilizando apenas o nome da classe.

Para importar topos os tipos de um dado package deve utilizar a instrução import substituindo o nome da classe pelo caracter asterisco (*).

import jogogalo.*;

Após esta instrução é possível referir-se a qualquer classe definida no package jogogalo simplesmente utilizando o nome da classe.


Gestão dos ficheiros

Cada package pode estar guardado num dado directório do sistema de ficheiros. A parte final do caminho correspondente ao directório coincide com o nome do do package.


Para mais informação sobre packages pode consultar o documentação oficial do Java