Idéia de como Estruturar software em Java

Ola pessoal

uma das coisas da OOP é os packages e bem usados eles são muito uteis principalmente na organização de um software, sendo stand-alone ou web… como também a organização da modelagem através da UML.

Gostaria de ter uma idéia sobre como estruturar um software em Java?
existe algum padrão de nome de package? por exemplo, classe recomenda começar com Maiuscula, métodos com minusculas e etc… Package é como uma classe?
como voces estrutram seus software, montam varios packages?
eu tava pensando em um software para um comercio simples, poderia montrar packages assim

  • Cadastros (entraria os cadastros normais, clientes, funcionarios, produtos)
  • Consultas (as consultas normais)
  • Relatorios (os relatorios)
  • Financeiro (Caso tiver folha de pagamento e etc)
  • Venda (Emissão de nota, geração de boletos ou duplicatas e etc)
    e assim vai

vcs acham isso uma boa prática ou não compensa?

quero idéias de vcs que são mais experientes…

obrigado
Junior

Package é tudo em letra minúscula, pois como mapeia nomes de diretórios e alguns sistemas operacionais acabam sendo meio confusos em relação a maiúsculas/minúsculas nos nomes de arquivos e diretórios, acharam melhor assim.

E realmente é só uma questão de organizar os arquivos, pra não ficar centenas deles em um único lugar, então não faz uma enorme diferença o modo como você cria os packages. Eu nem diria que “é uma das coisas de OOP”, pois não impacta muito no funcionamento da sua aplicação. Mas mesmo assim a divisão proposta parece adequada.

é bom especificar também o pacote de cadastro como:

  • Funcionarios
  • Clientes
  • Produtos

em pacotes separados para que cada um deles contenham suas respectivas classes, ficando ainda mais organizadas.
Um bom padrão para nomear pacotes também seria:

br.projeto.funcionarios

br - Brasil
projeto - o nome do seu projeto
classes - suas respectivas classes (clientes, funcionários, relatórios)

Exemplo: br.gerentecontabil.clientes

Na verdade a convenção adotada para o começo do nome do package é o domínio da empresa ao contrário (ex.: br.com.guj) + nome do projeto.
Isso é para garantir que não irá haver duplicidade no nome das classes quando começar a utilizá-las em outros lugares.

Agora lembrei também que no ano passado saiu um artigo na JavaBoutique dando umas orientações de como criar organizar seus packages, então seria interessante ler também: http://javaboutique.internet.com/Stablepackage/

existe também uma recomendação da SUN para os nomes de pacotes,
prefixalos com o dominio da sua empresa ao contrario, assim evita conflitos por exemplo se eu e você estamos desenvolvendo um software de cadastro de clientes para duas empresas poderiamos criar a classe
cadastro.dao.Cliente

se utilizarmos este padrão recomendado pela sun, no meu caso ficaria:
br.com.usiinformatica.cadastro.dao.Cliente

evitando assim que os nossos sistemas possuam uma classe com o mesmo nome no mesmo pacote, e possibilitando que os dois rodem dentro da mesma JVM sem conflitos :slight_smile: