0
respostas

Implementação da conta Salário

Eu fiz a implementação da conta salário, assim como ensinado, acabei criando uma classe abstrata de conta para manter o compartamento de transferência e as contas corrente e poupança herdaram dela.

Porém, ao trabalhar com a conta salário, não sei se foi uma má conduta da minha parte, mas optei por implementar uma interface com o comportamento transferência, porem não implementado. A conta salário chama a interface para implementar o metodo sobrescrevendoo, porém apresentando uma resposta negativa, informando que áquela conta não pode realizar transferências.

interface Transferivel {

    fun transferencia(valor: Double, destino: Conta) :Boolean
}
abstract class ContaTransferivel(
    titular: String,
    numero: Int
) : Conta(
    titular = titular,
    numero = numero
), Transferivel {

    override fun transferencia(valor: Double, destino: Conta): Boolean {
        if (this.saldo >= valor) {
            this.saldo -= valor
            destino.deposita(valor)
            return true
        } else {
            return false
        }
    }
}
class ContaCorrente(
    titular: String,
    numero: Int
) : ContaTransferivel(
    titular = titular,
    numero = numero
) {
    override fun saque(valor: Double) {
        val valorComTaxa = valor + 0.1
        if(this.saldo >= valorComTaxa) {
            this.saldo -= valorComTaxa
        }
    }
}
class ContaPoupanca(
    titular: String,
    numero: Int
) : ContaTransferivel(
    titular = titular,
    numero = numero
) {
    override fun saque(valor: Double) {
        if (this.saldo >= valor) {
            this.saldo -= valor
        }
    }
}
class ContaSalario(
    titular: String,
    numero: Int
) : Conta(
    titular = titular,
    numero = numero
), Transferivel {
    override fun saque(valor: Double) {
        if (this.saldo >= valor) {
            this.saldo -= valor
        }
    }

    override fun transferencia(valor: Double, destino: Conta): Boolean {
        println("Nào é possível transferir desta conta")
        return true
    }
}

De antemão, fico grato pela atenção e por eventuais considerações.