Projetos Práticos para Aprender C#
Um conjunto de projetos técnicos, organizados para consolidar fundamentos de C#, tipagem forte, padrões de design e boas práticas de desenvolvimento. Ideal para quem quer evoluir com aplicações reais e bem estruturadas.
Projeto 1 — Calculadora de Linha de Comando
Eu começo com uma calculadora de console para treinar parsing de entrada, validação de dados, tratamento de erros e composição de operações. O objetivo é entender como desenhar uma camada de domínio simples e uma entrada de usuário que seja resiliente a erros comuns.
- Aprendizados: parsing de argumentos, validação, composição de operações, tratamento de exceções, design modular.
- Arquitetura sugerida: uma classe Calculator com operações básicas (somar, subtrair, multiplicar, dividir); um driver de console que interpreta a entrada do usuário e invoca a Calculator; extensibilidade para novas operações.
Projeto 2 — Gerenciador de Tarefas com Persistência em JSON
Neste projeto eu apresento um gerenciador de tarefas simples com persistência em disco via JSON. O foco é trabalhar com tipos compostos, serialização, operações CRUD e I/O assíncrono, mantendo a lógica de domínio separada das preocupações de armazenamento.
- Modelos: Tarefa com Id, Descricao, Concluida e DataCriacao.
- Persistência: repositório que lê/grava uma lista de Tarefas em um arquivo JSON usando System.Text.Json.
- Boas práticas: validação de dados, tratamento de exceções e mensagens de erro claras.
Projeto 3 — API Simples com ASP.NET Core Minimal API
Nesta seção, eu demonstro como expor endpoints REST para gerenciar tarefas em memória, com uma abordagem minimalista para foco no fluxo de requisição/resposta, modelagem de dados e padrões de endpoints. O objetivo é entender o ciclo de vida de uma requisição e as operações básicas de uma API.
- Pontos-chave: Minimal API, store em memória, DTOs simples, validação básica, testes manuais com curl ou Postman.
// Minimal API (Program.cs)
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Hosting;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
var tarefas = new List<Tarefa>();
// modelo simples
public class Tarefa { public int Id { get; set; } public string Descricao { get; set; } = ""; public bool Concluida { get; set; } }
app.MapGet("/tarefas", () => tarefas);
app.MapPost("/tarefas", (Tarefa t) =>
{
t.Id = (tarefas.LastOrDefault()?.Id ?? 0) + 1;
tarefas.Add(t);
return Results.Created($"/tarefas/{t.Id}", t);
});
app.Run();
Projeto 4 — UI com Blazor Server (CRUD de Tarefas)
Finalmente, eu apresento a ideia de complementar o aprendizado com uma interface de usuário baseada em Blazor Server. A meta é entender componentização, estado local, binding e o ciclo de vida de componentes, conectando a camada de apresentação com a lógica de domínio.
- Componentização: crie componentes para Listar, Criar e Editar Tarefas.
- Estado e binding: use binding bidirecional, validação de formulários e feedback ao usuário.
- Integração: conecte-se a APIs ou mantenha um store local simples para estudo.
Gostou? Continue explorando.
Descubra mais conteúdos técnicos no Yurideveloper para aprofundar C#, .NET e boas práticas de desenvolvimento.
Sou Apaixonado pela programação e estou trilhando o caminho de ter cada diz mais conhecimento e trazer toda minha experiência vinda do Design para a programação resultando em layouts incríveis e idéias inovadoras! Conecte-se Comigo!