top of page

Do zero a iniciante - C# Classe e Objeto

Até o momento temos trabalhado com o que chamamos de tipos primitivos. int, decimal e bool, por exemplo. Neste post irei explicar sobre classe e objeto que são a porta de entrada para o paradigma da programação orientada a objetos (POO)


Uma classe é um tipo especial de dado que é usado para abstrair um elemento do mundo real para dentro do código. Uma classe deve conter propriedades e métodos. O primeiro representa as características do que queremos representar no sistema e o segundo é referente aos comportamentos do mesmo.


De modo simplista uma classe é um estrutura que lhe permite armazenar valores e definir comportamentos


Vamos supor que queremos representar um cliente de algum banco no código. Baseado no que foi dito acima, as propriedades do cliente poderiam ser : nome, email, celular, cpf, saldo etc. Já os métodos poderiam ser: transferir dinheiro, efetuar pagamento, verificar saldo etc


Hands On


No C# a definição de uma classe é feita através da palavra reservada class.


public class Cliente
{
}

Por convenção nomes de propriedades começam com letra maiúscula. Repare que as propriedades devem ter o tipo de dado adequado a informação que ela irá armazenar.


public class Cliente
{
  public string Nome { getset; }
  public decimal Saldo { getset; }
}

Adicionando métodos.


public class Cliente
{
   public string Nome { getset; }
   public decimal Saldo { getset; }

   public void TransferirDinheiro(Cliente destinatario, decimal valor)
   {
     // Faz alguma coisa
   }

   public void EfetuarPagamento(decimal valor)
   {
     // Faz alguma coisa
   }
}

Um objeto é uma variável de referência de uma classe. Esta variável também é chamada de instância de classe.


Um objeto é instanciado através da palavra reservada new. A sintaxe é basicamente

new NomeDaClasse()


 // Instancia o objeto cliente1
 Cliente cliente1 = new Cliente();
 // Seta as propriedades do objeto cliente1
 cliente1.Nome = "Fabio";
 cliente1.Saldo = 1000;

 // Instancia o objeto cliente2
 Cliente cliente2 = new Cliente();
 // Seta as propriedades do objeto cliente2
 cliente2.Nome = "Raquel";
 cliente2.Saldo = 0;

Acima temos duas variáveis de referência que são os objetos cliente1 e cliente2. Note que as propriedades que foram criadas na classe Cliente, Nome e Saldo, são acessadas através de um objeto.


Vamos agora codificar o comportamento da classe Cliente, ou seja, vamos definir o que os métodos TransferirDinheiro e EfetuarPagamento irão fazer.


Para este exemplo, um cliente pode transferir dinheiro para outro cliente. Para que isto seja feito, precisamos de duas informações: quem é o cliente que irá receber a transferência, ou seja, o destinatário e quanto será o valor da transferência. No código abaixo estas informações são obtidas através dos parâmetros destinatario e valor. Pense em parâmetros como dados que você precisa para que possa tomar alguma ação.


public void TransferirDinheiro(Cliente destinatario, decimal valor)
{
    // Soma o saldo do destinatário
    destinatario.Saldo += valor;
    // Subtrai o saldo de quem enviou
    Saldo -= valor;
}

Assim como as propriedades os métodos são acessados através de objetos. No exemplo abaixo estamos transferindo 500 reais do saldo do cliente1 (Fabio) para o cliente2 (Raquel).


// Transfere 500 reais para o cliente2 (Raquel)
 cliente1.TransferirDinheiro(cliente2500);

Abaixo temos a definição do método EfetuarPagamento, que espera o valor do pagamento como parâmetro e o usa para abater do saldo do cliente que efetuou o pagamento.


public void EfetuarPagamento(decimal valor)
{
   Saldo -= valor;
}

Veja abaixo um exemplo de uso deste método


// Efetua um pagamento no valor de 500 reais
 cliente2.EfetuarPagamento(500);

Os métodos que foram declarados até agora têm a palavra reservada void em suas assinaturas. O void é usado quando queremos indicar que um método não retorna valor algum. Vamos criar agora um método para verificar o saldo. Este método irá retornar um decimal que é o tipo de dado que representa o Saldo na classe Cliente.


public decimal VerificarSaldo()
{
    return Saldo;
}

Todo método que retorna algo deve conter a palavra reservada return no fim de sua declaração seguida pelo tipo de retorno especificado na declaração do método.


 

Observações


Adicione estas duas extensões no seu vscode para facilitar o uso do C# no mesmo

A segunda extensão irá permitir que você crie classes facilmente clicando com o botão direito no Explorer do vscode



Caso não tenha ficado claro em um console app a classe Program é o start point. Ou seja, quando mandar executar o programa ele irá começar por ela. Crie suas classes em arquivos separados e use-as dentro da classe Program como mostra a imagem abaixo.



Tenha em mente que Orientação à Objeto é muito mais complexo que isso e que neste post eu apresentei apenas uma visão básica e superficial sobre o assunto.


A estrada com certeza é longa, mas uma vez que decidiu que é o que você quer, vá até o fim!



 

Deixe seus elogios, críticas e dúvidas nos comentários!

136 visualizações0 comentário

Posts recentes

Ver tudo

Comments


bottom of page