Logo

dev-resources.site

for different kinds of informations.

Criando sua primeira aplicação console em .net

Published at
12/30/2023
Categories
c
net
core
csharp
Author
freaklucas
Categories
4 categories in total
c
open
net
open
core
open
csharp
open
Author
10 person written this
freaklucas
open
Criando sua primeira aplicação console em .net

Motivação

Há 8 meses, decidi me aventurar no universo do C#. Embora já tivesse alguma noção de Orientação a Objetos, ela era bastante superficial. No início, enfrentei algumas dificuldades, principalmente para distinguir o que era recurso do C# e o que era recurso do .NET Core.

A ideia deste artigo é ensinar como criar uma aplicação console em .NET 8 com foco no C#. O objetivo principal é criar uma aplicação de console e permitir que você a aprimore da maneira que desejar.

A abordagem utilizada neste guia segue a metodologia comummente usada nas universidades:

Crie um projeto de console e pratique até se sentir confiante na linguagem C# e familiarizado com o .NET.

Passo 1: Configurando o Ambiente de Desenvolvimento

Certifique-se de ter o .NET 8 SDK instalado em sua máquina.
Abra o Visual Studio ou sua IDE de preferência (neste artigo, usaremos o Visual Studio 2022).

Passo 2: Roteiro para Criar uma Aplicação Console em .NET 8:

Agora, vamos criar um roteiro passo a passo para criar uma aplicação de console simples em .NET 8 com funcionalidade CRUD (Create, Read, Update, Delete). Isso será feito em um único arquivo (Program.cs), mas você também pode organizar os arquivos em diretórios conforme preferir.

Passo 3: Criando o Projeto

Crie um novo projeto do tipo "Console App (.NET 8)", eu nomeei o meu de "ProjetoConsole".

Abra seu Visual Studio e clique para criar um novo projeto, selecione "Projeto Console" e selecione versão 8 do .Net.

Passo 4: Definindo a Estrutura do Projeto

Crie uma classe chamada Item que representará os objetos que você deseja gerenciar na aplicação.
Em seguida, crie uma classe chamada Repository que conterá os métodos CRUD para interagir com os objetos Item.

Passo 5: Implementando as Operações CRUD

No arquivo Program.cs, crie um loop que exiba um menu com opções para Create, Read, Update e Delete.
Em seguida, implemente cada operação CRUD no arquivo Program.cs usando uma estrutura de switch-case.

Passo 6: Testando a Aplicação

Execute a aplicação e teste as operações CRUD para garantir que tudo esteja funcionando corretamente.
Certifique-se de que os itens criados sejam armazenados em memória ou em um banco de dados simples.

Passo 7: Aprimorando a Aplicação

Considere aprimorar a aplicação adicionando recursos como validação de entrada, tratamento de erros e armazenamento persistente.

Passo 8: executando e testando

Para compilar o projeto no Visual Studio 2022 e testá-lo, pressione a combinação de teclas "Ctrl + Shift + B" e, em seguida, pressione F5 ou clique em "Run".

Se preferir usar o VSCode, para criar um projeto, execute o seguinte comando no diretório desejado:

dotnet new console -n NomeDoProjeto

E para compilar e executar o projeto:

dotnet watch run

Código fonte

Classe Item => será a base para criação de Um item, com um nome e um Id de indentificação.
class Item
{
public int Id { get; set; }
public string Name { get; set; }
}

Classe Repository => Será a base(CRUD) das operações que serão realizadas para a classe Item.
`

class Repository
{
private List items = new List();
private int nextId = 1;

public void Create(string name)
{
    items.Add(new Item { Id = nextId++, Name = name });
}

public List<Item> ReadAll()
{
    return items;
}

public Item ReadById(int id)
{
    return items.Find(item => item.Id == id);
}

public void Update(int id, string name)
{
    Item existingItem = items.Find(item => item.Id == id);
    if (existingItem != null)
    {
        existingItem.Name = name;
    }
}

public void Delete(int id)
{
    Item itemToRemove = items.Find(item => item.Id == id);
    if (itemToRemove != null)
    {
        items.Remove(itemToRemove);
    }
}
Enter fullscreen mode Exit fullscreen mode

}

`
Classe Program => é a classe principal que irá chamar e instanciar a classe Repository para que as operações funcionem na prática, pra isso teremos que criar um switch case para cada caso de operação.

`

class Program
{
static void Main(string[] args)
{
Repository repository = new Repository();

    while (true)
    {
        Console.WriteLine("Escolha uma opção:");
        Console.WriteLine("1. Criar Item");
        Console.WriteLine("2. Ler Todos os Itens");
        Console.WriteLine("3. Ler Item por Id");
        Console.WriteLine("4. Atualizar Item");
        Console.WriteLine("5. Deletar Item");
        Console.WriteLine("6. Sair");

        int choice;

        if (!int.TryParse(Console.ReadLine(), out choice))
        {
            Console.WriteLine("Opção inválida.");
            continue;
        }

        switch (choice)
        {
            case 1:
                Console.WriteLine("Digite o nome do item:");
                string name = Console.ReadLine();
                repository.Create(name);
                Console.WriteLine("Item criado com sucesso.");
                break;

            case 2:
                List<Item> allItems = repository.ReadAll();
                foreach (var item in allItems)
                {
                    Console.WriteLine($"Id: {item.Id}, Nome: {item.Name}");
                }
                break;

            case 3:
                Console.WriteLine("Digite o Id do item:");
                if (int.TryParse(Console.ReadLine(), out int id))
                {
                    Item item = repository.ReadById(id);
                    if (item != null)
                    {
                        Console.WriteLine($"Id: {item.Id}, Nome: {item.Name}");
                    }
                    else
                    {
                        Console.WriteLine("Item não encontrado.");
                    }
                }
                else
                {
                    Console.WriteLine("Id inválido.");
                }
                break;

            case 4:
                Console.WriteLine("Digite o Id do item a ser atualizado:");
                if (int.TryParse(Console.ReadLine(), out int updateId))
                {
                    Console.WriteLine("Digite o novo nome:");
                    string newName = Console.ReadLine();
                    repository.Update(updateId, newName);
                    Console.WriteLine("Item atualizado com sucesso.");
                }
                else
                {
                    Console.WriteLine("Id inválido.");
                }
                break;

            case 5:
                Console.WriteLine("Digite o Id do item a ser excluído:");
                if (int.TryParse(Console.ReadLine(), out int deleteId))
                {
                    repository.Delete(deleteId);
                    Console.WriteLine("Item excluído com sucesso.");
                }
                else
                {
                    Console.WriteLine("Id inválido.");
                }
                break;

            case 6:
                Console.WriteLine("Saindo da aplicação.");
                return;

            default:
                Console.WriteLine("Opção inválida.");
                break;
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

}

`

A ideia desse crud é permitir com que iniciantes tenham um norte para estudos quando forem pensar em iniciar no mundo do c# e .net, a partir desse crud, é possível ir estudando e se aprofundando nos conceitos desse ecossistema.

Lições de casa:

  1. Estudar OOP - Básico de instância e Herança
  2. Estudar tipos de Listas e operações no .net
  3. Estudar Expressões Linq

Caso queira ver o projeto completo, o link está em:

https://github.com/freaklucas/Artigos/tree/master/ProjetoConsole

core Article's
30 articles in total
Favicon
Understanding Process Management in Operating Systems
Favicon
Introduction to Operating Systems
Favicon
What is SignalR? A Real-Time Communication Framework for .NET
Favicon
[KOSD] Change of FromQuery Model Binding from .NET 6 to .NET8
Favicon
JDK, JVM, and JRE: The Three Musketeers of Java Development 🏇
Favicon
Optimizing Your Development Machine: How Many Cores and Threads Do You Need for Programming?
Favicon
ASP .NET Core Best Practices
Favicon
Build Scalable Blazor CRUD Apps in 30 Minutes with Azure SQL
Favicon
The Benefits of Having More Threads than Cores: Unlocking the Power of Multi-threading in Modern Computing
Favicon
Deep Dive ASP.NET Core Middleware : Part 1
Favicon
The Purpose of Computer Processors (CPUs) and How Multiple Cores Improve Speed and Performance
Favicon
Primitive Data Types in Java
Favicon
How I Build a Scratch Proxy Server Using Node.js
Favicon
Javascript Working Mechanism
Favicon
A Journey Into the World of Programming with First Core Java Program
Favicon
[KOSD] Learning from Issues: Troubleshooting Containerisation for .NET Worker Service
Favicon
CORE WEB VITAL ISSUE
Favicon
Migrate to TLS 1.2 for Azure Blob Storage
Favicon
Keyboard input in Node.js
Favicon
Criando sua primeira aplicação console em .net
Favicon
Enabling CORS in a .NET Core Server-Side Application
Favicon
Digital Image Processing Notes
Favicon
Top Benefits of Using Core App Dashboard
Favicon
Understanding JavaScript Execution Context — The Key to Efficient Code
Favicon
5 Interesting Things About Strings in Java
Favicon
🔒 Introducing Serial Log and Metro Log: Simplifying Your Logging Experience In .NET MAUI! 📝🚇
Favicon
Understanding Core.js and Zone.js: Key to JavaScript Libraries
Favicon
Apitable.com Net6 Rest Api
Favicon
Custom resolve handler in Microsoft's ServiceProvider (enabling property injection)
Favicon
ASP.NET CORE REACT APP: System.InvalidOperationException: SPA default page middleware failed to return default page /index.html

Featured ones: