Skip to content

Instantly share code, notes, and snippets.

@javierfernandes
Created September 12, 2018 14:12
Show Gist options
  • Select an option

  • Save javierfernandes/7e6c5670f34cdd245ea6c0b4497a8be7 to your computer and use it in GitHub Desktop.

Select an option

Save javierfernandes/7e6c5670f34cdd245ea6c0b4497a8be7 to your computer and use it in GitHub Desktop.
Mixins - Aves - en clase 11/09/2018
package aves {
trait ConEnergia {
private var energia = 200.0
def reducirEnergia(cuanto: Double) = {
energia -= cuanto
}
}
trait NoSeCansa extends ConEnergia {
override def reducirEnergia(cuanto: Double) = {}
}
trait SeCansaElDoble extends ConEnergia {
override def reducirEnergia(cuanto: Double) = {
super.reducirEnergia(cuanto * 2)
}
}
trait Volador extends ConEnergia {
def volar(kms: Double) = {
reducirEnergia(kms * 1.2)
}
}
trait VoladorQueRegistra extends Volador {
var kmsVolados = 0.0
override def volar(kms: Double) = {
super.volar(kms)
kmsVolados += kms
}
}
trait Nadador extends ConEnergia {
def nadar(millasNauticas: Double) = {
reducirEnergia(millasNauticas * 0.3)
}
}
class Animal {
var padre: Animal = _
var madre: Animal = _
}
class Ave extends Animal {
var colorDePlumaje = "gris"
}
class Golondrina extends Ave with Volador {}
class Pato extends Ave with Volador with Nadador with NoSeCansa {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment