Namespace (.NET) e Package (Java)
À medida que um programa cresce, temos alguns problemas como por exemplo: muito código é mais difícil de entender e manter; mais código normalmente significa mais nomes, mais dados nomeados, mais métodos nomeados e mais classes nomeadas. à medida que o número de nomes aumenta, aumentam também as chances da compilação do projeto falhar porque dois ou mais nomes estão em conflito.
Antigamente, os programadores tentavam resolver o conflito pré-fixando os nomes com algum tipo de qualificador. Essa solução não é boa porque não é escalável, os nomes tornam-se maiores e você gasta menos tempo escrevendo o software e mais tempo digitando e lendo e relendo nomes longos e incompreensíveis.
Para resolver este problema, tanto no .NET quanto no Java, podemos criar um “contêiner” nomeado, desta forma duas classes com o mesmo nome não serão confundidas entre si se elas estiverem em “contêiners” diferentes. É uma boa prática definir todas as suas classes em “contêiners”.
Os contêiners podem ser utilizados tanto no .NET quanto no Java, no .NET chamamos de “namespaces” e no Java chamamos de “packages” (pacotes).
Conceitualmente não existem diferenças entre as duas linguagens, porém, sintaticamente existem diferenças, mas nada que não seja de fácil assimilação. Veja:
- Em Java, um package representa fisicamente uma pasta (ou diretório para os puristas);
- Em .NET um namespace não está relacionado a uma pasta. É possível ter uma pasta com um nome e dentro desta pasta, classes que pertençam a um namespace com outro nome, ou ainda, em uma pasta é possível existirem classes com namespaces diferente.
Exemplo .NET:
namespace Financeiro
{
class Calculo
{
……
}
}
namespace Estoque
{
class Calculo
{
……
}
}
Exemplo Java:
package br.com.meusistema.financeiro;
public class calculo {
…….
}
package br.com.meusistema.estoque;
public class calculo {
…….
}
Nos dois exemplos acima (.NET e Java), conseguimos ter duas classes com o mesmo nome, porém em contêiners diferentes dentro do mesmo sistema.
.NET
Financeiro.calculo
Estoque.calculo
Java
br.com.meusistema.financeiro.calculo
br.com.meusistema.estoque.calculo