Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nicchio

Primeiro Sistema

Recommended Posts

Olá pessoal,

 

Estou aprendendo a programar em C# e inicialmente desenvolvi esse mesmo sistema em modo estruturado, sem orientação a objetos pois até então estava com mais dúvidas na POO.

 

Posteriormente passei todo o código do sistema para orientação a objetos e gostaria de uma opinião de vocês se está em uma programação boa, de fácil entendimento e em que eu poderia melhorar e se possível também, me informar a partir daqui, em que posso estar me aprofundando para melhorar na programação orientado a objetos.

 

 public partial class Form1 : Form
   {
       AchandoLiquido al = new AchandoLiquido();

       public Form1()
       {
           InitializeComponent();
       }

       private void btnEncontrar_Click(object sender, EventArgs e)
       {
           if (txtLiquido.Text == "" || txtBruto.Text == "")
               MessageBox.Show("Informe os valores nos campos 1 e 2.");            
           else
           {
               al.setValores(txtLiquido.Text, txtBruto.Text);
               txtEncontrado.Text = al.getValores().ToString();
               lblInssPercentual.Text = al.getPercentual().ToString();
           }       
       }
   }

 

 class AchandoLiquido
   {
       double valorLiquido, valorBruto, valorNovo, percentual, numPercentual;

       public void setValores(string liquido, string bruto)
       {
           valorLiquido = int.Parse(liquido);
           valorBruto = int.Parse(bruto);

           if (valorLiquido >= 0 && valorLiquido <= 1106.90)                
                   percentual = (0.08);
               else if (valorLiquido >= 1106.91 && valorLiquido <= 1844.83)                
                   percentual = (0.09);
               else if (valorLiquido >= 1844.84)                
                   percentual = (0.11);

           valorNovo = (valorLiquido / (1 - percentual)) - valorBruto;
           numPercentual = percentual * 100;
       }

       public double getValores()
       {
           return valorNovo;         
       }
       public double getPercentual()
       {
           return numPercentual;
       }
   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue algumas dicas:

 

- Na orientação a objetos, um objeto (classe) deve ter caracteristicas e ações, ou seja, propriedades e métodos.

 

Os métodos você ate criou: setValores, getValores, getPercentual ... porém não criou nenhuma propriedade, você criou variáveis double dentro da classe "AchandoLiquido"...

 

no seu método setValores, ao invés dos parametros serem string, eles já deveriam ser double, para evitar o int.Parse que você esta usando (usa-se Convert.ToDouble()), dai na chamada do método você usaria:

al.setValores(Convert.ToDouble(txtLiquido.Text), Convert.ToDouble(txtBruto.Text)); 

 

O nome dos objetos, devem ser intuitivos também, evite nomes "vagos" como "x", "al", etc... usei como exemplo objeto chamado "liquido"...

 

Segue a minha sugestão OO para seu código:

 

public partial class Form1 : Form
{
public Form1()
{
	InitializeComponent();
}

private void btnEncontrar_Click(object sender, EventArgs e)
{
	if (string.IsNullOrEmpty(txtLiquido.Text) || string.IsNullOrEmpty(txtBruto.Text))
		MessageBox.Show("Informe os valores nos campos 1 e 2.");
	else
	{
		// apenas cria o objeto quando realmente for precisar utilizar
		// instancia do novo objeto com os parametros
		// Dessa forma, o calculo já sera efetuado devido ao construtor
		AchandoLiquido liquido = new AchandoLiquido(Convert.ToDouble(txtLiquido.Text), Convert.ToDouble(txtBruto.Text));

		// Exite os valores calculados
		txtEncontrado.Text = liquido.GetValores().ToString();
		lblInssPercentual.Text = liquido.GetPercentual().ToString();
	}
}
}

 

public class AchandoLiquido
{
#region "Propriedades"
public double valorLiquido { get; set; }
public double valorBruto { get; set; }
public double valorNovo { get; set; }
public double percentual { get; set; }
public double numPercentual { get; set; }
#endregion 

#region "Construtor"
public AchandoLiquido()
{

}

public AchandoLiquido(double pLiquido, double pBruto)
{
	this.valorLiquido = pLiquido;
	this.valorBruto = pBruto;

	if (this.valorLiquido >= 0 && this.valorLiquido <= 1106.90)
		this.percentual = (0.08);
	else if (this.valorLiquido >= 1106.91 && this.valorLiquido <= 1844.83)
		this.percentual = (0.09);
	else if (this.valorLiquido >= 1844.84)
		this.percentual = (0.11);

	this.valorNovo = (this.valorLiquido / (1 - this.percentual)) - this.valorBruto;
	this.numPercentual = this.percentual * 100;
}
#endregion 

#region "Métodos"
public double GetValores()
{
	return this.valorNovo;
}
public double GetPercentual()
{
	return this.numPercentual;
}
#endregion
}

 

 

Veja se compreendeu, dessa forma, usei os recursos da OO criando um objeto como se deve, usando Construtor, propriedades e métodos...

 

veja mais dicas em: http://www.charlesmendes.com e http://msdn.microsoft.com/pt-br/library/cc580626.aspx :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.