Jean, não vejo problemas nisto, porém acredito que este tipo de prática acaba ferindo um dos princípios S.O.L.I.D., exatamente o Single Responsability, ou seja, esta interface está carregando a responsabilidade de manter os métodos e propriedades. O ideal seria separar em 2 interfaces, ex.: IAutenticavel e IDadosAutenticacao.
No geral, é mais comum darmos mais atenção a propriedades no objeto "model". Inclusive, no DDD, temos o IModel e IDAL separados.
Se vc ainda não conhecer bem estes conceitos, preocupa não que o tempo vai te obrigar a aprender sobre eles... :D
Olha um exemplo de como implementaria isto:
A interface:
public interface IAutenticavel
{
public bool Autenticar();
}
A implementação da interface:
public class Autenticavel : IAutenticavel
{
// As propriedades readonly permitem o SET apenas no método construtor da classe. Elas também podem ser utilizadas pelos demais métodos desta classe.
private readonly string Login;
private readonly string Senha;
// O método construtor é o responsável por receber e repassar os valores das propriedades para todos os métodos desta classe;
public Autenticavel(string login, string senha)
{
this.Login = login;
this.Senha = senha;
}
//O método que que a interface obrigou a implementação. Observe que ele não precisa receber parâmetros, pois o login e seja já é passado ao instanciar a classe. O interessante é que se houvessem 10 métodos que utilizassem estas propriedades, seria possível chamar todos informando os valores apenas uma vez na instanciação.
public bool Autenticar()
{
if (this.Login == "abc" && this.Senha == "123")
return true;
return false;
}
}
E usando uma aplicação console, o método main:
class Program
{
static void Main(string[] args)
{
// Lendo as informações do usuário;
Console.WriteLine("Digite o seu login:");
string login = Console.ReadLine();
Console.WriteLine("Digite a sua senha:");
string senha = Console.ReadLine();
// Criamos uma variável com o tipo da interface e instanciamos nela a implementação;
IAutenticavel auth = new Autenticavel("abc", "123");
// Utilizamos o método da interface;
if (auth.Autenticar())
Console.WriteLine("Usuário autenticado");
else
Console.WriteLine("Falha na autenticação do usuário");
}
}