public interface ICargo
{
double Calcula(double valor);
}
public class Atendente : ICargo
{
public double Calcula(double valor)
{
return valor * 0.1;
}
}
public class Gerente : ICargo
{
public double Calcula(double valor)
{
return valor * 0.20 + 10;
}
}
public class Vendedor : ICargo
{
public double Calcula(double valor)
{
return valor * 0.15 + 5;
}
}
public enum Cargo
{
ATENDENTE,
VENDEDOR,
GERENTE
}
public class Funcionario
{
public string Nome { get; set; }
public double Salario { get; set; }
public Cargo Cargo { get; private set; }
public Funcionario(string nome,double salario,Cargo cargo )
{
this.Nome = nome;
this.Salario = salario;
this.Cargo = cargo;
}
}
public class Venda
{
public Funcionario funcionario { get; set; }
/// <summary>
/// Valor da venda
/// </summary>
public double valor { get; private set; }
public Venda(Funcionario funcionario,double valor)
{
this.funcionario = funcionario;
this.valor = valor;
}
public double calcularComissao(ICargo cargo)
{
return cargo.Calcula(valor);
}
}