Bom dia a todos
Nessa aula, para conectar os métodos de autenticação das classes Gerente e Diretor ele se utilizou de herança (com intuito de demonstrar mais de 1 nível de herança)
E num curso anterior que eu fiz eles falam que é melhor priorizar a dependência por uso de interface que de herança. E eu queria saber, dentro do Kotlin, é melhor conectar métodos por interface mesmo?
Código atualizado depois da aula do professor sobre Interface:
interface Autenticacao {
fun verificaSenha(senha: Int):Boolean
fun mudaSenha(senhaAntiga:Int,senhaNova:Int)
fun autentica(senha: Int){
if(!verificaSenha(senha)){
throw Exception("senha invalida")
}
println("seja bem vindo")
}
}
Classe de gerente:
import br.com.alura.infra.autenticacao.Autenticacao
import java.math.BigDecimal
abstract class FuncionarioAdmin(nome: String, cpf: String, salario: BigDecimal, private var senha: Int) :
Funcionario(nome, cpf, salario), Autenticacao {
abstract override fun bonificacao():BigDecimal
override fun verificaSenha(senha: Int): Boolean {
if(1000 > this.senha || this.senha > 999999||this.senha != senha){
return false
}
return true
}
override fun mudaSenha(senhaAntiga:Int, senhaNova:Int){
if (!verificaSenha(senhaAntiga))
throw Exception("senha invalida")
if (senhaAntiga == senhaNova){
throw Exception("não pode usar a mesma senha")
}
this.senha = senhaNova
println("senha alterada com sucesso")
}
}
Classe do método:
import br.com.alura.infra.autenticacao.Autenticacao
class SistemaInterno {
fun entra(funcionario: Autenticacao, senha: Int) {
if (!funcionario.verificaSenha(senha)) {
throw Exception("senha invalida")
}
println("seja bem vindo")
}
}