🎯 Objetivo: Neste capítulo, vamos abordar como organizar projetos C# de forma profissional, utilizando namespaces e modificadores de acesso para estruturar bem o código e garantir um bom encapsulamento.
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 C#, namespaces funcionam exatamente como pastas para suas classes. Eles são um mecanismo para organizar classes, structs, interfaces e outros tipos, agrupando-os por funcionalidade, domínio, responsabilidade ou qualquer critério lógico.
Ponto Chave: Namespaces evitam conflitos de nomes (você pode ter uma classe Utils em vários namespaces diferentes sem problemas) e controlam a visibilidade de tipos e membros.
Motivos:
Empresa.Erp.Cliente e Empresa.Crm.Vendas.Pessoa podem coexistir.A declaração de um namespace geralmente envolve o nome do projeto seguido por uma hierarquia lógica. A sintaxe de arquivo é a mais comum em projetos modernos.
// Declaração do namespace para a classe Aluno
namespace Escola.Modelo
{
public class Aluno
{
public string Nome { get; set; }
public int Matricula { get; set; }
public Aluno(string nome, int matricula)
{
Nome = nome;
Matricula = matricula;
}
public void ExibirDados()
{
Console.WriteLine($"Aluno: {Nome}, Matrícula: {Matricula}");
}
}
}
seu_projeto/
└── MeuProjeto.csproj (Arquivo do projeto)
└── Modelo/ (Pasta que corresponde ao namespace MeuProjeto.Modelo)
├── Aluno.cs
└── Professor.cs
└── Servico/ (Pasta que corresponde ao namespace MeuProjeto.Servico)
├── AlunoService.cs
└── CalculadoraService.cs
└── Util/ (Pasta que corresponde ao namespace MeuProjeto.Util)
└── FormatadorDatas.cs
└── Program.cs (Ponto de entrada do programa)
Para usar uma classe que está em um namespace diferente, você precisa "importá-la" usando a palavra-chave using. A declaração using informa ao compilador C# onde encontrar a definição do tipo.