Last active
November 16, 2018 21:54
-
-
Save marconvcm/6408269b8713ff63b64ec3ddeb5f8aec to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package curso.android.trinopolo | |
fun Desconto.mostrar( | |
operacaoValor: Float, | |
saldo: Float) { | |
println("** Desconto ** $posicao: $operacaoValor | SALDO: $saldo ") | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package curso.android.trinopolo | |
fun main(args: Array<String>) { | |
val TOTAL = 159.00f | |
val regras = arrayOf( | |
DescontoFixo(posicao = 1, fixo = 10f), | |
DescontoPercentual(posicao = 2, percentual = 0.9f), | |
DescontoFracinal(posicao = 3, fracao = 2f) | |
) | |
val carrinho = CarrinhoImpl(TOTAL, regras) | |
println("Entrada: $TOTAL") | |
val saldo = carrinho.calcular() | |
println("Total: $saldo") | |
} | |
fun Float.nomePromocao(): String { | |
return when(this) { | |
2f -> "Metade do preco!" | |
else -> "$this" | |
} | |
} | |
fun Desconto.mostrarPosicao() { | |
println("Minha posicao: $posicao") | |
} | |
interface Desconto { | |
val posicao: Int | |
fun aplicarDesconto(v: Float): Float | |
} | |
interface Carrinho { | |
val regrasDesconto: Array<Desconto> | |
} | |
class DescontoFixo (override val posicao: Int, | |
val fixo: Float): Desconto { | |
override fun aplicarDesconto(v: Float): Float { | |
val r = v - fixo | |
this.mostrar(v, r) | |
return r | |
} | |
} | |
class DescontoPercentual (override val posicao: Int, | |
val percentual: Float): Desconto { | |
override fun aplicarDesconto(v: Float): Float { | |
val r = v * percentual | |
this.mostrar(v, r) | |
return r | |
} | |
} | |
class DescontoFracinal (override val posicao: Int, | |
val fracao: Float): Desconto { | |
override fun aplicarDesconto(v: Float): Float { | |
val r = v / fracao | |
this.mostrar(v, r) | |
return r | |
} | |
} | |
class CarrinhoImpl( | |
val total: Float, | |
override val regrasDesconto: Array<Desconto>) : Carrinho { | |
fun calcular(): Float { | |
var v = total | |
for(d in regrasDesconto) { | |
v = d.aplicarDesconto(v) | |
} | |
return v | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package curso.android.trinopolo | |
fun Float.dobro(): Float { | |
return this * 2f | |
} | |
fun Float.metade(): Float { | |
return this / 2f | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment