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 { get; set; }
public decimal Saldo { get; set; }
}
Adicionando métodos.
public class Cliente
{
public string Nome { get; set; }
public decimal Saldo { get; set; }
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(cliente2, 500);
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.
Comments