public class GerenciadorDeImposto
{
public double Total { get; private set; }
// Em Adiciona o C# diz: Inconsistent accessibility: parameter type 'CaixaEletronico.ITributavel' is less accessible than method 'CaixaEletronico.GerenciadorDeImposto.Adiciona(CaixaEletronico.ITributavel)
public void Adiciona(ITributavel tributavel)
{
this.Total += tributavel.CalculaTributos();
}
}
interface ITributavel
{
double CalculaTributos();
}
class ContasPoupanca : Contas, ITributavel
{
public ContasPoupanca(Clientes cliente) : base (cliente)
{
this.titular = cliente;
}
public override string Sacar(double valor)
{
if (valor <= this.Saldo && valor > 0 && titular.EhMaiorDeIdade())
{
this.Saldo -= valor + 0.1;
Totalizador total = new Totalizador();
total.Adiciona(valor);
return "Saque efetuado com sucesso.";
}
else
{
return "Erro ao efetuar saque.";
}
}
public double CalculaTributos()
{
return this.Saldo * 0.02;
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//Estas variáveis se ficarem como public o C# diz: Inconsistent accessibility: field type 'CaixaEletronico.Contas[]' is less accessible than field 'CaixaEletronico.Form1.conta
//Também queria saber o motivo disso
private Contas[] conta;
private Clientes[] cliente;
private void Form1_Load(object sender, EventArgs e)
{
conta = new Contas[2];
cliente = new Clientes[2];
cliente[0] = new Clientes("Vagner Alberto", 27);
conta[0] = new ContasPoupanca(cliente[0]);
conta[0].numero = 1;
cliente[1] = new Clientes("Pedro Nunes", 32);
conta[1] = new ContasInvestimento(cliente[1]);
conta[1].numero = 2;
foreach (Clientes ddd in cliente)
{
comboClientes.Items.Add(ddd.nome);
}
}
private void botaoDeAcao_Click(object sender, EventArgs e)
{
GerenciadorDeImposto objeto = new GerenciadorDeImposto();
foreach (ITributavel ct in conta)
{
objeto.Adiciona(ct);
}
MessageBox.Show("Total: " + objeto.Total);
}
}