minha duvida é se assim o código está ok (boa pratica)?
interface
interface ContasComTransferencia {
fun transferencia(valor: Double, destino: Conta): Boolean
}
calsse ContaSalario
class ContaSalario(titular: String, numero: Int):Conta(titular,numero){
}
classe conta
open class Conta(var titular: String, val numero: Int) {
var saldo = 0.0
protected set
open fun deposita(valor: Double) {
if (valor > 0) {
this.saldo += valor
}
}
fun saca(valor: Double) {
if (this.saldo >= valor) {
this.saldo -= valor
}
}
}
classe ContaCorrente
class ContaCorrente(titular: String, numero: Int) :Conta(titular,numero),Restricao{
override fun transferencia(valor: Double, destino: Conta): Boolean {
if (this.saldo >= valor) {
this.saldo -= valor
destino.deposita(valor)
return true
}
return false
}
}
classe ContaPoupança
class ContaPoupanca(titular: String, numero: Int) :Conta(titular,numero),Restricao {
override fun transferencia(valor: Double, destino: Conta): Boolean {
if (this.saldo >= valor) {
this.saldo -= valor
destino.deposita(valor)
return true
}
return false
}
}
Fun testaContasDiferentes
fun testaContasDiferentes() {
val contaCorrente = ContaCorrente(titular = "alex", numero = 1000)
val contaPoupanca = ContaPoupanca(titular = "fran", numero = 1001)
val contaSalario=ContaSalario("gui",1151)
contaSalario.deposita(1500.0)
contaCorrente.deposita(1000.0)
contaPoupanca.deposita(1000.0)
println("saldo corrente ${contaCorrente.saldo}")
println("saldo poupança ${contaPoupanca.saldo}")
println("saldo Salario ${contaSalario.saldo}")
contaCorrente.saca(100.0)
contaPoupanca.saca(100.0)
contaSalario.saca(500.0)
println("saldo após o saque ${contaCorrente.saldo}")
println("saldo após o saque ${contaPoupanca.saldo}")
println("saldo após o saque ${contaSalario.saldo}")
contaCorrente.transferencia(valor = 100.0, destino = contaPoupanca)
println("saldo da conta corrente após fazer uma tranferencia para a poupança ${contaCorrente.saldo}")
println("saldo da conta pupança após receber a tranferencia ${contaPoupanca.saldo}")
contaPoupanca.transferencia(valor = 100.0, destino = contaCorrente)
println("saldo da conta poupança após fazer uma tranferencia para a corrente ${contaPoupanca.saldo}")
println("saldo da conta corrente após receber a tranferencia ${contaCorrente.saldo}")
}
main
fun main() {
testaContasDiferentes()
}