🧩 Exercícios: Classes, Construtores Primários e Encapsulamento
Spec Sistemas Csharp • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 09.1 — Construtores Primários no C# 12 (Primary Constructors)
Contexto: Construtores Primários no C# 12 (Primary Constructors) no contexto de Classes, Construtores Primários e Encapsulamento.
Requisitos de Execução:
- Declarar classe
public class ServicoEmail(string servidor, int porta)utilizando construtor primário conciso.
Resultado Esperado
Classe declarada com construtor primário do C# 12 sem campos de inicialização boilerplate.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_1_SeuNome - Envie na tarefa:
Atividade Cap 09 - Classes, Construtores Primários e Encapsulamento
🔑 Gabarito de Código & Solução Comentada
// PrimaryConstructor.cs
public class ServicoEmail(string servidor, int porta) {
public void Enviar(string msg) {
Console.WriteLine($"Enviando via {servidor}:{porta} -> {msg}");
}
}
var srv = new ServicoEmail("smtp.empresa.com", 587);
srv.Enviar("Notificacao de login");
🔍 Nível 2: Prática
Problema 09.2 — Propriedades com Modificador init e Campos required
Contexto: Propriedades com Modificador init e Campos required no contexto de Classes, Construtores Primários e Encapsulamento.
Requisitos de Execução:
- Criar DTO com
public required string Nome { get; init; }garantindo preenchimento obrigatório na inicialização.
Resultado Esperado
Objeto instanciado com propriedades imutáveis pós-construção.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_2_SeuNome - Envie na tarefa:
Atividade Cap 09 - Classes, Construtores Primários e Encapsulamento
🔑 Gabarito de Código & Solução Comentada
// RequiredInit.cs
public class UsuarioDto {
public required string Email { get; init; }
public required string Perfil { get; init; }
}
var user = new UsuarioDto { Email = "admin@empresa.com", Perfil = "Administrador" };
Console.WriteLine($"Usuario: {user.Email} ({user.Perfil})");
⚡ Nível 3: Integração
Problema 09.3 — Membros Estáticos, Classes Estáticas e Construtores Estáticos
Contexto: Membros Estáticos, Classes Estáticas e Construtores Estáticos no contexto de Classes, Construtores Primários e Encapsulamento.
Requisitos de Execução:
- Criar classe utilitária
ConfiguradorGlobalcom construtor estático executado uma única vez na primeira referência.
Resultado Esperado
Construtor estático inicializando variáveis globais de ambiente.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_3_SeuNome - Envie na tarefa:
Atividade Cap 09 - Classes, Construtores Primários e Encapsulamento
🔑 Gabarito de Código & Solução Comentada
// StaticDemo.cs
public static class ConfiguradorGlobal {
public static string AppNome { get; }
static ConfiguradorGlobal() {
AppNome = "PortalCorporativo";
Console.WriteLine("Construtor estatico executado!");
}
}
Console.WriteLine($"Sistema: {ConfiguradorGlobal.AppNome}");
🏆 Nível 4: Desafio Corporativo
Problema 09.4 — Encapsulamento com Modificadores de Acesso Modernos (file-scoped classes)
Contexto: Encapsulamento com Modificadores de Acesso Modernos (file-scoped classes) no contexto de Classes, Construtores Primários e Encapsulamento.
Requisitos de Execução:
- Restringir visibilidade de classe auxiliar ao arquivo atual utilizando
file class Auxiliar.
Resultado Esperado
Classe auxiliar estritamente escopada ao arquivo fonte sem poluição de namespace.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_4_SeuNome - Envie na tarefa:
Atividade Cap 09 - Classes, Construtores Primários e Encapsulamento
🔑 Gabarito de Código & Solução Comentada
// FileScoped.cs
file class HelperInterno {
public static void Log() => Console.WriteLine("Acesso restrito ao arquivo atual.");
}
HelperInterno.Log();
Console.WriteLine("Status de execucao: 200 OK");
Debug.Assert(true);