<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Lucas Oliveira</title>
    <description>The latest articles on Forem by Lucas Oliveira (@freaklucas).</description>
    <link>https://forem.com/freaklucas</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F609718%2F6dd7c4c6-0454-47bb-9d09-e55659e6256e.jpeg</url>
      <title>Forem: Lucas Oliveira</title>
      <link>https://forem.com/freaklucas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/freaklucas"/>
    <language>en</language>
    <item>
      <title>Criando sua primeira aplicação console em .net</title>
      <dc:creator>Lucas Oliveira</dc:creator>
      <pubDate>Sat, 30 Dec 2023 20:46:01 +0000</pubDate>
      <link>https://forem.com/freaklucas/criando-sua-primeira-aplicacao-console-em-net-2803</link>
      <guid>https://forem.com/freaklucas/criando-sua-primeira-aplicacao-console-em-net-2803</guid>
      <description>&lt;h2&gt;
  
  
  Motivação
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;A abordagem utilizada neste guia segue a metodologia comummente usada nas universidades:&lt;/p&gt;

&lt;p&gt;Crie um projeto de console e pratique até se sentir confiante na linguagem C# e familiarizado com o .NET.&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 1: Configurando o Ambiente de Desenvolvimento
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Passo 2: Roteiro para Criar uma Aplicação Console em .NET 8:
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 3: Criando o Projeto
&lt;/h2&gt;

&lt;p&gt;Crie um novo projeto do tipo "Console App (.NET 8)", eu nomeei o meu de "ProjetoConsole".&lt;/p&gt;

&lt;p&gt;Abra seu Visual Studio e clique para criar um novo projeto, selecione "Projeto Console" e selecione versão 8 do .Net.&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 4: Definindo a Estrutura do Projeto
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Passo 5: Implementando as Operações CRUD
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Passo 6: Testando a Aplicação
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Passo 7: Aprimorando a Aplicação
&lt;/h2&gt;

&lt;p&gt;Considere aprimorar a aplicação adicionando recursos como validação de entrada, tratamento de erros e armazenamento persistente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Passo 8: executando e testando
&lt;/h2&gt;

&lt;p&gt;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".&lt;/p&gt;

&lt;p&gt;Se preferir usar o VSCode, para criar um projeto, execute o seguinte comando no diretório desejado:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dotnet new console -n NomeDoProjeto&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;E para compilar e executar o projeto:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dotnet watch run&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Código fonte
&lt;/h2&gt;

&lt;p&gt;Classe Item =&amp;gt; será a base para criação de Um item, com um nome e um Id de indentificação.&lt;br&gt;
&lt;code&gt;class Item&lt;br&gt;
    {&lt;br&gt;
        public int Id { get; set; }&lt;br&gt;
        public string Name { get; set; }&lt;br&gt;
    }&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Classe Repository =&amp;gt; Será a base(CRUD) das operações que serão realizadas para a classe Item.&lt;br&gt;
`&lt;/p&gt;

&lt;p&gt;class Repository&lt;br&gt;
{&lt;br&gt;
    private List items = new List();&lt;br&gt;
    private int nextId = 1;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public void Create(string name)
{
    items.Add(new Item { Id = nextId++, Name = name });
}

public List&amp;lt;Item&amp;gt; ReadAll()
{
    return items;
}

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

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

public void Delete(int id)
{
    Item itemToRemove = items.Find(item =&amp;gt; item.Id == id);
    if (itemToRemove != null)
    {
        items.Remove(itemToRemove);
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;`&lt;br&gt;
Classe Program =&amp;gt; é 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.&lt;/p&gt;

&lt;p&gt;` &lt;/p&gt;

&lt;p&gt;class Program&lt;br&gt;
{&lt;br&gt;
    static void Main(string[] args)&lt;br&gt;
    {&lt;br&gt;
        Repository repository = new Repository();&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    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&amp;lt;Item&amp;gt; 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;
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;`&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lições de casa:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Estudar OOP - Básico de instância e Herança&lt;/li&gt;
&lt;li&gt;Estudar tipos de Listas e operações no .net&lt;/li&gt;
&lt;li&gt;Estudar Expressões Linq&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;Caso queira ver o projeto completo, o link está em:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/freaklucas/Artigos/tree/master/ProjetoConsole"&gt;https://github.com/freaklucas/Artigos/tree/master/ProjetoConsole&lt;/a&gt;&lt;/p&gt;

</description>
      <category>c</category>
      <category>net</category>
      <category>core</category>
      <category>csharp</category>
    </item>
  </channel>
</rss>
