- IForma com Circulo e Retângulo:
internal interface IForma
{
public double CalcularArea();
public double CalcularPerimetro();
}
namespace DesafioInterfaces.Ex01;
internal class Circulo: IForma
{
public double Raio;
public Circulo(int raio)
{
Raio = raio;
}
public double CalcularArea()
{
double Area = Math.PI * (Raio*Raio);
return Area;
}
public double CalcularPerimetro()
{
double Perimetro = Raio * (Math.PI * 2);
return Perimetro;
}
}
namespace DesafioInterfaces.Ex01;
internal class Retangulo : IForma
{
public double BaseRetangulo;
public double Altura;
public Retangulo(double baseRetangulo, double altura)
{
BaseRetangulo = baseRetangulo;
Altura = altura;
}
public double CalcularArea()
{
double Area = BaseRetangulo * Altura;
return Area;
}
public double CalcularPerimetro()
{
double Perimetro = BaseRetangulo * 2 + Altura * 2;
return Perimetro;
}
}
- IPilotavel e IVoavel com Veiculo:
internal interface IVoavel
{
public string Voar();
}
internal interface IPilotavel
{
public string Pilotar();
}
internal class Veiculo : IPilotavel, IVoavel
{
public string Pilotar()
{
return $"Pilotando veículo...";
}
public string Voar()
{
return $"Veículo voando...";
}
}
- IPagavel com Produto e Servico:
internal interface IPagavel
{
public decimal CalcularPagamento();
}
class Produto : IPagavel
{
public decimal ValorProduto;
public int Quantidade;
public decimal ValorTotal = 0;
public Produto(decimal valorProduto, int quantidade)
{
ValorProduto = valorProduto;
Quantidade = quantidade;
}
public decimal CalcularPagamento()
{
ValorTotal = Quantidade * ValorProduto;
return ValorTotal;
}
}
class Servico : IPagavel
{
public decimal ValorServico;
public int HorasTrabalhadas;
public decimal ValorTotal = 0;
public Servico(decimal valorServico, int horasTrabalhadas)
{
ValorServico = valorServico;
HorasTrabalhadas = horasTrabalhadas;
}
public decimal CalcularPagamento()
{
ValorTotal = ValorServico * HorasTrabalhadas;
return ValorTotal;
}
}
- INotificavel com Email e SMS:
internal interface INotificavel
{
public string EnviarNotificacao();
}
internal class Email : INotificavel
{
public string EnviarNotificacao()
{
return $"Notificação enviada por e-mail.";
}
}
internal class Sms : INotificavel
{
public string EnviarNotificacao()
{
return $"Notificação enviada por SMS.";
}
}
- IArmazenavel com Banco de Dados e Arquivo:
internal interface IArmazenavel
{
public string Salvar();
public string Recuperar();
}
internal class Arquivo : IArmazenavel
{
public string NomeArquivo;
public Arquivo(string nomeArquivo)
{
NomeArquivo = nomeArquivo;
}
public string Recuperar()
{
return $"Recuperando arquivo {NomeArquivo}...";
}
public string Salvar()
{
return $"Salvando arquivo {NomeArquivo}...";
}
}
internal class BancoDados : IArmazenavel
{
public string NomeBanco;
public BancoDados(string nomeBanco)
{
NomeBanco = nomeBanco;
}
public string Recuperar()
{
return $"Executando SELECT no banco {NomeBanco}...";
}
public string Salvar()
{
return $"Executando INSERT no banco {NomeBanco}...";
}
}