Explorando a Estrutura e Funcionamento de um Projeto .NET
- #.NET
- #.NET C#
Configurações Iniciais
Antes de tudo para você ter um bom acompanhamento desse documento você deve ter o VSCode instalado na sua máquina, o .Net instalado e as extensões C# extensions, c#, instaladas no seu VScode.
Primeiros passos com .Net
Para iniciarmos um projeto no .Net precisamos abrir o terminal no VSCode e colocarmos:
“dotnet new console”
Estrutura de um Projeto .Net
Quando você cria um novo projeto .NET, especialmente um projeto de console, a estrutura padrão inclui algumas pastas e arquivos importantes:
1. Pasta obj
- Descrição: Contém arquivos temporários e arquivos de saída intermediários criados durante o processo de build (compilação).
- Conteúdo: Arquivos de debug, informações sobre a compilação, e dados que ajudam o processo de build a funcionar corretamente.
- Importância: Normalmente, você não precisa se preocupar com o conteúdo dessa pasta. Ela é gerenciada automaticamente pelo .NET SDK e pelo processo de build.
2. Pasta bin
- Descrição: Contém os arquivos binários resultantes da compilação do seu projeto.
- Conteúdo: Arquivos executáveis (.exe para projetos de console, por exemplo) e bibliotecas (.dll). Estes são os arquivos que você executa para rodar seu aplicativo.
- Importância: Essa pasta é onde você encontrará os resultados da compilação do seu projeto. É importante para executar e distribuir seu aplicativo.
3. Arquivo Program.cs
- Descrição: Este é o arquivo principal do seu projeto de console.
- Conteúdo: Contém a classe Program com o método Main, que é o ponto de entrada do seu aplicativo. É onde você escreve o código que será executado quando seu aplicativo for iniciado.
- Extensão: .cs, que indica que o arquivo está escrito em C#.
- Importância: Este arquivo é essencial para a execução do seu aplicativo. É onde você coloca a lógica principal do seu programa.
4. Arquivo .csproj
- Descrição: Este é o arquivo de projeto do C#.
- Conteúdo: Usa a linguagem XML e contém metadados sobre o projeto, como dependências, configurações de compilação e informações sobre o próprio projeto.
- Extensão: .csproj.
- Importância: Define como o projeto deve ser compilado e quais bibliotecas ele usa. Você pode editar esse arquivo para adicionar ou remover pacotes NuGet, mudar configurações de build, etc.
6. Arquivo project.json
- Descrição: Em versões mais antigas do .NET, esse arquivo era usado para definir configurações e dependências do projeto. No entanto, foi substituído pelo .csproj em versões mais recentes do .NET Core.
- Importância: Se você estiver trabalhando com projetos mais antigos, pode encontrar esse arquivo. Atualmente, a configuração do projeto é gerenciada pelo arquivo .csproj.
Atenção: você pode fazer a mudança de versão do .NET porém se atente.
- Importância: É crucial manter a versão do SDK consistente com a versão para a qual seu código foi escrito. Mudanças entre versões podem introduzir quebras de compatibilidade, então certifique-se de usar a versão correta do SDK
Caso aconteça de você perder as pastas Bin e Obj você poderá usar o comando
- Comando dotnet build: Se você não vê as pastas obj e bin após criar um projeto, execute dotnet build no terminal. Esse comando compila o projeto e cria essas pastas, gerando os arquivos necessários para executar e depurar o projeto.
O que é Abstração?
Abstração é um conceito fundamental na programação orientada a objetos que consiste em transformar um objeto do mundo real em um modelo simplificado e manejável na programação. Isso permite que complexidades do mundo real sejam representadas de forma eficiente e compreensível em código. Por exemplo, em um sistema de vendas, podemos criar uma abstração para representar uma entidade como um "Produto", que inclui atributos como preço e quantidade, e métodos como "AplicarDesconto()".
O que é uma Classe?
Uma classe é um modelo ou um template que define um tipo de objeto, incluindo suas propriedades (atributos) e comportamentos (métodos). Em termos simples, uma classe específica o que um objeto pode ter e o que pode fazer.
Exemplo de Classe
Considere a classe Pessoa. Esta classe pode ter:
- Atributos: São as características ou propriedades da classe. Para a classe Pessoa, atributos comuns podem incluir:
- nome: O nome da pessoa.
- idade: A idade da pessoa.
- Métodos: São as ações ou comportamentos que a classe pode realizar. Para a classe Pessoa, um método pode ser:
- apresentar(): Um método que imprime ou retorna uma mensagem com o nome e a idade da pessoa.
Iremos nesse momento criar essa classe, para simplificar clicamos com o botão direito do mouse sobre artigo e selecionamos New C# e Class.
Em seguida digitamos o nome da classe que desejamos e clicamos enter. E txaram! nossa classe foi criada. Iremos colocar nossos propriedade nome e idade.
Propriedade
Uma propriedade em C# é definida com uma combinação de métodos get e set. Aqui está uma explicação de cada parte:
- get: Método que retorna o valor da propriedade. Ele é chamado quando você acessa o valor da propriedade.
- set: Método que atribui um valor à propriedade. Ele é chamado quando você define um novo valor para a propriedade.
Exemplo:
public string Nome { get; set; }
Isso significa que a propriedade Nome é uma maneira pública e acessível de armazenar e acessar o nome da pessoa. O compilador gera automaticamente o código para os métodos get e set, tornando a implementação mais concisa.
Exemplo:
public int Idade { get; set; }
Similarmente, a propriedade Idade permite acessar e modificar a idade da pessoa
Agora iremos criar o nosso método para que nosso objeto pessoa possa apresentar-se quando solicitado, conforme mostra a imagem abaixo.
Explicação Detalhada
1. Modificadores de Acesso: public
- public: É um modificador de acesso que indica que o método Apresentar pode ser acessado de fora da classe Pessoa. Qualquer código que tenha uma instância da classe Pessoa pode chamar esse método.
2. Tipo de Retorno: void
- void: Indica que o método não retorna nenhum valor. Em vez de devolver um valor, ele realiza uma ação — neste caso, imprime uma mensagem no console.
3. Nome do Método: Apresentar
- Nome: Apresentar. O nome do método é como você o chamará quando quiser invocá-lo. O nome deve ser descritivo e refletir o que o método faz.
4. Corpo do Método
- Corpo: O corpo do método é o bloco de código que define o que o método faz. É delimitado por chaves {}.
5. Uso da Interpolação de Strings
Dentro do corpo do método, a linha:
Console.WriteLine($"Olá, meu nome é {Nome} e eu tenho {Idade} anos.");
- Console.WriteLine: É um método da classe Console que escreve uma linha de texto no console. É uma forma de saída para o usuário.
- Interpolação de Strings: A sintaxe $"..." é usada para interpolação de strings. Permite incluir variáveis diretamente dentro de uma string. No caso:
- {Nome}: Será substituído pelo valor atual da propriedade Nome.
- {Idade}: Será substituído pelo valor atual da propriedade Idade.
Funcionamento do Método
- Chamada do Método: Quando o método Apresentar é chamado, ele executa o código dentro de seu corpo.
- Acesso às Propriedades: O método acessa as propriedades Nome e Idade da instância da classe Pessoa. O compilador gera código para acessar os métodos get dessas propriedades.
- Impressão no Console: O método usa a função Console.WriteLine para imprimir uma mensagem no console. A mensagem inclui os valores das propriedades Nome e Idade, formatados conforme especificado.
Instanciando e Tornando a Classe Funcional
O Conceito de Instanciação
- Classe: Por si só, uma classe é apenas uma definição ou um molde para criar objetos. Ela não faz nada até que você crie uma instância dela e utilize seus métodos e propriedades.
- Instanciação: Criar uma instância de uma classe significa criar um objeto que usa o molde definido pela classe. O código para criar uma instância de uma classe e usá-la geralmente fica em um arquivo específico, como o Program.cs, que é o ponto de entrada do sistema em uma aplicação C#.
Estrutura do Program.cs
No arquivo Program.cs, você escreve o código que faz sua aplicação funcionar. Vamos explorar o processo:
Importação de Namespaces:
- using: É uma diretiva que permite que você use classes e outras definições de um namespace sem ter que especificar o namespace completo toda vez.
- InfIniciais: O namespace onde sua classe Pessoa está definida. Isso torna mais fácil referenciar a classe Pessoa sem ter que digitar o namespace completo.
- Pessoa: O tipo da variável, que corresponde à classe que você deseja instanciar.
- pessoa1: O nome da variável que armazenará a instância da classe Pessoa. Você pode escolher qualquer nome para essa variável.
- new Pessoa(): Cria uma nova instância da classe Pessoa. O operador new aloca memória para o novo objeto e chama o construtor da classe Pessoa.
Usando a Instância da Classe:
Depois de criar a instância, você pode acessar e modificar suas propriedades e chamar seus métodos
- pessoa1.Nome = "Roberto";: Usa o método set da propriedade Nome para definir o nome da pessoa.
- pessoa1.Idade = 25;: Usa o método set da propriedade Idade para definir a idade da pessoa.
- pessoa1.Apresentar();: Chama o método Apresentar da instância pessoa1, que imprime uma mensagem no console.
Comandos no Terminal
Para compilar e executar seu programa, você usará o terminal:
- dotnet run: Esse comando compila e executa o programa. Você deve estar no diretório do projeto onde o arquivo .csproj está localizado. Por exemplo, se o nome do seu projeto for Exercicio, você deve navegar até o diretório Exercicio antes de executar dotnet run.