Objektorientierte Programmierung WS 2013/2014 - Datei first-sol.scala
trait Log {
def logMethod(s: String) {
println("entering method " + s)
}
def logConstructor(s: String) {
println("entering constructor " + s)
}
}
class Person(ln : String, fn : String, s : Person) extends Log {
def lastName = ln
def firstName = fn
def spouse = s
logConstructor("(string X string X Person)")
def this(ln : String, fn : String) = {
this(ln, fn, null)
logConstructor("(string X string)")
}
def this() = {
this("Mustermann", "Max", null)
logConstructor("()")
}
private def isMarried() = { logMethod("isMarried")
spouse != null
}
def computeTax(income: Double) : Double = {
logMethod("computeTax")
if (isMarried()) income * 0.20 else income * 0.30
}
override def toString() = {
logMethod("toString")
"Hi, my name is " + firstName + " " + lastName +
(if (spouse != null) " and this is my spouse, " + spouse.firstName + " " + spouse.lastName + "." else ".");
}
}
object Willy {
def main( a : Array[String]) {
val p1 = new Person("Mann", "Willy", new Person("Mann", "Dora"))
println(p1)
println(p1.computeTax(42000))
val p2 = new Person()
println(p2)
}
}
Generiert mit Camelot | Probleme mit Camelot? | Geändert am: 21.01.2014


