Neste capítulo, vamos abordar como organizar projetos Java de forma profissional, utilizando pacotes (packages) e modificadores de acesso para estruturar bem o código e garantir um bom encapsulamento.



📁 O que são Pacotes?

Imagine seu computador. Você não joga todos os seus documentos, fotos e músicas em uma única pasta, certo? Você os organiza em pastas e subpastas para encontrá-los facilmente e separar o que é de trabalho do que é pessoal.

Em Java, Pacotes funcionam exatamente como pastas para suas classes. Eles são um mecanismo para organizar classes, interfaces e subpacotes relacionados, agrupando-os por funcionalidade, domínio, responsabilidade ou qualquer critério lógico.


Por Que Usar Pacotes?

Motivos:


🧪 Criando e Usando Pacotes

A declaração de um pacote deve ser a primeira linha de um arquivo .java (exceto por comentários e a declaração de codificação de caracteres).

// Declaração do pacote para a classe Aluno
package br.com.escola.modelo; // Convenção de domínio invertido

public class Aluno {
    public String nome; // Atributo público (por enquanto, para simplificar o exemplo)
    public int matricula;

    public Aluno(String nome, int matricula) {
        this.nome = nome;
        this.matricula = matricula;
    }

    public void exibirDados() {
        System.out.println("Aluno: " + nome + ", Matrícula: " + matricula);
    }
}

📌 Estrutura Comum de Projetos Java (Hierarquia de Pastas):

seu_projeto/
└── src/                     (Pasta onde fica o código fonte)
    └── br/
        └── com/
            └── minhaempresa/
                └── meuprojeto/
                    ├── modelo/                  (Classes de dados, entidades)
                    │   └── Aluno.java
                    │   └── Professor.java
                    ├── servico/                 (Classes com lógica de negócio)
                    │   └── AlunoService.java
                    │   └── CalculadoraService.java
                    ├── util/                    (Classes de utilidades gerais)
                    │   └── FormatadorDatas.java
                    └── app/                     (Classes de inicialização/execução)
                        └── Main.java

⚙️ Como importar classes de outros pacotes

Para usar uma classe que está em um pacote diferente, você precisa "importá-la". A declaração import informa ao compilador Java onde encontrar a definição da classe.