Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Herdar classe x uso de interface

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")
    }
}
1 resposta
solução!

Ele ja respondeu isso em outra aula, é isso mesmo

E no final ele também utilizou interface